protected void grvConveniosReestructuracion_RowCommand(object sender, GridViewCommandEventArgs e) { // obtener el id de la fila seleccionada int index = int.Parse(e.CommandArgument.ToString()); DataTable dtEnviarInformacion = new DataTable(); GridViewRow row = grvConveniosReestructuracion.Rows[(index)]; if (e.CommandName == "Consultar_Click") { //Asigna a una variable el codigo solicitado int id = int.Parse(row.Cells[1].Text); //ConsultarCertificados con posibles reestructuraciones DataTable dtConsultarCertificadoReversion = new DataTable(); dtConsultarCertificadoReversion = objPago.ConsultarCertificadoReversionConsulta(int.Parse(id.ToString())); //Clona el dt que se esta recorriendo, todo esto con el fin de importar a un nuevo dt la fila requerida dtEnviarInformacion = dtConsultarCertificadoReversion.Clone(); //Pregunta si hay posibles devoluciones if (dtConsultarCertificadoReversion.Rows.Count > 0) { foreach (DataRow dt in dtConsultarCertificadoReversion.Rows) { //Consulta las aplicaciones que fueron mayores o iguales al inicio de vigencia del certificado y las trae agrupadas por valor DataTable dtConsultarUltimoPagoParaReversion = new DataTable(); dtConsultarUltimoPagoParaReversion = objPago.ConsultarUltimoPagoParaReversion(double.Parse(dt["Cedula"].ToString()), DateTime.Parse(dt["Inicio de vigencia"].ToString()), double.Parse(dt["pro_Id"].ToString())); //Pregunta si el cliente tuvo algun pago luego o igual al inicio del certificado if (dtConsultarUltimoPagoParaReversion.Rows.Count > 0) { //Crea una marca para saber si ya no es necesario seguir recorriendo el foreach, ya que ya se encontro lo necesario para realizar una devolución int reversion = 0; //Recorre el dt con los pagos agrupados foreach (DataRow dt2 in dtConsultarUltimoPagoParaReversion.Rows) { /*Pregunta si la totalidad de los pagos traidos en cada una de las filas es igual a la prima del certificado * y si la bandera aun esta en 0, si es igual o mayor la totalidad de los pagos quiere decir que no es una reversión*/ if (double.Parse(dt2["pagoMes"].ToString()) < double.Parse(dt["Prima"].ToString()) && reversion == 0) { dtEnviarInformacion.ImportRow(dt); //marca la bandera para no realizar este proceso por un mismo certificado reversion = 1; } } } else { dtEnviarInformacion.ImportRow(dt); } } //Asigna a un Grv la información con posibles reestructuraciones grvAplicacionesPorConvenio.DataSource = dtEnviarInformacion; grvAplicacionesPorConvenio.DataBind(); lblNombreConvenio.Text = row.Cells[2].Text; h5CertificadosConvenios.Visible = true; } else { ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "alert", "alert('" + "ESTE CONVENIO NO TIENE CERTIFICADOS PENDIENTES PARA REVERSIÓN" + "');", true); } } }