protected void btnReestructurar_Click(object sender, EventArgs e) { //Si el convenio es diferente de vacio, de lo contrario mostrara un mensaje que dira seleccionar convenio. if (ddlConvenio.SelectedValue.ToString() != "") { AdministrarCertificados objAdministrarCertificados = new AdministrarCertificados(); DataTable dtEnviarInformacion = new DataTable(); //ConsultarCertificados con posibles devoluciones DataTable dtConsultarCertificadoReversion = new DataTable(); dtConsultarCertificadoReversion = objPago.ConsultarCertificadoReversion(int.Parse(ddlConvenio.SelectedValue.ToString())); // Pregunta si hay posibles certificados para reversión if (dtConsultarCertificadoReversion.Rows.Count > 0) { //Recorre el dt con las posibles reversiones foreach (DataRow dt in dtConsultarCertificadoReversion.Rows) { ////Consulta archivo pagaduria //DataTable dtArchivo = new DataTable(); //dtArchivo = objAdministrarCertificados.ConsultarIdArchivo(int.Parse(dtConsultarCertificadoReversion.Rows[0]["Producto"].ToString()), int.Parse(ddlConvenio.SelectedValue.ToString())); //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["cer_VigenciaDesde"].ToString()), double.Parse(dt["Producto"].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) { //Clona el dt que se esta recorriendo, todo esto con el fin de importar a un nuevo dt la fila requerida dtEnviarInformacion = dtConsultarCertificadoReversion.Clone(); dtEnviarInformacion.ImportRow(dt); //envia la información necesaria para realizar una reversión objPago.RealizarReversion(dtEnviarInformacion); //marca la bandera para no realizar este proceso por un mismo certificado reversion = 1; } } } else { //Clona la final la cual no tiene pago pero igual seguira siendo una reversión dtEnviarInformacion = dtConsultarCertificadoReversion.Clone(); dtEnviarInformacion.ImportRow(dt); //envia la información necesaria para realizar una reversión objPago.RealizarReversion(dtEnviarInformacion); } //Actualiza la fecha de reestructuración y marca, con el fin de saber si este proceso se realizo manual o automaticamente DataTable dtActualizarFechaYMarcarReestructuracion = new DataTable(); dtActualizarFechaYMarcarReestructuracion = objPago.ActualizarFechaYMarcarReestructuracion(double.Parse(dt["Convenio"].ToString()), 0); } } else { ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "alert", "alert('" + "ESTE CONVENIO NO TIENE CERTIFICADOS PENDIENTES PARA REVERSIÓN" + "');", true); } } else { ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "alert", "alert('" + "Seleccione EL CONVENIO POR FAVOR" + "');", true); } }