Exemplo n.º 1
0
    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);
            }
        }
    }