protected void Buscar()
    {
        Ocultar();
        registroContrato _contrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        DataTable _dataTable = new DataTable();
        switch (this.DropDownList_BUSCAR.SelectedValue)
        {
            case "NUMERO_DOCUMENTO":
                _dataTable = _contrato.ObtenerPorNumeroIdentificacion(this.TextBox_BUSCAR.Text);
                break;

            case "NOMBRE":
                _dataTable = _contrato.ObtenerPorNombre(this.TextBox_BUSCAR.Text);
                break;
        }

        if (_dataTable.Rows.Count > 0)
        {
            GridView_RESULTADOS_BUSQUEDA.DataSource = _dataTable;
            GridView_RESULTADOS_BUSQUEDA.DataBind();
            Mostrar(Acciones.BusquedaEncontro);
        }
        else
        {
            if (!String.IsNullOrEmpty(_contrato.MensajeError)) Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "Error: Consulte con el Administrador: " + _contrato.MensajeError, Proceso.Error);
            else Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "ADVERTENCIA: No se encontró información para " + this.DropDownList_BUSCAR.SelectedItem + " : " + this.TextBox_BUSCAR.Text + "<br />"
                + "Causa: 1. La información ingresada no es correcta." + "<br />"
                + "Causa: 2. No tiene contrato.", Proceso.Correcto);
            Mostrar(Acciones.BusquedaNoEncontro);
        }
        _dataTable.Dispose();
    }
    private void cargar_GridView_HOJA_DE_TRABAJO(Int32 VALOR)
    {
        registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaContratos = _registroContrato.ObtenerInformacionContratoPorVencer(VALOR);

        if (tablaContratos.Rows.Count <= 0)
        {
            configurarMensajes(true, System.Drawing.Color.Red);
            Label_MENSAJE.Text = "ADVERTENCIA: No se encontraron contratos en rango de vencimiento.";

            Panel_HOJA_DE_TRABAJO.Visible = false;
        }
        else
        {
            GridView_HOJA_DE_TRABAJO.DataSource = tablaContratos;
            GridView_HOJA_DE_TRABAJO.DataBind();

            Int32 contadorALTAS = 0;
            Int32 contadorMEDIAS = 0;
            Int32 contadorBAJAS = 0;
            DataRow filaInfoContrato;
            for (int i = 0; i < tablaContratos.Rows.Count; i++)
            {
                filaInfoContrato = tablaContratos.Rows[i];
                if (filaInfoContrato["ALERTA"].ToString() == "ALTA")
                {
                    GridView_HOJA_DE_TRABAJO.Rows[i].BackColor = colorNo;
                    contadorALTAS += 1;
                }
                else
                {
                    if (filaInfoContrato["ALERTA"].ToString() == "MEDIA")
                    {
                        GridView_HOJA_DE_TRABAJO.Rows[i].BackColor = colorMedio;
                        contadorMEDIAS += 1;
                    }
                    else
                    {
                        GridView_HOJA_DE_TRABAJO.Rows[i].BackColor = colorSi;
                        contadorBAJAS += 1;
                    }
                }
            }

            Label_ALERTA_BAJA.Text = contadorBAJAS.ToString();
            Label_ALERTA_MEDIA.Text = contadorMEDIAS.ToString();
            Label_ALERTA_ALTA.Text = contadorALTAS.ToString();
        }
    }
    public void activarEmpleado()
    {
        radicacionHojasDeVida _sol = new radicacionHojasDeVida(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        registroContrato contrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        String valores = HiddenField_persona.Value;
        String[] val = valores.Split(',');

        DataTable tablaCont = contrato.ObtenerConRegContratosPorRegistro(Convert.ToInt32(val[5].ToString()));
        DataRow filacont = tablaCont.Rows[0];

        if (filacont["CONTRATO_IMPRESO"].Equals("S") & filacont["CLAUSULA_IMPRESO"].Equals("S"))
        {
            _sol.ActualizarEstadoRegSolicitudesIngreso(Convert.ToInt32(val[1].ToString()), Convert.ToInt32(val[0].ToString()), "CONTRATADO");
            Label_MENSAJE_Entregas.Text = "Se activo el empleado en el sistema";
            configurarMensajes(true, System.Drawing.Color.Green, Label_MENSAJE_Entregas, Panel_MENSAJE_Entregas);
        }
        else
        {
            Label_MENSAJE_Entregas.Text = "ADVERTENCIA: No se han impreso las clausulas o el contrato. Verifique por favor";
            configurarMensajes(true, System.Drawing.Color.Red, Label_MENSAJE_Entregas, Panel_MENSAJE_Entregas);
        }
    }
    private void Cargar_nuevo_concepto(Decimal idClausula)
    {
        Label_ID_CLAUSULA_RELACIONADA.Text = idClausula.ToString();

        Decimal ID_REQUERIMIENTO = Convert.ToDecimal(HiddenField_ID_REQUERIMIENTO.Value);
        Decimal ID_SOLICITUD = Convert.ToDecimal(TextBox_ID_SOLICITUD.Text);
        Decimal ID_EMPLEADO = Convert.ToDecimal(Label_ID_EMPLEADO.Text);

        registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaInfoContrato = _registroContrato.obtenerInfoNomEmpleadoPorIdSolicitudIdRequerimiento(ID_SOLICITUD, ID_REQUERIMIENTO, ID_EMPLEADO);
        DataRow filaInfoContrato = tablaInfoContrato.Rows[0];
        cargar_DropDownList_PERIODO_PAGO(DropDownList_FORMA_PAGO_NOMINA);
        DropDownList_FORMA_PAGO_NOMINA.SelectedValue = filaInfoContrato["PERIODO_PAGO"].ToString().Trim();

        cargar_check_periodos(filaInfoContrato["PERIODO_PAGO"].ToString().Trim());

        cargar_DropDownList_CONCEPTOS_FIJOS();
        TextBox_CAN_PRE.Text = "";
        TextBox_VAL_PRE.Text = "";
    }
    protected void Button_Imprimir_Click(object sender, EventArgs e)
    {
        if (!(String.IsNullOrEmpty(HiddenField_ID_CONTRATO.Value)))
        {
            registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
            DataTable tablaInfoContrato = _registroContrato.ObtenerInfoParaImprimirContrato(Convert.ToDecimal(HiddenField_ID_CONTRATO.Value));
            NumToLetra numToLetra = new NumToLetra();
            string salario_en_letras = numToLetra.Convertir(Convert.ToDecimal(TextBox_Salario.Text).ToString(), true);

            if(tablaInfoContrato.Rows.Count <= 0)
            {
                if(_registroContrato.MensajeError != null)
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontró información para generar el contrato.", Proceso.Error);
                }
                else
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _registroContrato.MensajeError, Proceso.Error);
                }
            }
            else
            {
                String uspReporte = "";
                String nombreReporte = "";
                string nombre_empresa = null;
                string nit_empresa = null;
                string telefono_empresa = null;
                string direccion_empresa = null;

                if (Session["idEmpresa"].ToString() == "1")
                {
                    nombre_empresa = tabla.VAR_NOMBRE_SERTEMPO;
                    nit_empresa = tabla.VAR_NIT_SERTEMPO;
                    telefono_empresa = tabla.VAR_TELEFONO_SERTEMPO;
                    direccion_empresa = tabla.VAR_DOMICILIO_SERTEMPO;
                }
                else
                {
                    if (Session["idEmpresa"].ToString() == "3")
                    {
                        nombre_empresa = tabla.VAR_NOMBRE_EYS;
                        nit_empresa = tabla.VAR_NIT_EYS;
                        telefono_empresa = tabla.VAR_TELEFONO_EYS;
                        direccion_empresa = tabla.VAR_DOMICILIO_EYS;
                    }
                }

                DataRow filaInfoContrato = tablaInfoContrato.Rows[0];

                if (RadioButton_PRACTICANTE_UNI.Checked)
                {
                    uspReporte = "RPT_CONTRATACION_CONTRATO_APRENDIZ_UNIVERSITARIO";
                    nombreReporte = "RPT_CONTRATACION_CONTRATO_APRENDIZ_UNIVERSITARIO.rpt";
                    uspReporte += " '" + Session["idEmpresa"].ToString() + "'"
                        + ", '" + nombre_empresa + "'"
                        + ", '" + nit_empresa + "'"
                        + ", '" + telefono_empresa + "'"
                        + ", '" + direccion_empresa + "'"
                        + ", '" + TextBox_contrato_aprendiz_universitario_representante_legal.Text + "'"
                        + ", '" + TextBox_contrato_aprendiz_universitario_numero_identificacion.Text + "'"
                        + ", '" + TextBox_contrato_aprendiz_universitario_nombre_institucion.Text + "'"
                        + ", '" + TextBox_contrato_aprendiz_universitario_nit_institucion.Text + "'"
                        + ", '" + TextBox_contrato_aprendiz_universitario_especialidad_aprendiz.Text + "'"
                        + ", '" + filaInfoContrato["ID_EMPLEADO"].ToString() + "'"
                        ;
                }
                else if ((RadioButton_SENA_ELECTIVO.Checked) || (RadioButton_SENA_PRODUCTIVO.Checked))
                {
                    uspReporte = "RPT_CONTRATACION_CONTRATO_APRENDIZ_SENA";
                    nombreReporte = "RPT_CONTRATACION_CONTRATO_APRENDIZ_SENA.rpt";
                    uspReporte += " '" + Session["idEmpresa"].ToString() + "'"
                        + ", '" + nombre_empresa + "'"
                        + ", '" + nit_empresa + "'"
                        + ", '" + telefono_empresa + "'"
                        + ", '" + direccion_empresa + "'"
                        + ", '" + TextBox_contrato_aprendiz_sena_representante_legal.Text + "'"
                        + ", '" + TextBox_contrato_aprendiz_sena_cargo_r_l.Text + "'"
                        + ", '" + TextBox_contrato_aprendiz_sena_numero_documento_r_l.Text + "'"
                        + ", '" + TextBox_contrato_aprendiz_sena_especialidad_aprendiz.Text + "'"
                        + ", '" + TextBox_contrato_aprendiz_sena_curso_aprendiz.Text + "'"
                        + ", '" + TextBox_contrato_aprendiz_nombre_institucion.Text + "'"
                        + ", '" + TextBox_contrato_aprendiz_nit_institucion.Text + "'"
                        + ", '" + TextBox_contrato_aprendiz_centro_formacion.Text + "'"
                        + ", '" + TextBox_contrato_aprendiz_meses_duracion.Text + "'"
                        + ", '" + TextBox_contrato_aprendiz_fecha_inicio.Text + "'"
                        + ", '" + TextBox_contrato_aprendiz_fecha_final.Text + "'"
                        + ", '" + filaInfoContrato["ID_EMPLEADO"].ToString() + "'"
                        ;

                }
                else if (DropDownList_Clase_contrato.SelectedValue == ClaseContrato.I.ToString())
                {
                    uspReporte = "RPT_CONTRATACION_CONTRATO_INDEFINIDO";
                    nombreReporte = "RPT_CONTRATACION_CONTRATO_INDEFINIDO.rpt";
                    uspReporte += " '" + Session["idEmpresa"].ToString() + "'"
                        + ", '" + nombre_empresa + "'"
                        + ", '" + nit_empresa + "'"
                        + ", '" + TextBox_contrato_indefinido_identificacion_empleador.Text + "'"
                        + ", '" + TextBox_contrato_indefinido_nombre_empleador.Text + "'"
                        + ", '" + TextBox_contrato_indefinido_ciudad_domicilio_empleador.Text + "'"
                        + ", '" + telefono_empresa + "'"
                        + ", '" + direccion_empresa + "'"
                        + ", '" + salario_en_letras + "'"
                        + ", '" + filaInfoContrato["ID_EMPLEADO"].ToString() + "'"
                        ;
                }
                else
                {
                    if (DropDownList_Clase_contrato.SelectedValue == ClaseContrato.L_C_C_D_A.ToString())
                    {
                    }
                    else
                    {
                        if (DropDownList_Clase_contrato.SelectedValue == ClaseContrato.L_S_C_D_A.ToString())
                        {
                        }
                        else
                        {
                            if (DropDownList_Clase_contrato.SelectedValue == ClaseContrato.O_L.ToString())
                            {

                                if (DropDownList_FORMA_IMPRESION_CONTRATO.SelectedValue == "COMPLETO")
                                {
                                    ImprimirContratoO_L_COMPLETO(filaInfoContrato);
                                }
                                else
                                {
                                    if (DropDownList_FORMA_IMPRESION_CONTRATO.SelectedValue == "PREIMPRESO")
                                    {
                                        uspReporte = "usp_con_reg_contratos_ObtenerInfo_para_imprimir_contrato " + filaInfoContrato["REGISTRO_CONTRATO"].ToString();
                                        nombreReporte = "RPT_CONTRATACION_OBRA_LABOR_PREIMPRESO.rpt ";
                                    }
                                }
                            }
                            else
                            {
                                if (DropDownList_Clase_contrato.SelectedValue == ClaseContrato.T_F.ToString())
                                {
                                }
                                else
                                {
                                    if (DropDownList_Clase_contrato.SelectedValue == ClaseContrato.IN.ToString())
                                    {
                                        uspReporte = "RPT_CONTRATACION_CONTRATO_INTEGRAL";
                                        nombreReporte = "RPT_CONTRATACION_CONTRATO_INTEGRAL.rpt";
                                        uspReporte += " '" + Session["idEmpresa"].ToString() + "'"
                                            + ", '" + nombre_empresa + "'"
                                            + ", '" + direccion_empresa + "'"
                                            + ", '" + TextBox_contrato_integral_porcentaje_parafiscales.Text + "'"
                                            + ", '" + TextBox_contrato_integral_porcentaje_prestacional.Text + "'"
                                            + ", '" + filaInfoContrato["ID_EMPLEADO"].ToString() + "'";
                                    }
                                }
                            }
                        }
                    }
                }

                String cadenaDeConeccion = "";
                if (Session["idEmpresa"].ToString() == "1")
                {
                    cadenaDeConeccion = ConfigurationManager.ConnectionStrings["siser"].ConnectionString;
                }
                else
                {
                    cadenaDeConeccion = ConfigurationManager.ConnectionStrings["sister"].ConnectionString;
                }

                SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(cadenaDeConeccion);
                String user = builder.UserID;
                string pass = builder.Password;
                String server = builder.DataSource;
                String db = builder.InitialCatalog;

                SqlConnection conn = new SqlConnection(cadenaDeConeccion);

                try
                {
                    using (SqlCommand comando = new SqlCommand(uspReporte, conn))
                    {
                        using (SqlDataAdapter adaptador = new SqlDataAdapter(comando))
                        {
                            DataSet ds = new DataSet();
                            adaptador.Fill(ds);

                            reporte = new ReportDocument();

                            reporte.Load(Server.MapPath("~/Reportes/Contratacion/" + nombreReporte));
                            reporte.SetDataSource(ds.Tables[0]);
                            reporte.DataSourceConnections[0].SetConnection(server, db, user, pass);

                            using (var mStream = (MemoryStream)reporte.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat))
                            {
                                Response.AddHeader("Content-Disposition", "attachment;FileName=RPT_PDF.pdf");
                                Response.Clear();
                                Response.Buffer = true;
                                Response.ContentType = "application/pdf";
                                Response.BinaryWrite(mStream.ToArray());
                            }
                            Response.End();
                        }
                    }
                }
                catch (Exception ex)
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, ex.Message, Proceso.Error);
                }
                finally
                {
                    if (conn.State != ConnectionState.Closed)
                        conn.Close();
                    conn.Dispose();
                }

            }
        }
        else
        {
            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El contrato no ha sido guardado. Debe diligenciar todos los datos de contrato y luego Guardarlos, para poder imprimir el correspondiente documento.", Proceso.Advertencia);
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        Page.Header.Title = "ACTIVAR CONTRATO";

        tools _tools = new tools();
        SecureQueryString QueryStringSeguro;
        QueryStringSeguro = new SecureQueryString(_tools.byteParaQueryStringSeguro(), Request["data"]);

        Panel_MENSAJES.Visible = false;

        CargarQueryString();

        if (IsPostBack == false)
        {
            Configurar();

            String accion = QueryStringSeguro["accion"].ToString();
            if (accion == "inicial")
            {
                iniciar_interfaz_inicial();

                Panel_BOTONES_INTERNOS.Visible = true;
                cargar_menu_botones_modulos_internos(false);
            }
            else if (accion == "cargar")
            {
                Panel_Cargos_Por_Fuente.Visible = true;
                Panel_Informacion_Contrato.Visible = true;
                Panel_MENSAJES.Visible = false;

                registroContrato _contrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                DataTable tablaContratos = _contrato.ObtenerContratoPorNumeroIdentificacion(HiddenField_NUM_DOC_IDENTIDAD.Value);
                if (tablaContratos.Rows.Count == 0)
                {
                    Ocultar(Acciones.Contratar);
                    Decimal ID_REQUERIMIENTO = Convert.ToDecimal(HiddenField_ID_REQUISICION.Value);
                    Decimal ID_SOLICITUD = Convert.ToDecimal(HiddenField_ID_SOLICITUD.Value);

                    radicacionHojasDeVida _solIngreso = new radicacionHojasDeVida(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                    _solIngreso.ActualizarEstadoProcesoRegSolicitudesIngreso(Convert.ToInt32(ID_REQUERIMIENTO), Convert.ToInt32(ID_SOLICITUD), "ELABORAR CONTRATO", Session["USU_LOG"].ToString());

                    tablaContratos = _contrato.ObtenerDatosNuevoContrato(Convert.ToInt32(ID_REQUERIMIENTO), Convert.ToInt32(ID_SOLICITUD));
                    DataRow filaContrato = tablaContratos.Rows[0];
                    String nombre = filaContrato["NOMBRES"].ToString() + " " + filaContrato["APELLIDOS"].ToString();
                    String NUM_DOC_IDENTIDAD = filaContrato["TIP_DOC_IDENTIDAD"].ToString() + " " + filaContrato["NUM_DOC_IDENTIDAD"].ToString();

                    String Datos_persona = "Nombre: " + nombre + "<br> Numero Identificación: " + NUM_DOC_IDENTIDAD + "<br> Empresa: " + filaContrato["RAZ_SOCIAL"].ToString() + "<br>Cargo: " + filaContrato["NOM_OCUPACION"].ToString();
                    configurarInfoAdicionalModulo(true, Datos_persona);

                    cargar_menu_botones_modulos_internos(false);

                    requisicion _req = new requisicion(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                    DataTable tablaReq = _req.ObtenerComRequerimientoPorIdRequerimiento(ID_REQUERIMIENTO);
                    DataRow filaReq = tablaReq.Rows[0];

                    HiddenField_ID_PERFIL.Value = filaReq["REGISTRO_PERFIL"].ToString().Trim();

                    TextBox_Apellidos.Text = filaContrato["APELLIDOS"].ToString();
                    TextBox_Nombres.Text = filaContrato["NOMBRES"].ToString();
                    TextBox_doc_identidad.Text = filaContrato["TIP_DOC_IDENTIDAD"].ToString() + " " + filaContrato["NUM_DOC_IDENTIDAD"].ToString();

                    DateTime fechaInicio;

                    try
                    {
                        fechaInicio = Convert.ToDateTime(filaContrato["F_ING_C"]);
                    }
                    catch
                    {
                        fechaInicio = Convert.ToDateTime(DateTime.Now.ToShortDateString());
                    }

                    TextBox_fecha_inicio.Text = fechaInicio.ToShortDateString();
                    RangeValidator_TextBox_fecha_inicio.MinimumValue = DateTime.Now.ToShortDateString();
                    RangeValidator_TextBox_fecha_inicio.MaximumValue = DateTime.Now.AddDays(30).ToShortDateString();

                    TextBox_fecha_inicio.Enabled = true;

                    TextBox_Salario.Text = Convert.ToDecimal(filaContrato["SUELDO_C"]).ToString();
                    HiddenField_SUELDO.Value = filaContrato["SUELDO_C"].ToString();
                    TextBox_empresa.Text = filaContrato["RAZ_SOCIAL"].ToString();
                    TextBox_Cargo.Text = filaContrato["ID_Y_NOMBRE_CARGO"].ToString().Trim();

                    cargar_DropDownList_Clase_contrato();
                    cargar_DropDownList_tipo_Contrato();

                    cargar_DropDownList_FORMA_IMPRESION_CONTRATO(String.Empty);
                    DropDownList_FORMA_IMPRESION_CONTRATO.Enabled = false;
                    CheckBox_CON_CARNET_APARTE.Enabled = false;
                    CheckBox_CON_CARNET_APARTE.Checked = false;

                    cargar_DropDownList_Salario_integral();
                    cargar_DropDownList_SALARIO();

                    cargar_DropDownList_PERIODO_PAGO();

                    IniciarSeleccionDeUbicacion();

                    configurarBotonesDeAccion(false, true, true, false);
                }
                else
                {
                    DataRow filaContrato = tablaContratos.Rows[0];
                    HiddenField_ID_CONTRATO.Value += filaContrato["REGISTRO"].ToString();
                    HiddenField_persona.Value += "," + filaContrato["REGISTRO"].ToString() + ", " + filaContrato["ID_EMPLEADO"].ToString();
                    cargar_menu_botones_modulos_internos(false);

                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El empleado ya tiene contrato activo. Para realizar modificaciones por favor utlice el modulo de auditoría de contratos.", Proceso.Advertencia);

                    Panel_Informacion_Contrato.Visible = false;
                }
            }
        }
    }
        public DataRow ObtenerEmpleado(String numeroDocumento)
        {
            registroContrato _contrato = new registroContrato(Empresa, Usuario);
            DataTable _dataTable = _contrato.ObtenerPorNumeroIdentificacion(numeroDocumento);
            DataRow _dataRow = null;
            if (_dataTable.Rows.Count > 0)
            {
                foreach (DataRow _dataRow_Origen in _dataTable.Rows)
                {
                    if (_dataRow_Origen["ACTIVO"].ToString() == "Si")
                    {
                        _idCiudad = !String.IsNullOrEmpty(_dataRow_Origen["ID_CIUDAD"].ToString()) ? _dataRow_Origen["ID_CIUDAD"].ToString() : null;
                        _idCentroCosto = !String.IsNullOrEmpty(_dataRow_Origen["ID_CENTRO_C"].ToString()) ? Convert.ToDecimal(_dataRow_Origen["ID_CENTRO_C"].ToString()) : 0;
                        _idSubCentroCosto = !String.IsNullOrEmpty(_dataRow_Origen["ID_SUB_C"].ToString()) ? Convert.ToDecimal(_dataRow_Origen["ID_SUB_C"].ToString()) : 0;

                        return _dataRow_Origen;
                    }
                }
            }
            _dataTable.Dispose();

            return _dataRow;
        }
    /// <summary>
    /// HECHO POR CESAR PULIDO
    /// EL DIA 19 DE DICIEMBRE DE 2012
    /// PARA OBTENER EL ARCHIVO DEL CONTRATO
    /// </summary>
    /// <returns></returns>
    public byte[] GenerarPDFContrato(Decimal ID_CONTRATO)
    {
        //OBTENEMOS LA INFORMACION NECESARIA PARA IMPRIMIR EL CONTRATO
        registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaInfoContrato = _registroContrato.ObtenerInfoParaImprimirContrato(ID_CONTRATO);

        //cargamos info del contrato
        DataRow filaInfoContrato = tablaInfoContrato.Rows[0];

        // Determinando que clase de contrato es
        if (filaInfoContrato["CLASE_CONTRATO"].ToString().Trim().ToUpper() == ClaseContrato.I.ToString())
        {
            // No se tienen formatos para este tipo de contrato
        }
        else
        {
            if (filaInfoContrato["CLASE_CONTRATO"].ToString().Trim().ToUpper() == ClaseContrato.L_C_C_D_A.ToString())
            {
                // No se tienen formatos para este tipo de contrato
            }
            else
            {
                if (filaInfoContrato["CLASE_CONTRATO"].ToString().Trim().ToUpper() == ClaseContrato.L_S_C_D_A_C_V.ToString())
                {
                    // No se tienen formatos para este tipo de contrato
                }
                else
                {
                    if (filaInfoContrato["CLASE_CONTRATO"].ToString().Trim().ToUpper() == ClaseContrato.O_L.ToString())
                    {
                        return ImprimirContratoO_L_COMPLETO(filaInfoContrato);
                    }
                    else
                    {
                        if (filaInfoContrato["CLASE_CONTRATO"].ToString().Trim().ToUpper() == ClaseContrato.T_F.ToString())
                        {
                            // No se tienen formatos para este tipo de contrato
                        }
                    }
                }
            }
        }

        return GenerarPDFSinContrato();
    }
    private void Cargar_GridView_Examenes_Configurados_desde_tabla(DataTable tablaExamenes)
    {
        ObtenerVariablesUbicacionGlobales();

        GridView_Examenes_Configurados.DataSource = tablaExamenes;
        GridView_Examenes_Configurados.DataBind();

        registroContrato _contrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        DataTable tablainformacionCiudadCCYSUbCC = _contrato.ObtenerInformacionCompletaIdCiudadIdCentroCIdSubC(GLO_ID_CIUDAD, GLO_ID_CENTRO_C, GLO_ID_SUB_C);

        String ID_CIUDAD = null;

        if (tablainformacionCiudadCCYSUbCC.Rows.Count <= 0)
        {

            Decimal ID_REQUISICION = Convert.ToDecimal(HiddenField_ID_REQUERIMIENTO.Value);

            requisicion _req = new requisicion(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
            DataTable tablareq = _req.ObtenerComRequerimientoPorIdRequerimiento(ID_REQUISICION);
            DataRow filareq = tablareq.Rows[0];

            ID_CIUDAD = filareq["CIUDAD_REQ"].ToString().Trim();

            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La ciudad de los laboratorios clínicos se traerá desde la requisición.", Proceso.Correcto);
        }
        else
        {
            DataRow filaInfoCiudadCentroYSubC = tablainformacionCiudadCCYSUbCC.Rows[0];

            ID_CIUDAD = filaInfoCiudadCentroYSubC["ID_CIUDAD"].ToString();
        }

        for (int i = 0; i < GridView_Examenes_Configurados.Rows.Count; i++)
        {
            DataRow filaTabla = tablaExamenes.Rows[i];

            Decimal ID_PRODUCTO = Convert.ToDecimal(filaTabla["ID_PRODUCTO"]);

            DropDownList dropProveedores = GridView_Examenes_Configurados.Rows[i].FindControl("DropDownList_Proveedor") as DropDownList;
            Cargar_DropDownList_Proveedor(ID_PRODUCTO, ID_CIUDAD, dropProveedores);
        }
    }
    private void Buscar()
    {
        String datosCapturados = HiddenField_FILTRO_DATO.Value;
        String campo = HiddenField_FILTRO_DROP.Value;

        registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaResultadosBusqueda = new DataTable();

        if (DropDownList_BUSCAR.SelectedValue == "NUM_DOC_IDENTIDAD")
        {
            tablaResultadosBusqueda = _registroContrato.ObtenerPorNumeroIdentificacion(datosCapturados);
        }
        else
        {
            if (DropDownList_BUSCAR.SelectedValue == "NOMBRES")
            {
                tablaResultadosBusqueda = _registroContrato.ObtenerPorNombre(datosCapturados);
            }
            else
            {
                if (DropDownList_BUSCAR.SelectedValue == "APELLIDOS")
                {
                    tablaResultadosBusqueda = _registroContrato.ObtenerPorApellido(datosCapturados);
                }
            }
        }

        if (tablaResultadosBusqueda.Rows.Count <= 0)
        {
            if (_registroContrato.MensajeError != null)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _registroContrato.MensajeError, Proceso.Error);
            }
            else
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontraron registros para la busqueda solicitada.", Proceso.Advertencia);
            }

            Panel_RESULTADOS_GRID.Visible = false;
        }
        else
        {
            Panel_RESULTADOS_GRID.Visible = true;

            GridView_RESULTADOS_BUSQUEDA.DataSource = tablaResultadosBusqueda;
            GridView_RESULTADOS_BUSQUEDA.DataBind();
        }
    }
    private DataTable ObtenerTablaConDatosDePendientes(Decimal ID_EMPLEADO)
    {
        DataTable tablaParaGrilla = new DataTable();

        registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaInformacionContrato = _registroContrato.ObtenerInformacionCotratoParaEntregas(ID_EMPLEADO);

        if(tablaInformacionContrato.Rows.Count <= 0)
        {
            if(_registroContrato.MensajeError != null)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _registroContrato.MensajeError, Proceso.Error);
            }
            else
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontró información del contrato del empleado seleccionado.", Proceso.Error);
            }
        }
        else
        {
            tablaParaGrilla = ObtenerTablaFinalDePendientes(tablaInformacionContrato, ID_EMPLEADO);
        }

        return tablaParaGrilla;
    }
    private void CargarDatosEmpleado(Decimal ID_EMPLEADO)
    {
        Boolean correcto = true;

        registroContrato _registro = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        DataTable tablaInformacionEmpleado = _registro.ObtenerInformacionCotratoParaEntregas(ID_EMPLEADO);

        if (_registro.MensajeError != null)
        {
            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _registro.MensajeError, Proceso.Error);
            correcto = false;
        }
        else
        {
            if (tablaInformacionEmpleado.Rows.Count <= 0)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontró información del Empleado seleccionado.", Proceso.Error);
                correcto = false;
            }
            else
            {
                DataRow filaEmpleado = tablaInformacionEmpleado.Rows[0];

                Label_NombresEmpleado.Text = filaEmpleado["NOMBRE_EMPLEADO"].ToString();
                Label_NumDocIdentidadEmpleado.Text = filaEmpleado["DOCUMENTO_IDENTIDAD"].ToString();
                Label_Empresa.Text = filaEmpleado["RAZ_SOCIAL"].ToString();
                Label_Cargo.Text = filaEmpleado["NOM_OCUPACION"].ToString();

                Label_TallaCamisa.Text = filaEmpleado["TALLA_CAMISA"].ToString();
                Label_TallaPantalon.Text = filaEmpleado["TALLA_PANTALON"].ToString();
                Label_TallaZapatos.Text = filaEmpleado["TALLA_ZAPATOS"].ToString();
            }
        }

        if (correcto == false)
        {
            Label_NombresEmpleado.Text = "Desconocido";
            Label_NumDocIdentidadEmpleado.Text = "Desconocido";
            Label_Empresa.Text = "Desconocida";
            Label_Cargo.Text = "Desconocido";

            Label_TallaCamisa.Text = "Desconocida";
            Label_TallaPantalon.Text = "Desconocida";
            Label_TallaZapatos.Text = "Desconocida";
        }
    }
    protected void DropDownList_ID_TRABAJADOR_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (DropDownList_ID_TRABAJADOR.SelectedIndex <= 0)
        {
            Ocultar(Acciones.EmpleadoSeleccionado);

            HiddenField_ID_EMPLEADO.Value = "";
            HiddenField_ID_CONTRATO.Value = "";
            HiddenField_ID_PERFIL.Value = "";
            HiddenField_ID_SOLICITUD.Value = "";
            HiddenField_ID_REFERENCIA.Value = "";
            HiddenField_ID_REQUERIMIENTO.Value = "";
        }
        else
        {
            Ocultar(Acciones.EmpleadoSeleccionado);
            Mostrar(Acciones.EmpleadoSeleccionado);

            Decimal ID_SOLICITUD = Convert.ToDecimal(DropDownList_ID_TRABAJADOR.SelectedValue);
            HiddenField_ID_SOLICITUD.Value = ID_SOLICITUD.ToString();

            HiddenField_ID_EMPLEADO.Value = "";
            HiddenField_ID_CONTRATO.Value = "";
            HiddenField_ID_PERFIL.Value = "";
            HiddenField_ID_REFERENCIA.Value = "";
            HiddenField_ID_REQUERIMIENTO.Value = "";

            radicacionHojasDeVida _radicacionHojasDeVida = new radicacionHojasDeVida(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
            DataTable tablaSolicitud = _radicacionHojasDeVida.ObtenerRegSolicitudesingresoPorIdSolicitud(Convert.ToInt32(ID_SOLICITUD));
            DataRow filaSolicitud = tablaSolicitud.Rows[0];

            registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
            DataTable tablaContratos = _registroContrato.ObtenerContratosPorIdSolicitud(ID_SOLICITUD);

            Label_NOMBRE_TRABAJADOR.Text = filaSolicitud["NOMBRES"].ToString().Trim() + " " + filaSolicitud["APELLIDOS"].ToString().Trim();
            Label_TIP_DOC_IDENTIDAD.Text = filaSolicitud["TIP_DOC_IDENTIDAD"].ToString().Trim() + " ";
            Label_NUM_DOC_IDENTIDAD.Text = filaSolicitud["NUM_DOC_IDENTIDAD"].ToString().Trim();
            Label_RAZ_SOCIAL.Text = DropDownList_ID_EMPRESA.SelectedItem.Text;

            Cargar(tablaContratos);
        }
    }
    private void ProcederConActualizacion(Boolean cargarInfoContrato)
    {
        Decimal ID_CONTRATO = Convert.ToDecimal(HiddenField_ID_CONTRATO.Value);
        Decimal ID_SOLICITUD = Convert.ToDecimal(TextBox_ID_SOLICITUD.Text);
        Decimal ID_EMPLEADO = Convert.ToDecimal(Label_ID_EMPLEADO.Text);
        Decimal ID_PERFIL = Convert.ToDecimal(DropDownList_CARGO_TRABAJADOR.SelectedValue);
        Decimal RIESGO = Convert.ToDecimal(DropDownList_RIESGO_EMPLEADO.SelectedValue);
        Decimal ID_SUB_C = 0;
        Decimal ID_CENTRO_C = 0;
        String ID_CIUDAD = null;

        if (DropDownList_SUB_CENTRO_TRABAJADOR.SelectedIndex > 0)
        {
            ID_SUB_C = Convert.ToDecimal(DropDownList_SUB_CENTRO_TRABAJADOR.SelectedValue);
        }
        else
        {
            if (DropDownList_CC_TRABAJADOR.SelectedIndex > 0)
            {
                ID_CENTRO_C = Convert.ToDecimal(DropDownList_CC_TRABAJADOR.SelectedValue);
            }
            else
            {
                ID_CIUDAD = DropDownList_CIUDAD_TRABAJADOR.SelectedValue;
            }
        }

        String PAGO_DIAS_PRODUCTIVIDAD = "N";
        Decimal VALOR_NOMINA = 0;
        Decimal VALOR_CONTRATO = 0;
        Decimal SALARIO = 0;

        Boolean continuar = true;
        tools _tools = new tools();

        if (String.IsNullOrEmpty(TextBox_SALARIO.Text) == true)
        {
            if (String.IsNullOrEmpty(TextBox_SALARIO_NOMINA.Text) == true)
            {
                Informar(Panel_MENSAJE_CONTRATO, Label_MENSAJE_CONTRATO, "El Salario es obligatorio digitarlo.", Proceso.Advertencia);
                continuar = false;
            }
            else
            {
                if (_tools.IsNumeric(TextBox_SALARIO_NOMINA.Text) == false)
                {
                    Informar(Panel_MENSAJE_CONTRATO, Label_MENSAJE_CONTRATO, "El Salario digitado no tiene un formato numerico valido.", Proceso.Advertencia);
                    continuar = false;
                }
                else
                {
                    SALARIO = Convert.ToDecimal(TextBox_SALARIO_NOMINA.Text);
                }
            }
        }
        else
        {
            if (_tools.IsNumeric(TextBox_SALARIO.Text) == false)
            {
                Informar(Panel_MENSAJE_CONTRATO, Label_MENSAJE_CONTRATO, "El Salario digitado no tiene un formato numerico valido.", Proceso.Advertencia);
                continuar = false;
            }
            else
            {
                SALARIO = Convert.ToDecimal(TextBox_SALARIO.Text);
            }
        }

        if (continuar == true)
        {
            String SAL_INT = DropDownList_SALARIO_INTEGRAL.SelectedValue;

            String FORMA_PAGO = null;
            Decimal ID_ENTIDAD = 0;
            String TIPO_CUENTA = null;
            String NUM_CUENTA = null;
            String CHEQUE_REG = null;
            String CONTROL_CONTRATO = "CORRECTO";

            if (CheckBox_NoLaboro.Checked == true)
            {
                CONTROL_CONTRATO = "NO LABORO";
            }

            if (CheckBox_DobleRegistro.Checked == true)
            {
                CONTROL_CONTRATO = "NO INGRESO";
            }

            if ((CheckBox_NoLaboro.Checked == true) || (CheckBox_DobleRegistro.Checked == true))
            {
                FORMA_PAGO = string.Empty;
                ID_ENTIDAD = 0;
                TIPO_CUENTA = string.Empty;
                CHEQUE_REG = String.Empty;
            }
            else
            {
                FORMA_PAGO = DropDownList_forma_pago.SelectedValue;

                if ((FORMA_PAGO == "CONSIGNACIÓN BANCARIA") || (FORMA_PAGO == "DISPERSION") || (FORMA_PAGO == "ACH"))
                {
                    if (DropDownList_entidad_bancaria.SelectedIndex > 0)
                    {
                        ID_ENTIDAD = Convert.ToDecimal(DropDownList_entidad_bancaria.SelectedValue);
                    }

                    if (DropDownList_TIPO_CUENTA.SelectedIndex > 0)
                    {
                        TIPO_CUENTA = DropDownList_TIPO_CUENTA.SelectedValue;
                    }

                    if (TextBox_NUMERO_CUENTA.Text.Trim().Length > 0)
                    {
                        NUM_CUENTA = TextBox_NUMERO_CUENTA.Text.Trim();
                    }

                }
                else
                {
                    if (FORMA_PAGO == "CHEQUE")
                    {
                        if (DropDownList_ChequeReg.SelectedIndex > 0)
                        {
                            CHEQUE_REG = DropDownList_ChequeReg.SelectedValue;
                        }
                    }
                }
            }

            String TIPO_CONTRATO = DropDownList_TIPO_CONTRATO.SelectedValue;

            String CLASE_CONTRATO = DropDownList_CLASE_CONTRATO.SelectedValue;

            Boolean ACTUALIZAR_ESTADO_PROCESO = true;
            if (HiddenField_PRESENTACION.Value == Presentacion.ContratosActivos.ToString())
            {
                ACTUALIZAR_ESTADO_PROCESO = false;
            }

            String PERIODO_PAGO = DropDownList_PERIODO_PAGO.SelectedValue;

            registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

            Boolean verificador = _registroContrato.ActualizarContratoDesdeAuditoria(ID_CONTRATO, ID_EMPLEADO, RIESGO, TIPO_CONTRATO, ID_PERFIL, ID_SUB_C, ID_CENTRO_C, ID_CIUDAD, PAGO_DIAS_PRODUCTIVIDAD, VALOR_NOMINA, VALOR_CONTRATO, SALARIO, SAL_INT, FORMA_PAGO, ID_ENTIDAD, NUM_CUENTA, ID_SOLICITUD, ACTUALIZAR_ESTADO_PROCESO, TIPO_CUENTA, Convert.ToDateTime(TextBox_FECHA_INICIO.Text), Convert.ToDateTime(TextBox_FECHA_FIN.Text), PERIODO_PAGO, CLASE_CONTRATO, CONTROL_CONTRATO, CHEQUE_REG);

            if (verificador == false)
            {
                Informar(Panel_MENSAJES, Label_MENSAJE, _registroContrato.MensajeError, Proceso.Error);
                Informar(Panel_MENSAJE_CONTRATO, Label_MENSAJE_CONTRATO, _registroContrato.MensajeError, Proceso.Error);
            }
            else
            {
                if (cargarInfoContrato == true)
                {
                    Informar(Panel_MENSAJES, Label_MENSAJE, "La información basica del contrato fue actualizada correctamente.", Proceso.Correcto);
                    Informar(Panel_MENSAJE_CONTRATO, Label_MENSAJE_CONTRATO, "La información basica del contrato fue actualizada correctamente.", Proceso.Correcto);

                    cargar_seccion_contratos(ID_EMPLEADO);

                    presentar_interfaz_segun_resultado();
                }
            }
        }
    }
    private void cargar_seccion_contratos(Decimal ID_EMPLEADO)
    {
        Ocultar(Acciones.contrato);

        auditoriaContratos _auditoriaContratos = new auditoriaContratos(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaUltimaAuditoria = _auditoriaContratos.ObtenerUltimaAuditoriaPorTablaYEmpleado(tabla.CON_REG_CONTRATOS, ID_EMPLEADO);
        if (tablaUltimaAuditoria.Rows.Count > 0)
        {
            DataRow filaInfoAuditoria = tablaUltimaAuditoria.Rows[0];
            Panel_CABEZA_CONTRATO.BackColor = colorAuditado;
            Label_CONTRATO_AUDITADA.Text = "(AUDITADO) - " + Convert.ToDateTime(filaInfoAuditoria["FECHA_AUDITORIA"]).ToShortDateString();
        }
        else
        {
            Panel_CABEZA_CONTRATO.BackColor = colorSinAuditar;
            Label_CONTRATO_AUDITADA.Text = "(SIN AUDITAR)";

            if (String.IsNullOrEmpty(HiddenField_SECCIONES_SIN_AUDITORIA.Value) == true)
            {
                HiddenField_SECCIONES_SIN_AUDITORIA.Value = SeccionesAuditoria.Contrato.ToString();
            }
            else
            {
                HiddenField_SECCIONES_SIN_AUDITORIA.Value = ";" + SeccionesAuditoria.Contrato.ToString();
            }
        }
        registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        DataTable tablaInfoContrato = _registroContrato.ObtenerDatosContratoParaAuditar(ID_EMPLEADO);

        if (!tablaInfoContrato.Rows.Count.Equals(0))
        {
            DataRow filaInfoContrato = tablaInfoContrato.Rows[0];

            cargar_ubicacion_trabajador(filaInfoContrato);

            cargar_datos_salariales(filaInfoContrato);

            cargar_datos_basicos_de_contrato(filaInfoContrato);

        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        Page.Header.Title = "SERVICIOS COMPLEMENTARIOS";
        tools _tools = new tools();
        SecureQueryString QueryStringSeguro;
        QueryStringSeguro = new SecureQueryString(_tools.byteParaQueryStringSeguro(), Request["data"]);

        if (IsPostBack == false)
        {

            String accion = QueryStringSeguro["accion"].ToString();
            if (accion == "inicial")
            {
                iniciar_interfaz_inicial();
                iniciar_seccion_de_busqueda();
                Panel_BOTONES_INTERNOS.Visible = true;
                cargar_menu_botones_modulos_internos(false);
            }
            else if (accion == "cargar")
            {
                String persona = QueryStringSeguro["persona"].ToString();
                String[] datos = persona.Split(',');
                String datosPersona;
                String ID_EMPRESA = datos[3];
                registroContrato _cont = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                DataTable tablaCont =  _cont.ObtenerPorNumIdentificacionActivo(datos[4].ToString());

                Panel_BOTONES_INTERNOS.Visible = true;

                if (tablaCont.Rows.Count <= 0)
                {
                    Label_MENSAJE.Text = "ADVERTENCIA: A la persona no puede entregarsele dotación ni epp por que no ha sido contratado";
                    configurarMensajes(true, System.Drawing.Color.Red, Label_MENSAJE, Panel_MENSAJES);

                    Panel_Entregas_configurados.Visible = false;
                    Panel_FORM_BOTONES.Visible = false;
                    Panel_RESULTADOS_GRID.Visible = false;
                    Panel_BOTONES_MENU.Visible = false;

                    Panel_MENSAJES.Visible = true;
                    Panel_MENSAJE_Entregas.Visible = false;

                    String ID_SOLICITUD = datos[0];
                    String ID_REQUERIMIENTO = datos[1];
                    String ID_OCUPACION = datos[2];
                    String NUM_DOC_IDENTIDAD = datos[4];

                    radicacionHojasDeVida _solIngreso = new radicacionHojasDeVida(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                    DataTable tablasol = _solIngreso.ObtenerRegSolicitudesingresoPorNumDocIdentidad(NUM_DOC_IDENTIDAD);

                    DataRow filaSolIngreso = tablasol.Rows[0];
                    String nombre = filaSolIngreso["NOMBRES"] + " " + filaSolIngreso["APELLIDOS"];

                    cliente _empresa = new cliente(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                    DataTable tablaEmpresa = _empresa.ObtenerEmpresaConIdEmpresa(Convert.ToDecimal(ID_EMPRESA));
                    DataRow filaEmpresa = tablaEmpresa.Rows[0];

                    cargo _cargo = new cargo(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                    DataTable tablaOcupacion = _cargo.ObtenerOcupacionPorIdOcupacion(Convert.ToDecimal(ID_OCUPACION));
                    DataRow filaOcupacion = tablaOcupacion.Rows[0];

                    datosPersona = "Nombre: " + nombre + "<br> Numero Identificación: " + NUM_DOC_IDENTIDAD + "<br> Empresa: " + filaEmpresa["RAZ_SOCIAL"] + "<br>Cargo: " + filaOcupacion["NOM_OCUPACION"];

                    HiddenField_persona.Value = persona.Trim();
                    configurarInfoAdicionalModulo(true, datosPersona);
                    cargar_menu_botones_modulos_internos(false);

                    Panel_BOTONES_INTERNOS.Visible = true;
                }
               else
                {
                    DataRow filaCon = tablaCont.Rows[0];

                    Panel_Entregas_configurados.Visible = false;
                    Panel_FORM_BOTONES.Visible = false;
                    Panel_RESULTADOS_GRID.Visible = false;
                    Panel_BOTONES_MENU.Visible = false;

                    Panel_MENSAJES.Visible = false;
                    Panel_MENSAJE_Entregas.Visible = false;

                    String ID_SOLICITUD = datos[0];
                    String ID_REQUERIMIENTO = datos[1];
                    String ID_OCUPACION = datos[2];
                    String NUM_DOC_IDENTIDAD = datos[4];
                    String ID_CONTRATO;
                    String ID_EMPLEADO;

                    if (datos.Length == 7)
                    {
                        ID_CONTRATO = datos[5];
                        ID_EMPLEADO = datos[6];
                    }
                    else
                    {
                        ID_CONTRATO = filaCon["ID_CONTRATO"].ToString() ;
                        ID_EMPLEADO = filaCon["ID_EMPLEADO"].ToString();
                    }

                    radicacionHojasDeVida _solIngreso = new radicacionHojasDeVida(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                    DataTable tablasol = _solIngreso.ObtenerRegSolicitudesingresoPorNumDocIdentidad(NUM_DOC_IDENTIDAD);

                    DataRow filaSolIngreso = tablasol.Rows[0];
                    String nombre = filaSolIngreso["NOMBRES"] + " " + filaSolIngreso["APELLIDOS"];

                    cliente _empresa = new cliente(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                    DataTable tablaEmpresa = _empresa.ObtenerEmpresaConIdEmpresa(Convert.ToDecimal(ID_EMPRESA));
                    DataRow filaEmpresa = tablaEmpresa.Rows[0];

                    cargo _cargo = new cargo(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                    DataTable tablaOcupacion = _cargo.ObtenerOcupacionPorIdOcupacion(Convert.ToDecimal(ID_OCUPACION));
                    DataRow filaOcupacion = tablaOcupacion.Rows[0];

                    persona = "Nombre: " + nombre + "<br> Numero Identificación: " + NUM_DOC_IDENTIDAD + "<br> Empresa: " + filaEmpresa["RAZ_SOCIAL"] + "<br>Cargo: " + filaOcupacion["NOM_OCUPACION"];
                    configurarInfoAdicionalModulo(true, persona);

                    HiddenField_persona.Value = ID_SOLICITUD + "," + ID_REQUERIMIENTO + "," + ID_OCUPACION + "," + ID_EMPRESA + "," + NUM_DOC_IDENTIDAD.Trim() + "," + ID_CONTRATO + "," + ID_EMPLEADO;

                    cargar_menu_botones_modulos_internos(false);

                    iniciar_interfaz_para_registro_existente();
                }
            }
        }
    }
    private void Buscar()
    {
        String datosCapturados = HiddenField_FILTRO_DATO.Value;
        String campo = HiddenField_FILTRO_DROP.Value;

        registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        DataTable tablaResultadosBusqueda = new DataTable();

        if (campo == "NUM_DOC_IDENTIFICACION")
        {
            tablaResultadosBusqueda = _registroContrato.ObtenerContratoPorNumDocIdentidadSoloActivos(datosCapturados);
        }
        else
        {
            if (campo == "NOMBRES")
            {
                tablaResultadosBusqueda = _registroContrato.ObtenerContratoPorNombreSoloActivos(datosCapturados);
            }
            else
            {
                if (campo == "APELLIDOS")
                {
                    tablaResultadosBusqueda = _registroContrato.ObtenerContratoPorApellidosSoloActivos(datosCapturados);
                }
                else
                {
                    if (campo == "RAZ_SOCIAL")
                    {
                        tablaResultadosBusqueda = _registroContrato.ObtenerContratoPorRazSocialSoloActivos(datosCapturados);
                    }
                }
            }
        }

        if (tablaResultadosBusqueda.Rows.Count <= 0)
        {
            if (_registroContrato.MensajeError != null)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _registroContrato.MensajeError, Proceso.Error);
            }
            else
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontraron registron que cumplieran los parametros de busqueda.", Proceso.Advertencia);
            }

            GridView_RESULTADOS_BUSQUEDA.DataSource = null;
            GridView_RESULTADOS_BUSQUEDA.DataBind();

            Panel_RESULTADOS_GRID.Visible = false;
        }
        else
        {
            GridView_RESULTADOS_BUSQUEDA.DataSource = tablaResultadosBusqueda;
            GridView_RESULTADOS_BUSQUEDA.DataBind();
        }
    }
    private void CargarTrabajadoresEmpresa()
    {
        Decimal ID_EMPRESA = Convert.ToDecimal(HiddenField_ID_EMPRESA.Value);

        registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        DataTable tablaEmpleados = _registroContrato.ObtenerEmpleadosActivosPorEmpresa(ID_EMPRESA);

        if (tablaEmpleados.Rows.Count <= 0)
        {
            if (_registroContrato.MensajeError != null)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _registroContrato.MensajeError, Proceso.Error);
            }

            GridView_ControlAsistencia.DataSource = null;
            GridView_ControlAsistencia.DataBind();
        }
        else
        {
            DataTable tablaEmpleadosFinal = ObtenerTablaParaGrillaEmpleados();

            perfil _perfil = new perfil(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

            for (int i = 0; i < tablaEmpleados.Rows.Count; i++)
            {
                DataRow filaTablaFinal = tablaEmpleadosFinal.NewRow();
                DataRow filaTabla = tablaEmpleados.Rows[i];

                filaTablaFinal["ID_EMPLEADO"] = filaTabla["ID_EMPLEADO"];
                filaTablaFinal["ID_SOLICITUD"] = filaTabla["ID_SOLICITUD"];
                filaTablaFinal["NOMBRES_EMPLEADO"] = filaTabla["NOMBRES"].ToString().Trim() + " " + filaTabla["APELLIDOS"].ToString().Trim();
                filaTablaFinal["NUMERO_IDENTIFICACION"] = filaTabla["TIP_DOC_IDENTIDAD"].ToString().Trim() + " " + filaTabla["NUM_DOC_IDENTIDAD"].ToString().Trim();

                Decimal ID_PERFIL = 0;
                if (filaTabla["ID_PERFIL"].Equals(DBNull.Value) == false)
                {
                    ID_PERFIL = Convert.ToDecimal(filaTabla["ID_PERFIL"]);

                    DataTable tablaPerfil = _perfil.ObtenerPorRegistroConinfoOcupacion(ID_PERFIL);

                    if (tablaPerfil.Rows.Count <= 0)
                    {
                        if (_perfil.MensajeError != null)
                        {
                            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _perfil.MensajeError, Proceso.Error);
                        }

                        filaTablaFinal["CARGO"] = "Desconocido";
                    }
                    else
                    {
                        DataRow filaPerfil = tablaPerfil.Rows[0];

                        filaTablaFinal["CARGO"] = filaPerfil["NOM_OCUPACION"].ToString().Trim();
                    }
                }
                else
                {
                    filaTablaFinal["CARGO"] = "Desconocido";
                }

                tablaEmpleadosFinal.Rows.Add(filaTablaFinal);
                tablaEmpleadosFinal.AcceptChanges();
            }

            GridView_ControlAsistencia.DataSource = tablaEmpleadosFinal;
            GridView_ControlAsistencia.DataBind();
        }

        Label_trabajadoresSeleciconados.Text = "0";
    }
    protected void Button_CLAUSULAS_Click(object sender, EventArgs e)
    {
        Decimal ID_CONTRATO = Convert.ToDecimal(HiddenField_ID_CONTRATO.Value);

        registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaInfoClausulas = _registroContrato.ObtenerInfoParaImprimirClausulas(Convert.ToDecimal(HiddenField_ID_CONTRATO.Value));

        if (tablaInfoClausulas.Rows.Count <= 0)
        {
            if (_registroContrato.MensajeError != null)
            {
                Informar(Panel_MENSAJE_IMPRESIONES_BASICAS, Label_MENSAJE_IMPRESIONES_BASICAS, _registroContrato.MensajeError, Proceso.Error);
            }
            else
            {
                DataTable tablaCon = _registroContrato.ObtenerConRegContratosPorRegistro(Convert.ToInt32(ID_CONTRATO));
                DataRow fila = tablaCon.Rows[0];
                _registroContrato.ActualizarConRegContratosImpresos(Convert.ToInt32(ID_CONTRATO), fila["CONTRATO_IMPRESO"].ToString(), "S");

                Informar(Panel_MENSAJE_IMPRESIONES_BASICAS, Label_MENSAJE_IMPRESIONES_BASICAS, "ADVERTENCIA: No existen clausulas para este contrato y perfil, puede continuar, con los siguientes tramites.", Proceso.Error);
            }
        }
        else
        {
            tools _tools = new tools();

            DataTable tablaCon = _registroContrato.ObtenerConRegContratosPorRegistro(Convert.ToInt32(ID_CONTRATO));
            DataRow fila = tablaCon.Rows[0];
            _registroContrato.ActualizarConRegContratosImpresos(Convert.ToInt32(ID_CONTRATO), fila["CONTRATO_IMPRESO"].ToString(), "S");

            StreamReader archivo_original = new StreamReader(Server.MapPath(@"~\plantillas_reportes\clausulas.htm"));

            String html_clausula = archivo_original.ReadToEnd();

            archivo_original.Dispose();
            archivo_original.Close();

            String html_completo = "<html><body>";

            Int32 contadorClausulas = 0;

            foreach (DataRow filaClausula in tablaInfoClausulas.Rows)
            {
                if (contadorClausulas == 0)
                {
                    html_completo = html_clausula;
                }
                else
                {
                    html_completo += "<div>linea para paginacion de pdf</div>";
                    html_completo += html_clausula;
                }

                if (Session["idEmpresa"].ToString() == "1")
                {
                    html_completo = html_completo.Replace("[NOMBRE_EMPRESA]", tabla.VAR_NOMBRE_SERTEMPO);
                }
                else
                {
                    html_completo = html_completo.Replace("[NOMBRE_EMPRESA]", tabla.VAR_NOMBRE_EYS);
                }
                html_completo = html_completo.Replace("[NOMBRE_TRABAJADOR]", filaClausula["NOMBRES"].ToString().Trim() + " " + filaClausula["APELLIDOS"].ToString().Trim());
                html_completo = html_completo.Replace("[NOMBRE_CLAUSULA]", filaClausula["NOMBRE"].ToString().Trim());
                html_completo = html_completo.Replace("[ENCABEZADO_CLAUSULA]", filaClausula["ENCABEZADO"].ToString().Trim());
                html_completo = html_completo.Replace("[CONTENIDO_CLAUSULA]", filaClausula["DESCRIPCION"].ToString().Trim());
                html_completo = html_completo.Replace("[DIAS]", DateTime.Now.Day.ToString());
                html_completo = html_completo.Replace("[MES]", _tools.obtenerNombreMes(DateTime.Now.Month));
                html_completo = html_completo.Replace("[ANNO]", DateTime.Now.Year.ToString());

                contadorClausulas += 1;
            }

            html_completo += "</body></html>";

            String filename = "clausulas_contrato_" + ID_CONTRATO.ToString();

            HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;FileName=" + filename + ".pdf");

            Response.Clear();
            Response.ContentType = "application/pdf";

            iTextSharp.text.Document document = new iTextSharp.text.Document(new Rectangle(595, 842), 40, 40, 80, 40);

            iTextSharp.text.pdf.PdfWriter writer = PdfWriter.GetInstance(document, Response.OutputStream);

            pdfEvents PageEventHandler = new pdfEvents();
            writer.PageEvent = PageEventHandler;

            if (Session["idEmpresa"].ToString() == "1")
            {
                PageEventHandler.dirImagenHeader = Server.MapPath("~/imagenes/reportes/logo_sertempo.png");
            }
            else
            {
                PageEventHandler.dirImagenHeader = Server.MapPath("~/imagenes/reportes/logo_eficiencia.png");
            }

            PageEventHandler.fechaImpresion = DateTime.Now;
            PageEventHandler.tipoDocumento = "clausula";

            document.Open();

            String tempFile = Path.GetTempFileName();

            using (StreamWriter tempwriter = new StreamWriter(tempFile, false))
            {
                tempwriter.Write(html_completo);
            }

            List<IElement> htmlarraylist = HTMLWorker.ParseToList(new StreamReader(tempFile), new StyleSheet());

            foreach (IElement element in htmlarraylist)
            {
                if (element.Chunks.Count > 0)
                {
                    if (element.Chunks[0].Content == "linea para paginacion de pdf")
                    {
                        document.NewPage();
                    }
                    else
                    {
                        document.Add(element);
                    }
                }
                else
                {
                    document.Add(element);
                }
            }

            document.Close();
            writer.Close();

            Response.End();

            File.Delete(tempFile);
        }
    }
    /// <summary>
    /// hecho por cesar pulido
    /// el dia 9 de diciembre de 2012
    /// para obtener el archivo de las clausulas
    /// </summary>
    /// <returns></returns>
    public byte[] GenerarPDFClausulas(Decimal ID_CONTRATO)
    {
        //obtenemos la informacion necesaria de las clausulas
        registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaInfoClausulas = _registroContrato.ObtenerInfoParaImprimirClausulas(ID_CONTRATO);

        if (tablaInfoClausulas.Rows.Count > 0)
        {
            tools _tools = new tools();

            //como existen clausulas antes de mostrarlas se debe actualizar el estado de impresion de clausulas
            DataTable tablaCon = _registroContrato.ObtenerConRegContratosPorRegistro(Convert.ToInt32(ID_CONTRATO));

            DataRow fila = tablaCon.Rows[0];

            //En esta variable cargamos el documento plantilla
            StreamReader archivo_original = new StreamReader(Server.MapPath(@"~\plantillas_reportes\clausulas.htm"));

            String html_clausula = archivo_original.ReadToEnd();

            archivo_original.Dispose();
            archivo_original.Close();

            String html_completo = "<html><body>";

            Int32 contadorClausulas = 0;

            //tenemos que recorrer todas las clausulas e imprimirlas en hojas diferentes pero un mismo documento
            foreach (DataRow filaClausula in tablaInfoClausulas.Rows)
            {
                //como se tiene un clausula entonces al html_compleo le adicionamos una plantilla contenido de clausula
                if (contadorClausulas == 0)
                {
                    html_completo = html_clausula;
                }
                else
                {
                    html_completo += "<div>linea para paginacion de pdf</div>";
                    html_completo += html_clausula;
                }

                //despues de haber agregado la plantilla se procede a reemplazar los tags
                if (Session["idEmpresa"].ToString() == "1")
                {
                    html_completo = html_completo.Replace("[NOMBRE_EMPRESA]", tabla.VAR_NOMBRE_SERTEMPO);
                }
                else
                {
                    html_completo = html_completo.Replace("[NOMBRE_EMPRESA]", tabla.VAR_NOMBRE_EYS);
                }
                html_completo = html_completo.Replace("[NOMBRE_TRABAJADOR]", filaClausula["NOMBRES"].ToString().Trim() + " " + filaClausula["APELLIDOS"].ToString().Trim());
                html_completo = html_completo.Replace("[NOMBRE_CLAUSULA]", filaClausula["NOMBRE"].ToString().Trim());
                html_completo = html_completo.Replace("[ENCABEZADO_CLAUSULA]", filaClausula["ENCABEZADO"].ToString().Trim());
                html_completo = html_completo.Replace("[CONTENIDO_CLAUSULA]", filaClausula["DESCRIPCION"].ToString().Trim());
                html_completo = html_completo.Replace("[CIUDAD_FIRMA]", "BOGOTA");
                html_completo = html_completo.Replace("[DIAS]", DateTime.Now.Day.ToString());
                html_completo = html_completo.Replace("[MES]", _tools.obtenerNombreMes(DateTime.Now.Month));
                html_completo = html_completo.Replace("[ANNO]", DateTime.Now.Year.ToString());

                contadorClausulas += 1;
            }

            html_completo += "</body></html>";

            //creamos un configuramos el documento de pdf
            //(tamaño de la hoja,margen izq, margen der, margin arriba margen abajo)
            iTextSharp.text.Document document = new iTextSharp.text.Document(new Rectangle(595, 842), 40, 40, 80, 40);

            using (MemoryStream streamArchivo = new MemoryStream())
            {
                iTextSharp.text.pdf.PdfWriter writer = PdfWriter.GetInstance(document, streamArchivo);

                // Our custom Header and Footer is done using Event Handler
                pdfEvents PageEventHandler = new pdfEvents();
                writer.PageEvent = PageEventHandler;

                // Define the page header
                // Define the page header
                if (Session["idEmpresa"].ToString() == "1")
                {
                    PageEventHandler.dirImagenHeader = Server.MapPath("~/imagenes/reportes/logo_sertempo.png");
                }
                else
                {
                    PageEventHandler.dirImagenHeader = Server.MapPath("~/imagenes/reportes/logo_eficiencia.png");
                }

                PageEventHandler.fechaImpresion = DateTime.Now;
                PageEventHandler.tipoDocumento = "clausula";

                document.Open();

                //capturamos el archivo temporal del response
                String tempFile = Path.GetTempFileName();

                //y lo llenamos con el html de la plantilla
                using (StreamWriter tempwriter = new StreamWriter(tempFile, false))
                {
                    tempwriter.Write(html_completo);
                }

                //leeemos el archivo temporal y lo colocamos en el documento de pdf
                List<IElement> htmlarraylist = HTMLWorker.ParseToList(new StreamReader(tempFile), new StyleSheet());

                foreach (IElement element in htmlarraylist)
                {
                    if (element.Chunks.Count > 0)
                    {
                        if (element.Chunks[0].Content == "linea para paginacion de pdf")
                        {
                            document.NewPage();
                        }
                        else
                        {
                            document.Add(element);
                        }
                    }
                    else
                    {
                        document.Add(element);
                    }
                }

                //limpiamos todo
                document.Close();

                writer.Close();

                return streamArchivo.ToArray();
            }
        }
        else
        {
            return null;
        }
    }
    protected void Button_ImprimrContrato1_Click(object sender, EventArgs e)
    {
        if (!(String.IsNullOrEmpty(HiddenField_ID_CONTRATO.Value)))
        {
            registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
            DataTable tablaInfoContrato = _registroContrato.ObtenerInfoParaImprimirContrato(Convert.ToDecimal(HiddenField_ID_CONTRATO.Value));
            NumToLetra numToLetra = new NumToLetra();
            string salario_en_letras = "";

            if (tablaInfoContrato.Rows.Count <= 0)
            {
                if (_registroContrato.MensajeError != null)
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontró información para generar el contrato.", Proceso.Error);
                }
                else
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _registroContrato.MensajeError, Proceso.Error);
                }
            }
            else
            {
                String uspReporte = "";
                String nombreReporte = "";
                string nombre_empresa = null;
                string nit_empresa = null;
                string telefono_empresa = null;
                string direccion_empresa = null;

                if (Session["idEmpresa"].ToString() == "1")
                {
                    nombre_empresa = tabla.VAR_NOMBRE_SERTEMPO;
                    nit_empresa = tabla.VAR_NIT_SERTEMPO;
                    telefono_empresa = tabla.VAR_TELEFONO_SERTEMPO;
                    direccion_empresa = tabla.VAR_DOMICILIO_SERTEMPO;
                }
                else
                {
                    if (Session["idEmpresa"].ToString() == "3")
                    {
                        nombre_empresa = tabla.VAR_NOMBRE_EYS;
                        nit_empresa = tabla.VAR_NIT_EYS;
                        telefono_empresa = tabla.VAR_TELEFONO_EYS;
                        direccion_empresa = tabla.VAR_DOMICILIO_EYS;
                    }
                }

                DataRow filaInfoContrato = tablaInfoContrato.Rows[0];

                salario_en_letras = numToLetra.Convertir(Convert.ToDecimal(filaInfoContrato["SALARIO"]).ToString(), true);

                if (filaInfoContrato["PRACTICANTE_UNIVERSITARIO"].ToString().ToUpper() == "S")
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se puede reimprimir el contrato de aprendizaje.", Proceso.Advertencia);
                }
                else if ((filaInfoContrato["SENA_ELECTIVO"].ToString().ToUpper() == "S") || (filaInfoContrato["SENA_LEC"].ToString().ToUpper() == "S") || (filaInfoContrato["SENA_PRO"].ToString().ToUpper() == "S") || (filaInfoContrato["SENA_PRODUCTIVO"].ToString().ToUpper() == "S"))
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se puede reimprimir el contrato de aprendizaje.", Proceso.Advertencia);
                }
                else if (filaInfoContrato["CLASE_CONTRATO"].ToString().ToUpper().Trim() == ClaseContrato.I.ToString())
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se puede reimprimir el contrato integral.", Proceso.Advertencia);
                }
                else
                {
                    if (filaInfoContrato["CLASE_CONTRATO"].ToString().ToUpper().Trim() == ClaseContrato.L_C_C_D_A.ToString())
                    {
                        Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se puede reimprimir el contrato.", Proceso.Advertencia);
                    }
                    else
                    {
                        if (filaInfoContrato["CLASE_CONTRATO"].ToString().ToUpper().Trim() == ClaseContrato.L_S_C_D_A.ToString())
                        {
                        }
                        else
                        {
                            if (filaInfoContrato["CLASE_CONTRATO"].ToString().ToUpper().Trim() == ClaseContrato.O_L.ToString())
                            {

                                if (RadioButtonList_impresion_contrato.SelectedValue == "COMPLETO")
                                {
                                    ImprimirContratoO_L_COMPLETO(filaInfoContrato);
                                }
                                else
                                {
                                    if (RadioButtonList_impresion_contrato.SelectedValue == "PREIMPRESO")
                                    {
                                        uspReporte = "usp_con_reg_contratos_ObtenerInfo_para_imprimir_contrato " + filaInfoContrato["REGISTRO_CONTRATO"].ToString();
                                        nombreReporte = "RPT_CONTRATACION_OBRA_LABOR_PREIMPRESO.rpt ";
                                    }
                                }
                            }
                            else
                            {
                                if (filaInfoContrato["CLASE_CONTRATO"].ToString().ToUpper().Trim() == ClaseContrato.T_F.ToString())
                                {
                                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se puede reimprimir el contrato.", Proceso.Advertencia);
                                }
                                else
                                {
                                    if (filaInfoContrato["CLASE_CONTRATO"].ToString().ToUpper().Trim() == ClaseContrato.IN.ToString())
                                    {
                                        Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se puede reimprimir el contrato integral.", Proceso.Advertencia);
                                    }
                                }
                            }
                        }
                    }
                }

                String cadenaDeConeccion = "";
                if (Session["idEmpresa"].ToString() == "1")
                {
                    cadenaDeConeccion = ConfigurationManager.ConnectionStrings["siser"].ConnectionString;
                }
                else
                {
                    cadenaDeConeccion = ConfigurationManager.ConnectionStrings["sister"].ConnectionString;
                }

                SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(cadenaDeConeccion);
                String user = builder.UserID;
                string pass = builder.Password;
                String server = builder.DataSource;
                String db = builder.InitialCatalog;

                SqlConnection conn = new SqlConnection(cadenaDeConeccion);

                try
                {
                    using (SqlCommand comando = new SqlCommand(uspReporte, conn))
                    {
                        using (SqlDataAdapter adaptador = new SqlDataAdapter(comando))
                        {
                            DataSet ds = new DataSet();
                            adaptador.Fill(ds);

                            reporte = new ReportDocument();

                            reporte.Load(Server.MapPath("~/Reportes/Contratacion/" + nombreReporte));
                            reporte.SetDataSource(ds.Tables[0]);
                            reporte.DataSourceConnections[0].SetConnection(server, db, user, pass);

                            using (var mStream = (MemoryStream)reporte.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat))
                            {
                                Response.AddHeader("Content-Disposition", "attachment;FileName=RPT_PDF.pdf");
                                Response.Clear();
                                Response.Buffer = true;
                                Response.ContentType = "application/pdf";
                                Response.BinaryWrite(mStream.ToArray());
                            }
                            Response.End();
                        }
                    }
                }
                catch (Exception ex)
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, ex.Message, Proceso.Error);
                }
                finally
                {
                    if (conn.State != ConnectionState.Closed)
                        conn.Close();
                    conn.Dispose();
                }

            }
        }
        else
        {
            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El contrato no ha sido guardado. Debe diligenciar todos los datos de contrato y luego Guardarlos, para poder imprimir el correspondiente documento.", Proceso.Advertencia);
        }
    }
    /// <summary>
    /// HECHO POR CESAR PULIDO
    /// EL DIA 19 DE DICIEMBRE DE 2012
    /// PARA OBTENER EL ARCHIVO CON LA INFORMACION DE LAS AFICLIACIONES DEL EMPLEADO
    /// </summary>
    /// <param name="ID_SOLICITUD"></param>
    /// <param name="ID_REQUERIMIENTO"></param>
    /// <param name="ID_EMPLEADO"></param>
    /// <returns></returns>
    public byte[] GenerarPDFAfiliaciones(Decimal ID_SOLICITUD, Decimal ID_REQUERIMIENTO, Decimal ID_EMPLEADO, Decimal ID_CONTRATO)
    {
        tools _tools = new tools();

        registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaInfoContrato = _registroContrato.obtenerInfoNomEmpleadoPorIdSolicitudIdRequerimiento(ID_SOLICITUD, ID_REQUERIMIENTO, ID_EMPLEADO);

        DataRow filaInfoContrato = tablaInfoContrato.Rows[0];

        Decimal ID_AFILIACION_ARP = Convert.ToDecimal(filaInfoContrato["ID_ARP"]);
        Decimal ID_AFILIACION_CAJA_C = Convert.ToDecimal(filaInfoContrato["ID_CAJA_C"]);
        Decimal ID_AFILIACION_EPS = Convert.ToDecimal(filaInfoContrato["ID_EPS"]);
        Decimal ID_AFILIACION_F_PENSIONES = Convert.ToDecimal(filaInfoContrato["ID_F_PENSIONES"]);

        radicacionHojasDeVida _radicacionHojasDeVida = new radicacionHojasDeVida(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaSolicitud = _radicacionHojasDeVida.ObtenerRegSolicitudesingresoPorIdSolicitud(Convert.ToInt32(ID_SOLICITUD));
        DataRow filaSolicitud = tablaSolicitud.Rows[0];

        String NOMBRE_ASPIRANTE = filaSolicitud["NOMBRES"].ToString().Trim() + " " + filaSolicitud["APELLIDOS"].ToString().Trim();
        String DOC_IDENTIDAD_ASPIRANTE = filaSolicitud["TIP_DOC_IDENTIDAD"].ToString().Trim() + " " + filaSolicitud["NUM_DOC_IDENTIDAD"].ToString().Trim();
        String DIRECCION_ASPIRANTE = filaSolicitud["DIR_ASPIRANTE"].ToString().Trim();
        String CIUDAD_ASPIRANTE = filaSolicitud["NOMBRE_CIUDAD"].ToString().Trim();
        String SECTOR_ASPIRANTE = filaSolicitud["SECTOR"].ToString();
        String TELEFONOS_ASPIRANTE = filaSolicitud["TEL_ASPIRANTE"].ToString();
        String ASPIRACION_SALARIAL_ASPIRANTE;
        try { ASPIRACION_SALARIAL_ASPIRANTE = Convert.ToInt32(filaSolicitud["ASPIRACION_SALARIAL"]).ToString(); }
        catch { ASPIRACION_SALARIAL_ASPIRANTE = "Desconocido."; }
        String EMAIL_ASPIRANTE = filaSolicitud["E_MAIL"].ToString().Trim();

        int EDAD_ASPIRANTE = 0;
        if (DBNull.Value.Equals(filaSolicitud["FCH_NACIMIENTO"]) == false)
        {
            try
            {
                EDAD_ASPIRANTE = _tools.ObtenerEdadDesdeFechaNacimiento(Convert.ToDateTime(filaSolicitud["FCH_NACIMIENTO"]));
            }
            catch
            {
                EDAD_ASPIRANTE = 0;
            }
        }

        //FEMENINO, MASCULINO
        String SEXO = "Desconocido.";
        String LIBRETA_MILITAR = "Desconocida.";
        if (DBNull.Value.Equals(filaSolicitud["SEXO"]) == false)
        {
            if (filaSolicitud["SEXO"].ToString().ToUpper() == "F")
            {
                SEXO = "Femenino";
                LIBRETA_MILITAR = "No Aplica";
            }
            else
            {
                if (filaSolicitud["SEXO"].ToString().ToUpper() == "M")
                {
                    SEXO = "Masculino";
                    LIBRETA_MILITAR = filaSolicitud["LIB_MILITAR"].ToString();
                }
            }
        }

        //cargo al que aspira el candidato (cargo generico)
        cargo _cargo = new cargo(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaOcupacionAspira = _cargo.ObtenerOcupacionPorIdOcupacion(ID_SOLICITUD);
        String CARGO_APLICA = "Desconocido";
        if (tablaOcupacionAspira.Rows.Count > 0)
        {
            DataRow filaOcupacionAspira = tablaOcupacionAspira.Rows[0];
            CARGO_APLICA = filaOcupacionAspira["NOM_OCUPACION"].ToString().Trim();
        }

        //En esta variable cargamos el documento plantilla
        StreamReader archivo_original = new StreamReader(Server.MapPath(@"~\plantillas_reportes\informeAfiliaciones.htm"));

        String html_formato_afilicaciones = archivo_original.ReadToEnd();

        archivo_original.Dispose();
        archivo_original.Close();

        String html_encabezado = "<html>";
        html_encabezado += "<body>";

        String html_pie = "</body>";
        html_pie += "</html>";

        html_formato_afilicaciones = html_encabezado + html_formato_afilicaciones;

        html_formato_afilicaciones = html_formato_afilicaciones.Replace("[NOMBRE_TRABAJADOR]", NOMBRE_ASPIRANTE);
        html_formato_afilicaciones = html_formato_afilicaciones.Replace("[DOC_IDENTIDAD_TRABAJADOR]", DOC_IDENTIDAD_ASPIRANTE);
        if (EDAD_ASPIRANTE > 0)
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[EDAD_TRABAJADOR]", EDAD_ASPIRANTE.ToString() + " Años.");
        }
        else
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[EDAD_ASPIRANTE]", "Desconocida.");
        }
        html_formato_afilicaciones = html_formato_afilicaciones.Replace("[DIRECCION_TRABAJADOR]", DIRECCION_ASPIRANTE);
        html_formato_afilicaciones = html_formato_afilicaciones.Replace("[CIUDAD_TRABAJADOR]", CIUDAD_ASPIRANTE);
        html_formato_afilicaciones = html_formato_afilicaciones.Replace("[SECTOR_TRABAJADOR]", SECTOR_ASPIRANTE);
        html_formato_afilicaciones = html_formato_afilicaciones.Replace("[TELEFONOS_TRABAJADOR]", TELEFONOS_ASPIRANTE);
        html_formato_afilicaciones = html_formato_afilicaciones.Replace("[ASPIRACION_SALARIAL_TRABAJADOR]", ASPIRACION_SALARIAL_ASPIRANTE);
        html_formato_afilicaciones = html_formato_afilicaciones.Replace("[EMAIL_TRABAJADOR]", EMAIL_ASPIRANTE);
        html_formato_afilicaciones = html_formato_afilicaciones.Replace("[LIBRETA_MILITAR_TRABAJADOR]", LIBRETA_MILITAR);

        //reemplazamos tag de arp
        String TABLA_AFILIACION_ARP = cargar_arp(ID_AFILIACION_ARP, ID_SOLICITUD, ID_EMPLEADO, ID_CONTRATO);
        if (TABLA_AFILIACION_ARP != null)
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[TABLA_AFILIACION_ARP]", TABLA_AFILIACION_ARP);
        }
        else
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[TABLA_AFILIACION_ARP]", "");
        }

        //reemplazamos tag de eps
        String TABLA_AFILIACION_EPS = cargar_eps(ID_AFILIACION_EPS, ID_SOLICITUD, ID_EMPLEADO, ID_CONTRATO);
        if (TABLA_AFILIACION_EPS != null)
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[TABLA_AFILIACION_EPS]", TABLA_AFILIACION_EPS);
        }
        else
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[TABLA_AFILIACION_EPS]", "");
        }

        //reemplazamos tag de caja de compensacion
        String TABLA_AFILIACION_CCF = cargar_caja(ID_AFILIACION_CAJA_C, ID_SOLICITUD, ID_EMPLEADO);
        if (TABLA_AFILIACION_CCF != null)
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[TABLA_AFILIACION_CCF]", TABLA_AFILIACION_CCF);
        }
        else
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[TABLA_AFILIACION_CCF]", "");
        }

        //reemplazamos tag de FONDO DE PENSIONES
        String TABLA_AFILIACION_AFP = cargar_afp(ID_AFILIACION_F_PENSIONES, ID_SOLICITUD, ID_EMPLEADO);
        if (TABLA_AFILIACION_AFP != null)
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[TABLA_AFILIACION_AFP]", TABLA_AFILIACION_AFP);
        }
        else
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[TABLA_AFILIACION_AFP]", "");
        }

        html_formato_afilicaciones += html_pie;

        //creamos un configuramos el documento de pdf
        //(tamaño de la hoja,margen izq, margen der, margin arriba margen abajo)
        iTextSharp.text.Document document = new iTextSharp.text.Document(new Rectangle(595, 842), 40, 40, 80, 40);

        using (MemoryStream streamArchivo = new MemoryStream())
        {
            iTextSharp.text.pdf.PdfWriter writer = PdfWriter.GetInstance(document, streamArchivo);

            // Our custom Header and Footer is done using Event Handler
            pdfEvents PageEventHandler = new pdfEvents();
            writer.PageEvent = PageEventHandler;

            // Define the page header
            // Define the page header
            if (Session["idEmpresa"].ToString() == "1")
            {
                PageEventHandler.dirImagenHeader = Server.MapPath("~/imagenes/reportes/logo_sertempo.png");
            }
            else
            {
                PageEventHandler.dirImagenHeader = Server.MapPath("~/imagenes/reportes/logo_eficiencia.png");
            }

            PageEventHandler.fechaImpresion = DateTime.Now;
            PageEventHandler.tipoDocumento = "afiliaciones";

            document.Open();

            //capturamos el archivo temporal del response
            String tempFile = Path.GetTempFileName();

            //y lo llenamos con el html de la plantilla
            using (StreamWriter tempwriter = new StreamWriter(tempFile, false))
            {
                tempwriter.Write(html_formato_afilicaciones);
            }

            //leeemos el archivo temporal y lo colocamos en el documento de pdf
            List<IElement> htmlarraylist = HTMLWorker.ParseToList(new StreamReader(tempFile), new StyleSheet());

            foreach (IElement element in htmlarraylist)
            {
                if (element.Chunks.Count > 0)
                {
                    if (element.Chunks[0].Content == "linea para paginacion de pdf")
                    {
                        document.NewPage();
                    }
                    else
                    {
                        document.Add(element);
                    }
                }
                else
                {
                    document.Add(element);
                }
            }

            //limpiamos todo
            document.Close();

            writer.Close();

            return streamArchivo.ToArray();
        }
    }
    protected void GridView_CONTRATOS_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView_CONTRATOS.PageIndex = e.NewPageIndex;

        Decimal ID_SOLICITUD = Convert.ToDecimal(Label_ID_SOLICITUD.Text);

        registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaContratos = _registroContrato.ObtenerContratosPorIdSolicitud(ID_SOLICITUD);

        Cargar(tablaContratos);
    }
        public String ElaborarContrato(int id_requerimiento, int id_solicitud, int id_empresa, int id_centro_Costo, int id_sub_cc, String ciudad,
            int ID_SERVICIO_RESPECTIVO, int servicio, int id_ARP, int id_caja_c, int id_EPS, int id_Pensiones, Decimal riesgo, String pensionado,
            String Clase_Contrato, String Tipo_Contrato, String Tipo_Pago, DateTime fecha_Inicia, DateTime fecha_termina, String sal_int,
            Decimal Salario, String vigente, String activo, String liquidado, String pago_Liquidacion, int id_entidad, String Num_Cuenta, String Forma_pago,
            String PAGO_DIAS_PRODUCTIVIDAD, String SENA_PRODICTIVO, String SENA_ELECTIVO, String PRACTICANTE_UNIVERSITARIO, Decimal VALOR_NOMINA, Decimal VALOR_CONTRATO,
            DateTime FECHA_INICIO_PERIODO, DateTime FECHA_FIN_PERIODO, String Periodo_Pago, String tipo_Cuenta, string descripcion_salario, decimal idPerfil)
        {
            String datosG = "";
            int id_perfil = 0;
            Conexion conexion = new Conexion(Empresa);
            conexion.IniciarTransaccion();

            try
            {
                requisicion _req = new requisicion(Empresa, Usuario);
                DataTable tablaReq = _req.ObtenerComRequerimientoPorIdRequerimiento(Convert.ToDecimal(id_requerimiento), conexion);

                DataRow filaReq = tablaReq.Rows[0];
                id_perfil = Convert.ToInt32(filaReq["REGISTRO_PERFIL"].ToString());
                usuario _empleado = new usuario(Empresa);
                radicacionHojasDeVida _sol = new radicacionHojasDeVida(Empresa, Usuario);

                Decimal idEmpleado = _empleado.AdicionarNomEmpleados(0, id_solicitud, id_empresa, id_centro_Costo, id_sub_cc, fecha_Inicia, Salario,
                    pensionado, activo, liquidado, riesgo, id_ARP, id_caja_c, id_EPS, id_Pensiones, "C", id_entidad, Num_Cuenta, sal_int, ciudad, id_perfil, tipo_Cuenta, descripcion_salario, Forma_pago, conexion);

                if (idEmpleado <= 0)
                {
                    _mensaje_error = "\n El empleado no fue creado, " + _empleado.MensajeError;
                    conexion.DeshacerTransaccion();
                }
                else
                {
                    registroContrato _contrato = new registroContrato(Empresa, Usuario);

                    Decimal id_Contrato = 0;
                    /* revisado por cambio en riesgo */
                    id_Contrato = _contrato.AdicionarConRegContratos(Convert.ToInt32(idEmpleado), id_requerimiento, id_solicitud, id_centro_Costo,
                        id_sub_cc, Clase_Contrato, fecha_Inicia, fecha_termina, vigente, pago_Liquidacion, sal_int, Tipo_Contrato,
                        ID_SERVICIO_RESPECTIVO, ciudad, servicio, conexion, PAGO_DIAS_PRODUCTIVIDAD, SENA_PRODICTIVO, SENA_ELECTIVO, PRACTICANTE_UNIVERSITARIO,
                        VALOR_NOMINA, VALOR_CONTRATO, FECHA_INICIO_PERIODO, FECHA_FIN_PERIODO, Periodo_Pago);

                    if (String.IsNullOrEmpty(_contrato.MensajeError))
                    {
                        _empleado.ActualizarNomEmpleados(Convert.ToInt32(idEmpleado), Convert.ToInt32(id_Contrato), id_solicitud, id_empresa, id_centro_Costo, id_sub_cc, fecha_Inicia, Salario,
                        pensionado, activo, liquidado, riesgo, id_ARP, id_caja_c, id_EPS, id_Pensiones, "C", id_entidad, Num_Cuenta, sal_int, ciudad, id_perfil, Forma_pago, conexion);

                        if (String.IsNullOrEmpty(_empleado.MensajeError))
                        {

                            if (_sol.ActualizarEstadoProcesoRegSolicitudesIngreso(id_requerimiento, id_solicitud, "CONTRATADO", Usuario, conexion))
                            {
                                if (_sol.ActualizarEstadoRegSolicitudesIngreso(id_requerimiento, id_solicitud, "CONTRATADO", conexion))
                                {
                                    datosG = id_Contrato + "," + idEmpleado;

                                    try
                                    {
                                        conexion.ExecuteNonQuery("usp_ESC_CRT_ENTREGAS_SC_adicionar " + idEmpleado + ", '" + Usuario + "'");
                                        conexion.ExecuteNonQuery("usp_empleado_clausulas_contratar " + idEmpleado + ", " + idPerfil + ", '" + Usuario + "'");

                                        Int32 requerimientoActualizado = Convert.ToInt32(conexion.ExecuteScalar("usp_comprobar_cierre_requisicion_por_sistema " + id_requerimiento.ToString() + ", '" + Usuario + "'"));

                                        if (requerimientoActualizado <= 0)
                                        {
                                            conexion.DeshacerTransaccion();
                                            MensajeError = "El empleado no fue creado, Ocurrio un error al momento de determinar si la requisición debe ser cuplida por sistema.";
                                        }
                                        else
                                        {
                                            conexion.AceptarTransaccion();
                                        }
                                    }
                                    catch
                                    {
                                        _mensaje_error += "\n No fue posible registrar los servicios complementarios o clausulas para el perfil contratado " + _sol.MensajeError;
                                        conexion.AceptarTransaccion();
                                    }
                                }
                                else
                                {
                                    _mensaje_error += "\n No fue posible actualizar el estado de la solicitud: " + _sol.MensajeError;
                                    conexion.DeshacerTransaccion();
                                }
                            }
                            else
                            {
                                _mensaje_error += "\n No fue posible actualizar el estado del proceso de la soliciutd: " + _sol.MensajeError;
                                conexion.DeshacerTransaccion();
                            }

                        }
                        else
                        {
                            _mensaje_error += "\n Se presentó el siguiente error en la actualización del empleado: " + _empleado.MensajeError;
                            conexion.DeshacerTransaccion();
                        }
                    }
                    else
                    {
                        _mensaje_error += "\n Se presentó el siguiente error en la creación del contrato: " + _contrato.MensajeError;
                        conexion.DeshacerTransaccion();
                    }
                }
            }
            catch (Exception e)
            {
                MensajeError = e.Message;
                conexion.DeshacerTransaccion();
            }
            finally
            {
                conexion.Desconectar();
            }

            return datosG;
        }
    protected void GridView_RESULTADOS_BUSQUEDA_SelectedIndexChanged(object sender, EventArgs e)
    {
        Decimal ID_SOLICITUD = Convert.ToDecimal(GridView_RESULTADOS_BUSQUEDA.SelectedDataKey["ID_SOLICITUD"]);
        String NOMBRE_PERSONA_SELECCIONADA = GridView_RESULTADOS_BUSQUEDA.SelectedRow.Cells[2].Text + " " + GridView_RESULTADOS_BUSQUEDA.SelectedRow.Cells[3].Text;
        String NUM_DOCUMENTO_PERSONA_SELECCIONADA = GridView_RESULTADOS_BUSQUEDA.SelectedRow.Cells[4].Text + " " + GridView_RESULTADOS_BUSQUEDA.SelectedRow.Cells[5].Text;
        String MAIL_PERSONA_SELECCIONADA = GridView_RESULTADOS_BUSQUEDA.SelectedRow.Cells[6].Text;
        String DIRECCION_PERSONA_SELECCIONADA = GridView_RESULTADOS_BUSQUEDA.SelectedRow.Cells[7].Text;
        String TELEFONO_PERSONA_SELECCIONADA = GridView_RESULTADOS_BUSQUEDA.SelectedRow.Cells[8].Text;

        registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaContratos = _registroContrato.ObtenerContratosPorIdSolicitud(ID_SOLICITUD);

        cargar_datos_persona_seleccionada(ID_SOLICITUD, NOMBRE_PERSONA_SELECCIONADA, NUM_DOCUMENTO_PERSONA_SELECCIONADA, MAIL_PERSONA_SELECCIONADA, DIRECCION_PERSONA_SELECCIONADA, TELEFONO_PERSONA_SELECCIONADA);

        Cargar(ID_SOLICITUD);

        Ocultar(Acciones.Inicio);

        if (tablaContratos.Rows.Count <= 0)
        {
            if (_registroContrato.MensajeError == null)
            {
                Mostrar(Acciones.sinContratos);
                Informar(Panel_MENSAJES, Label_MENSAJE, "No se encontraron contratos asociados a la persona seleccionada.", Proceso.Error);
            }
            else
            {
                Mostrar(Acciones.sinContratos);
                Informar(Panel_MENSAJES, Label_MENSAJE, _registroContrato.MensajeError, Proceso.Error);
            }
        }
        else
        {
            Mostrar(Acciones.cargarContratos);
            Cargar(tablaContratos);
        }
    }
    protected void Button_Guardar_Click(object sender, EventArgs e)
    {
        try
        {
            if (DropDownList_Clase_contrato.SelectedValue == ClaseContrato.IN.ToString())
            {
                parametroSalarial ParametroSalarial = new parametroSalarial(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                DataRow dataRow = ParametroSalarial.ObtenerPorAño(System.DateTime.Now.Year);
                if (dataRow != null)
                {
                    if (string.IsNullOrEmpty(dataRow["SMMLV"].ToString()))
                    {
                        Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se ha definido el SMMLV para el año " + System.DateTime.Now.Year.ToString(), Proceso.Error);
                        return;
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(dataRow["SMMLV_SALARIO_INTEGRAL"].ToString()))
                        {
                            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se ha definido la cantidad de SMMLV del salario integral, para el año" + System.DateTime.Now.Year.ToString(), Proceso.Error);
                            return;
                        }
                        else
                        {

                            if ((Convert.ToDecimal(this.TextBox_Salario.Text)) < (Convert.ToDecimal(dataRow["SMMLV_SALARIO_INTEGRAL"].ToString()) * Convert.ToDecimal(dataRow["SMMLV"].ToString())))
                            {
                                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El salario integral es menor al permitido " + (Convert.ToDecimal(dataRow["SMMLV_SALARIO_INTEGRAL"].ToString()) * Convert.ToDecimal(dataRow["SMMLV"].ToString())), Proceso.Error);
                                return;
                            }
                            else
                            {
                                if (!(Convert.ToDecimal(TextBox_contrato_integral_porcentaje_parafiscales.Text).Equals(Convert.ToDecimal(dataRow["PORC_BASE_SEGSOC_SALINTEGRAL"].ToString()))))
                                {
                                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El porcentaje parafiscal debe ser " + dataRow["PORC_BASE_SEGSOC_SALINTEGRAL"].ToString(), Proceso.Error);
                                    return;
                                }
                                else
                                {
                                    if (!(Convert.ToDecimal(TextBox_contrato_integral_porcentaje_prestacional.Text).Equals(Convert.ToDecimal(dataRow["PORC_BASE_VACACIONES_SALINTEGRAL"].ToString()))))
                                    {
                                        Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El porcentaje prestacional debe ser " + dataRow["PORC_BASE_VACACIONES_SALINTEGRAL"].ToString(), Proceso.Error);
                                        return;
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se han configurado los parametros salariales para el año " + System.DateTime.Now.Year.ToString(), Proceso.Error);
                    return;
                }
            }

            tools _tools = new tools();
            SecureQueryString QueryStringSeguro;
            QueryStringSeguro = new SecureQueryString(_tools.byteParaQueryStringSeguro(), Request["data"]);
            String persona = QueryStringSeguro["persona"].ToString();
            String[] datos = persona.Split(',');

            requisicion _req = new requisicion(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
            DataTable tablaReq = _req.ObtenerComRequerimientoPorIdRequerimiento(Convert.ToDecimal(datos[1]));
            DataRow filaReq = tablaReq.Rows[0];
            String idPerfil = filaReq["REGISTRO_PERFIL"].ToString();
            Decimal riesgo = 0;
            String centroCosto = "0";
            String SubCentroCosto = "0";
            String Ciudad = null;
            String servicio = "0";
            Decimal salario = 0;
            Decimal smmlv = 0;
            Decimal smmlv_integral = 0;
            String AFP = null;
            String ARP = null;
            String CCF = null;
            String EPS = null;
            String pensionado = "N";
            int id_requerimiento = Convert.ToInt32(datos[1].ToString());
            int id_solicitud = Convert.ToInt32(datos[0].ToString());
            int id_empresa = Convert.ToInt32(datos[3].ToString());
            int ID_SERVICIO_RESPECTIVO = Convert.ToInt32(filaReq["ID_SERVICIO_RESPECTIVO"].ToString());
            String clase_Contrato = null;
            String tipo_Contrato = null;
            DateTime fechaInicio;
            DateTime fechaFinal;

            int id_entidad_Bancaria = 0;
            String formaPago = null;
            String tipoCuenta = String.Empty;
            String num_Cuenta = null;

            String salInt = null;
            String pago_Dias_Productividad = "N";
            String sena_productivo = "N";
            String sena_electivo = "N";
            String practicante_Universitario = "N";
            Decimal valor_nomina = 0;
            Decimal valor_contrato = 0;
            DateTime fecha_inicio_periodo;
            DateTime fecha_fin_periodo;
            String periodo_pago = null;

            radicacionHojasDeVida _sol = new radicacionHojasDeVida(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
            DataTable tablaSolicitud = _sol.ObtenerRegSolicitudesingresoPorIdSolicitud(Convert.ToInt32(datos[0]));
            DataRow filaSolicitud = tablaSolicitud.Rows[0];

            formaPago = filaSolicitud["FORMA_PAGO"].ToString();

            parametroSalarial par = new parametroSalarial(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
            DataTable par_ta = par.ObtenerSalarioMinimo(Convert.ToInt32(System.DateTime.Today.Year.ToString()));
            DataRow fila = par_ta.Rows[0];
            smmlv = Convert.ToDecimal(fila["SMMLV"].ToString());
            par_ta.Clear();
            fila.Delete();
            par_ta = par.ObtenerSalarioIntegral(Convert.ToInt32(System.DateTime.Today.Year.ToString()));
            fila = par_ta.Rows[0];
            smmlv_integral = Convert.ToDecimal(fila["SMMLV_SALARIO_INTEGRAL"].ToString());

            Ciudad = this.DropDownList_Ciudad.SelectedValue;
            centroCosto = this.DropDownList_CentroCosto.SelectedValue;
            SubCentroCosto = this.DropDownList_sub_cc.SelectedValue;

            if (DropDownList_Salario_integral.SelectedValue.Equals("S"))
            {
                salario = Convert.ToDecimal(TextBox_Salario.Text);
                Decimal salarioInt = smmlv * smmlv_integral;
                if (salario < salarioInt)
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El salario ingresado debe ser igual o mayor a " + salarioInt + " dado que indico que es salario integral", Proceso.Advertencia);
                }
            }

            #region afiliaciones
            afiliacion _afiliacion = new afiliacion(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
            DataTable tablaAfiliacion;
            DataRow filaAfiliacion;
            if (RadioButton_PRACTICANTE_UNI.Checked)
            {
                practicante_Universitario = "S";
                pensionado = "N";
                tablaAfiliacion = _afiliacion.ObtenerconafiliacionArpPorSolicitudRequerimiento(Convert.ToInt32(datos[0]), Convert.ToInt32(datos[1]));
                if (tablaAfiliacion.Rows.Count <= 0)
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La persona no tiene afiliaciones a ARL", Proceso.Advertencia);
                }
                else
                {
                    filaAfiliacion = tablaAfiliacion.Rows[0];
                    ARP = filaAfiliacion["REGISTRO"].ToString();

                    tablaAfiliacion.Clear();
                    filaAfiliacion.Delete();
                }

                tablaAfiliacion = _afiliacion.ObtenerconafiliacionEpsPorSolicitudRequerimiento(Convert.ToInt32(datos[0]), Convert.ToInt32(datos[1]));
                if (tablaAfiliacion.Rows.Count <= 0)
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La persona no tiene afiliaciones a EPS.", Proceso.Advertencia);
                }
                else
                {
                    filaAfiliacion = tablaAfiliacion.Rows[0];

                    EPS = filaAfiliacion["REGISTRO"].ToString();

                    tablaAfiliacion.Clear();
                    filaAfiliacion.Delete();
                }
            }
            else if (RadioButton_SENA_ELECTIVO.Checked)
            {
                sena_electivo = "S";
                pensionado = "N";
                tablaAfiliacion = _afiliacion.ObtenerconafiliacionEpsPorSolicitudRequerimiento(Convert.ToInt32(datos[0]), Convert.ToInt32(datos[1]));
                if (tablaAfiliacion.Rows.Count <= 0)
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La persona no tiene afiliaciones a EPS.", Proceso.Advertencia);
                }
                else
                {
                    filaAfiliacion = tablaAfiliacion.Rows[0];

                    EPS = filaAfiliacion["REGISTRO"].ToString();

                    tablaAfiliacion.Clear();
                    filaAfiliacion.Delete();
                }

            }
            else if (RadioButton_SENA_PRODUCTIVO.Checked)
            {
                sena_productivo = "S";
                pensionado = "N";
                tablaAfiliacion = _afiliacion.ObtenerconafiliacionEpsPorSolicitudRequerimiento(Convert.ToInt32(datos[0]), Convert.ToInt32(datos[1]));
                if (tablaAfiliacion.Rows.Count <= 0)
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La persona no tiene afiliaciones a EPS.", Proceso.Advertencia);
                }
                else
                {
                    filaAfiliacion = tablaAfiliacion.Rows[0];

                    EPS = filaAfiliacion["REGISTRO"].ToString();

                    tablaAfiliacion.Clear();
                    filaAfiliacion.Delete();
                }
                tablaAfiliacion = _afiliacion.ObtenerconafiliacionArpPorSolicitudRequerimiento(Convert.ToInt32(datos[0]), Convert.ToInt32(datos[1]));
                if (tablaAfiliacion.Rows.Count <= 0)
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La persona no tiene afiliaciones a ARL.", Proceso.Advertencia);
                }
                else
                {
                    filaAfiliacion = tablaAfiliacion.Rows[0];
                    ARP = filaAfiliacion["REGISTRO"].ToString();

                    tablaAfiliacion.Clear();
                    filaAfiliacion.Delete();
                }
            }
            else
            {
                tablaAfiliacion = _afiliacion.ObtenerconafiliacionEpsPorSolicitudRequerimiento(Convert.ToInt32(datos[0]), Convert.ToInt32(datos[1]));
                if (tablaAfiliacion.Rows.Count <= 0)
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La persona no tiene afiliaciones a EPS.", Proceso.Advertencia);
                }
                else
                {
                    filaAfiliacion = tablaAfiliacion.Rows[0];

                    EPS = filaAfiliacion["REGISTRO"].ToString();

                    tablaAfiliacion.Clear();
                    filaAfiliacion.Delete();
                }

                tablaAfiliacion = _afiliacion.ObtenerconafiliacionArpPorSolicitudRequerimiento(Convert.ToInt32(datos[0]), Convert.ToInt32(datos[1]));
                if (tablaAfiliacion.Rows.Count <= 0)
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La persona no tiene afiliaciones a ARL.", Proceso.Advertencia);
                }
                else
                {
                    filaAfiliacion = tablaAfiliacion.Rows[0];
                    ARP = filaAfiliacion["REGISTRO"].ToString();

                    tablaAfiliacion.Clear();
                    filaAfiliacion.Delete();
                }

                tablaAfiliacion = _afiliacion.ObtenerconafiliacionCajasCPorSolicitudRequerimiento(Convert.ToInt32(datos[0]), Convert.ToInt32(datos[1]));
                if (tablaAfiliacion.Rows.Count <= 0)
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La persona no tiene afiliaciones a CCF.", Proceso.Advertencia);
                }
                else
                {
                    filaAfiliacion = tablaAfiliacion.Rows[0];
                    CCF = filaAfiliacion["REGISTRO"].ToString();

                    tablaAfiliacion.Clear();
                    filaAfiliacion.Delete();
                }

                tablaAfiliacion = _afiliacion.ObtenerconafiliacionfpensionesPorSolicitudRequerimiento(Convert.ToInt32(datos[0]), Convert.ToInt32(datos[1]));
                if (tablaAfiliacion.Rows.Count <= 0)
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La persona no tiene afiliaciones a AFP.", Proceso.Advertencia);
                }
                else
                {
                    filaAfiliacion = tablaAfiliacion.Rows[0];
                    pensionado = filaAfiliacion["PENSIONADO"].ToString();
                    if (pensionado.Equals("S"))
                    {
                        AFP = "0";
                    }
                    else
                    {
                        AFP = filaAfiliacion["REGISTRO"].ToString();
                    }
                }
            }
            #endregion afiliaciones
            #region riesgo
            condicionesContratacion _riesgo = new condicionesContratacion(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
            if (Session["idEmpresa"].ToString().Equals("3"))
            {
                if (String.IsNullOrEmpty(DropDownList_servicio.SelectedValue.ToString()))
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "Debe seleccionar un servicio.", Proceso.Advertencia);
                }
                else
                {
                    if (!(String.IsNullOrEmpty(DropDownList_sub_cc.SelectedValue.ToString())))
                    {
                        DataTable tablaCondContr = _riesgo.ObtenerCondicionContratacionPorIdPerfilIdSubCIdServicio(Convert.ToDecimal(idPerfil), Convert.ToDecimal(DropDownList_sub_cc.SelectedItem.Value.ToString()), Convert.ToDecimal(DropDownList_servicio.SelectedItem.Value.ToString()));
                        DataRow filaCondContrata = tablaCondContr.Rows[0];
                        riesgo = Convert.ToDecimal(filaCondContrata["RIESGO"].ToString());
                        SubCentroCosto = DropDownList_sub_cc.SelectedValue;
                        servicio = DropDownList_servicio.SelectedValue;
                    }
                    else if (!(String.IsNullOrEmpty(DropDownList_CentroCosto.SelectedValue.ToString())))
                    {
                        DataTable tablaCondContr = _riesgo.ObtenerCondicionContratacionPorIdPerfilIdCentroCIdServicio(Convert.ToDecimal(idPerfil), Convert.ToDecimal(DropDownList_CentroCosto.SelectedItem.Value.ToString()), Convert.ToDecimal(DropDownList_servicio.SelectedItem.Value.ToString()));
                        DataRow filaCondContrata = tablaCondContr.Rows[0];
                        riesgo = Convert.ToDecimal(filaCondContrata["RIESGO"].ToString());
                        centroCosto = DropDownList_CentroCosto.SelectedValue;
                        servicio = DropDownList_servicio.SelectedValue;
                    }
                    else if (!(String.IsNullOrEmpty(DropDownList_Ciudad.SelectedValue.ToString())))
                    {
                        DataTable tablaCondContr = _riesgo.ObtenerCondicionContratacionPorIdPerfilIdCiudadIdServicio(Convert.ToDecimal(idPerfil), DropDownList_Ciudad.SelectedItem.Value.ToString(), Convert.ToDecimal(DropDownList_servicio.SelectedItem.Value.ToString()));
                        DataRow filaCondContrata = tablaCondContr.Rows[0];
                        riesgo = Convert.ToDecimal(filaCondContrata["RIESGO"].ToString());
                        Ciudad = DropDownList_Ciudad.SelectedValue;
                        servicio = DropDownList_servicio.SelectedValue;
                    }
                }
            }
            else
            {
                if (!(String.IsNullOrEmpty(DropDownList_sub_cc.SelectedValue.ToString())))
                {
                    DataTable tablaCondContr = _riesgo.ObtenerCondicionComercialPorIdPerfilIdSubC(Convert.ToDecimal(idPerfil), Convert.ToDecimal(DropDownList_sub_cc.SelectedItem.Value.ToString()));
                    DataRow filaCondContrata = tablaCondContr.Rows[0];
                    riesgo = Convert.ToDecimal(filaCondContrata["RIESGO"].ToString());
                    SubCentroCosto = DropDownList_sub_cc.SelectedValue;
                }
                else if (!(String.IsNullOrEmpty(DropDownList_CentroCosto.SelectedValue.ToString())))
                {
                    DataTable tablaCondContr = _riesgo.ObtenerCondicionComercialPorIdPerfilIdCentroC(Convert.ToDecimal(idPerfil), Convert.ToDecimal(DropDownList_CentroCosto.SelectedItem.Value.ToString()));
                    DataRow filaCondContrata = tablaCondContr.Rows[0];
                    riesgo = Convert.ToDecimal(filaCondContrata["RIESGO"].ToString());
                    centroCosto = DropDownList_CentroCosto.SelectedValue;
                }
                else if (!(String.IsNullOrEmpty(DropDownList_Ciudad.SelectedValue.ToString())))
                {
                    DataTable tablaCondContr = _riesgo.ObtenerCondicionComercialPorIdPerfilIdCiudad(Convert.ToDecimal(idPerfil), DropDownList_Ciudad.SelectedItem.Value.ToString());
                    DataRow filaCondContrata = tablaCondContr.Rows[0];
                    riesgo = Convert.ToDecimal(filaCondContrata["RIESGO"].ToString());
                    Ciudad = DropDownList_Ciudad.SelectedValue;
                }
            }
            #endregion riesgo

            clase_Contrato = DropDownList_Clase_contrato.SelectedItem.Value.ToString();
            tipo_Contrato = DropDownList_tipo_Contrato.SelectedItem.Value.ToString();

            if (clase_Contrato.Equals("C_A") == true)
            {
                fechaInicio = Convert.ToDateTime(TextBox_contrato_aprendiz_fecha_inicio.Text);
            }
            else
            {
                fechaInicio = Convert.ToDateTime(TextBox_fecha_inicio.Text);
            }

            if (clase_Contrato.Equals("I") | clase_Contrato.Equals("L_S_C_D_A") )
            {
                fechaFinal = Convert.ToDateTime("01/01/1900");
            }
            else
            {
                if (clase_Contrato.Equals("C_A") == true)
                {
                    fechaFinal = Convert.ToDateTime(TextBox_contrato_aprendiz_fecha_final.Text);
                }
                else
                {
                    fechaFinal = Convert.ToDateTime(TextBox_fecha_terminacion.Text);
                }
            }

            if (formaPago.Equals("CHEQUE") | formaPago.Equals("EFECTIVO"))
            {
                num_Cuenta = null;
                id_entidad_Bancaria = 0;
                tipoCuenta = String.Empty;
            }
            else
            {
                if (String.IsNullOrEmpty(filaSolicitud["ID_ENTIDAD"].ToString()))
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se ha seleccionado la entidad bancaria, ni el número de cuenta, vuelva a la opción de exámenes y complete el proceso. Verifique por favor.", Proceso.Advertencia);
                    num_Cuenta = null;
                    id_entidad_Bancaria = 0;
                }
                else
                {
                    id_entidad_Bancaria = Convert.ToInt32(filaSolicitud["ID_ENTIDAD"].ToString());
                    num_Cuenta = filaSolicitud["NUM_CUENTA"].ToString();
                    tipoCuenta = filaSolicitud["TIPO_CUENTA"].ToString();
                }
            }

            salario = Convert.ToDecimal(TextBox_Salario.Text);
            salInt = DropDownList_Salario_integral.SelectedValue.ToString();
            if (DropDownList_tipo_Contrato.SelectedValue.Equals("PR"))
            {
                pago_Dias_Productividad = "S";
                valor_contrato = Convert.ToDecimal(TextBox_Salario.Text);
                valor_nomina = Convert.ToDecimal(TextBox_Salario.Text);
            }

            periodo_pago = DropDownList_PERIODO_PAGO.SelectedValue.ToString();

            fecha_inicio_periodo = fechaInicio;
            fecha_fin_periodo = fechaFinal;

            registroContrato contrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

            DataTable tablaContratosExistentes = contrato.ObtenerNomEmpleadoPorIDSolicitudYFechaIngreso(id_solicitud, fechaInicio);

            if (tablaContratosExistentes.Rows.Count <= 0)
            {
                String datosG = contrato.ElaborarContrato(id_requerimiento,
                        id_solicitud,
                        id_empresa,
                        Convert.ToInt32(centroCosto),
                        Convert.ToInt32(SubCentroCosto),
                        Ciudad,
                        ID_SERVICIO_RESPECTIVO,
                        Convert.ToInt32(servicio),
                        Convert.ToInt32(ARP),
                        Convert.ToInt32(CCF),
                        Convert.ToInt32(EPS),
                        Convert.ToInt32(AFP),
                        Convert.ToDecimal(riesgo),
                        pensionado,
                        clase_Contrato,
                        tipo_Contrato,
                        "C",
                        fechaInicio,
                        fechaFinal,
                        salInt,
                        salario,
                        "S",
                        "S",
                        "N",
                        "N",
                        id_entidad_Bancaria,
                        num_Cuenta,
                        formaPago,
                        pago_Dias_Productividad,
                        sena_productivo,
                        sena_electivo,
                        practicante_Universitario,
                        valor_contrato,
                        valor_nomina,
                        fecha_inicio_periodo,
                        fecha_fin_periodo,
                        periodo_pago,
                        tipoCuenta,
                        DropDownList_DESCRIPCION_SALARIO.SelectedValue.ToString(),
                        Convert.ToDecimal(HiddenField_ID_PERFIL.Value));

                if (!(String.IsNullOrEmpty(contrato.MensajeError)))
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El empleado no fue creado, " + contrato.MensajeError, Proceso.Error);
                }
                else
                {
                    String[] d = datosG.Split(',');
                    HiddenField_ID_CONTRATO.Value = d[0];
                    HiddenField_persona.Value = id_solicitud + "," + id_requerimiento + "," + datos[2] + "," + datos[3] + "," + datos[4] + "," + datosG;

                    Clausula clausula = new Clausula(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                    Cargar(clausula.ObtenerContratacionPorIdEmpleado(Convert.ToDecimal(d[1])), GridView_clausulas);
                    HiddenField_ID_EMPLEADO.Value = d[1].ToString();
                    cargar_menu_botones_modulos_internos(false);

                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El empleado y el contrato fueron creados con exito: " + datosG, Proceso.Correcto);
                }

                configurarBotonesDeAccion(true, true, true, true);

                Panel_Informacion_Contrato.Enabled = false;
            }
            else
            {
                DataRow filaContratos = tablaContratosExistentes.Rows[0];

                String datosG = filaContratos["ID_CONTRATO"].ToString() + "," + filaContratos["ID_EMPLEADO"].ToString();
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El Trabajador ya tiene un contrato activo con la misma fecha de ingreso. Los datos del contrato son: " + datosG, Proceso.Correcto);
            }
        }
        catch (Exception err)
        {
            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, err.Message, Proceso.Error);
        }
    }
    private void CargarInterfazCOIdEspecifico(Decimal ID_SOLICITUD)
    {
        radicacionHojasDeVida _rad = new radicacionHojasDeVida(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        DataTable tablaSolicitud = _rad.ObtenerRegSolicitudesingresoPorIdSolicitud(Convert.ToInt32(ID_SOLICITUD));

        if (tablaSolicitud.Rows.Count <= 0)
        {
            Ocultar(Acciones.Inicio);
            Mostrar(Acciones.Inicio);
            Cargar(Acciones.Inicio);

            Informar(Panel_MENSAJES, Label_MENSAJE, "No se encontró información de la Solicitud de Ingreso seleccionada.", Proceso.Error);
        }
        else
        {
            DataRow filaSolicitud = tablaSolicitud.Rows[0];

            String NOMBRE_PERSONA_SELECCIONADA = filaSolicitud["NOMBRES"].ToString().Trim() + " " + filaSolicitud["APELLIDOS"].ToString().Trim();
            String NUM_DOCUMENTO_PERSONA_SELECCIONADA = filaSolicitud["TIP_DOC_IDENTIDAD"].ToString().Trim() + " " + filaSolicitud["NUM_DOC_IDENTIDAD"].ToString().Trim();
            String MAIL_PERSONA_SELECCIONADA = filaSolicitud["E_MAIL"].ToString().Trim();
            String DIRECCION_PERSONA_SELECCIONADA = filaSolicitud["DIR_ASPIRANTE"].ToString().Trim();
            String TELEFONO_PERSONA_SELECCIONADA = filaSolicitud["TEL_ASPIRANTE"].ToString().Trim();

            registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
            DataTable tablaContratos = _registroContrato.ObtenerContratosPorIdSolicitud(ID_SOLICITUD);

            cargar_datos_persona_seleccionada(ID_SOLICITUD, NOMBRE_PERSONA_SELECCIONADA, NUM_DOCUMENTO_PERSONA_SELECCIONADA, MAIL_PERSONA_SELECCIONADA, DIRECCION_PERSONA_SELECCIONADA, TELEFONO_PERSONA_SELECCIONADA);

            Ocultar(Acciones.Inicio);

            if (tablaContratos.Rows.Count <= 0)
            {
                if (_registroContrato.MensajeError == null)
                {
                    Mostrar(Acciones.sinContratos);
                    Informar(Panel_MENSAJES, Label_MENSAJE, "No se encontraron contratos asociados a la persona seleccionada.", Proceso.Error);
                }
                else
                {
                    Mostrar(Acciones.sinContratos);
                    Informar(Panel_MENSAJES, Label_MENSAJE, _registroContrato.MensajeError, Proceso.Error);
                }
            }
            else
            {
                Mostrar(Acciones.cargarContratos);
                Cargar(tablaContratos);
            }
        }
    }
    protected void Button_Guardar_Click(object sender, EventArgs e)
    {
        EntregaServicioComplementario _entregas = new EntregaServicioComplementario(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        String idEntrega = null;
        String talla = null;
        DropDownList dropTalla;
        TextBox CantidadaEntregar;
        DataTable tablaConfigurados = new DataTable();
        tablaConfigurados.Columns.Add("ID_PRODUCTO");
        tablaConfigurados.Columns.Add("CANTIDAD_A_ENTREGAR");
        tablaConfigurados.Columns.Add("TALLA");

        DataTable tablaLotes = new DataTable();
        tablaLotes.Columns.Add("ID_PRODUCTO");
        tablaLotes.Columns.Add("ID_LOTE");
        tablaLotes.Columns.Add("TALLA");
        tablaLotes.Columns.Add("CONTENIDO_LOTE");
        tablaLotes.Columns.Add("CANTIDAD_CONFIGURADA");

        String[] datos = HiddenField_persona.Value.Split(',');
        int empleado = Convert.ToInt32(datos[6].ToString());
        int id_producto;
        int id_lote;
        int ContenidoLote;
        int cantidadConf;
        DateTime fecha = System.DateTime.Today;

        for (int i = 0; i < GridView_Entregas_Configurados.Rows.Count; i++)
        {
            id_producto = Convert.ToInt32(GridView_Entregas_Configurados.DataKeys[i].Values["ID_PRODUCTO"].ToString());
            dropTalla = GridView_Entregas_Configurados.Rows[i].FindControl("DropDownList_Talla") as DropDownList;
            CantidadaEntregar = GridView_Entregas_Configurados.Rows[i].FindControl("TextBox_Cantidad") as TextBox;

            DataRow productosConfigurados = tablaConfigurados.NewRow();

            productosConfigurados[0] = id_producto;
            productosConfigurados[1] = CantidadaEntregar.Text;
            productosConfigurados[2] = dropTalla.SelectedValue;

            tablaConfigurados.Rows.Add(productosConfigurados);

        }
        for (int i = 0; i < GridView_lotes.Rows.Count; i++)
        {
            id_producto = Convert.ToInt32(GridView_lotes.DataKeys[i].Values["ID_PRODUCTO"].ToString());
            id_lote = Convert.ToInt32(GridView_lotes.DataKeys[i].Values["ID_LOTE"].ToString());
            talla = GridView_lotes.Rows[i].Cells[3].Text;
            ContenidoLote = Convert.ToInt32(GridView_lotes.Rows[i].Cells[2].Text);
            cantidadConf = Convert.ToInt32(GridView_lotes.Rows[i].Cells[4].Text);

            DataRow lotesDisponibles = tablaLotes.NewRow();

            lotesDisponibles[0] = id_producto;
            lotesDisponibles[1] = id_lote;
            lotesDisponibles[2] = talla;
            lotesDisponibles[3] = ContenidoLote;
            lotesDisponibles[4] = cantidadConf;

            tablaLotes.Rows.Add(lotesDisponibles);
        }
        if (HiddenField_idBodega.Value.Equals(""))
        {
            Label_MENSAJE_Entregas.Text = "ADVERTENCIA: No se tiene bodega. Verifique con el administrador";
            configurarMensajes(true, System.Drawing.Color.Red, Label_MENSAJE_Entregas, Panel_MENSAJE_Entregas);
        }
        else
        {

            int idbodega = Convert.ToInt32(HiddenField_idBodega.Value);
            String faltantes = HiddenField_Faltantes.Value;
            idEntrega = _entregas.adicionarEntregas(empleado, fecha, idbodega, tablaConfigurados, tablaLotes, datos, faltantes);

            HiddenField_idEntrega.Value = idEntrega;

            if (idEntrega.Equals(""))
            {
                Label_MENSAJE_Entregas.Text = "ADVERTENCIA: No se almaceno correctamente la entrega. Verifique por favor" + _entregas.MensajeError;
                configurarMensajes(true, System.Drawing.Color.Red, Label_MENSAJE_Entregas, Panel_MENSAJE_Entregas);
            }
            else
            {
                Panel_Entregas_configurados.Enabled = false;
                registroContrato _contrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                SecureQueryString QueryStringSeguro;
                tools _tools = new tools();
                QueryStringSeguro = new SecureQueryString(_tools.byteParaQueryStringSeguro(), Request["data"]);
                String persona = QueryStringSeguro["persona"].ToString();
                String[] datosEmpleado = persona.Split(',');
                radicacionHojasDeVida _solIngreso = new radicacionHojasDeVida(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

                _solIngreso.ActualizarEstadoProcesoRegSolicitudesIngreso(Convert.ToInt32(datosEmpleado[1]), Convert.ToInt32(datosEmpleado[0]), "CONTRATADO", Session["USU_LOG"].ToString());

                Label_MENSAJE_Entregas.Text = "La entrega se almacenó correctamente. Número entrega: " + idEntrega;
                configurarMensajes(true, System.Drawing.Color.Green, Label_MENSAJE_Entregas, Panel_MENSAJE_Entregas);
                activarEmpleado();
            }
        }
    }
    private void carar_seccion_afiliaciones(Decimal ID_SOLICITUD, Decimal ID_REQUERIMIENTO, Decimal ID_EMPLEADO)
    {
        registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaInfoContrato = _registroContrato.obtenerInfoNomEmpleadoPorIdSolicitudIdRequerimiento(ID_SOLICITUD, ID_REQUERIMIENTO, ID_EMPLEADO);

        DataRow filaInfoContrato = tablaInfoContrato.Rows[0];

        Decimal ID_AFILIACION_ARP = Convert.ToDecimal(filaInfoContrato["ID_ARP"]);

        Decimal ID_AFILIACION_CAJA_C = 0;
        try
        {
            ID_AFILIACION_CAJA_C = Convert.ToDecimal(filaInfoContrato["ID_CAJA_C"]);
        }
        catch
        {
            ID_AFILIACION_CAJA_C = 0;
        }

        Decimal ID_AFILIACION_EPS = Convert.ToDecimal(filaInfoContrato["ID_EPS"]);
        Decimal ID_AFILIACION_F_PENSIONES = Convert.ToDecimal(filaInfoContrato["ID_F_PENSIONES"]);

        cargar_arp(ID_AFILIACION_ARP, ID_SOLICITUD, ID_EMPLEADO);

        cargar_eps(ID_AFILIACION_EPS, ID_SOLICITUD, ID_EMPLEADO);

        cargar_caja(ID_AFILIACION_CAJA_C, ID_SOLICITUD, ID_EMPLEADO);

        cargar_afp(ID_AFILIACION_F_PENSIONES, ID_SOLICITUD, ID_EMPLEADO);
    }