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