Beispiel #1
0
    protected void btnEnviarSinAplicar_Click(object sender, System.EventArgs e)
    {
        AdministrarCertificados objAdministrarCertificados = new AdministrarCertificados();
        DataTable dtCertificados = new DataTable();
        DataTable dtNovedad      = new DataTable();
        DataTable dtNovedades    = new DataTable();
        double    valor          = 0;
        string    cedulaNovedad  = "";

        try
        {
            //Pregunta si ya se encuentra un id y un causal seleccionado
            if (txtIdNovedad.Text != "" && ddlSinAplicar.SelectedValue.ToString() != "")
            {
                //se pasa la novedad de retiro del mismo tercero a sin aplicar
                int localidad = (Session["localidad"].ToString() == "") ? 0 : int.Parse(Session["localidad"].ToString());
                //Lista las novedades pendientes segun los parametros enviados
                DataTable dt = AdministrarNovedades.ConsultarNovedadesArchivoEnviada(localidad, 0, 0, 1, 1);
                //Recorre el dt con las novedades pendientes
                foreach (DataRow row in dt.Rows)
                {
                    //entra solo si el id que se esta recorriendo es igual al cargado en el txt
                    if (row["Id"].ToString() == txtIdNovedad.Text)
                    {
                        //asigna en una variable la cedula
                        cedulaNovedad = row["Documento"].ToString();
                    }
                }
                foreach (DataRow row in dt.Rows)
                {
                    /*Pregunta si el documento que se esta recorriendo es igual a la cedula del registro pendiente por
                     *  por enviar a sin aplicar y si el tipo de novedad es retiro */
                    if (row["Documento"].ToString() == cedulaNovedad && row["Tipo Novedad"].ToString() == "RETIRO")
                    {
                        //Se ammarra este retiro y se envia a sin aplicar al igual que el anterior
                        AdministrarNovedades.ActualizarDePendienteASinAplicar(int.Parse(row["Id"].ToString()), 0, ddlSinAplicar.SelectedValue.ToString());
                    }
                }

                //Se envia novedad a sin aplicar
                AdministrarNovedades.ActualizarDePendienteASinAplicar(int.Parse(txtIdNovedad.Text), 0, ddlSinAplicar.SelectedValue.ToString());

                //Se consulta la novedad enviada a sin aplicar
                dtNovedad = AdministrarNovedades.ConsultarNovedadPorTercero("0", "0", "0", txtIdNovedad.Text);
                if (dtNovedad.Rows.Count != 0)
                {
                    //Se asigna a variable el valor de la novedad
                    valor = double.Parse(dtNovedad.Rows[0]["nov_Valor"].ToString());
                    //Consulta certificados por los cuales posiblemente se genero la novedad enviada a sin aplicar
                    dtCertificados = AdministrarNovedades.ConsultarCertificadoPorPagaduriaArchivo(dtNovedad.Rows[0]["ter_Id"].ToString(), dtNovedad.Rows[0]["arcpag_Id"].ToString(), txtIdNovedad.Text);
                    //Se consulta la novedad enviada a sin aplicar
                    dtNovedades = AdministrarNovedades.ConsultarNovedadPorTercero(dtNovedad.Rows[0]["ter_Id"].ToString(), dtNovedad.Rows[0]["arcpag_Id"].ToString(), "2", "0");
                    if (dtNovedades.Rows.Count != 0)
                    {
                        valor -= double.Parse(dtNovedades.Rows[0]["nov_Valor"].ToString());
                    }

                    int i = 0;
                    //Envia los certificados consultados a no aplicar hasta que el valor se reduzca a 0
                    while (valor > 0 && i < dtCertificados.Rows.Count)
                    {
                        valor -= double.Parse(dtCertificados.Rows[i]["cer_PrimaTotal"].ToString());
                        objAdministrarCertificados.ActualizarEstadoNegocioDevolucion("NO APLICO", int.Parse(dtCertificados.Rows[i]["cer_Id"].ToString()));
                        i++;
                    }
                }
                ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "alert", "alert('" + "Novedades pendiente enviada a sin aplicar" + "');", true);
                ddlAnio_SelectedIndexChanged(sender, e);
            }
        }
        catch
        {
            ClientScript.RegisterStartupScript(GetType(), "alert", "alert('" + "HA OCURRIDO UN ERROR AL TRATA DE ENVIAR LA NOVEDAD A SIN APLICAR" + "');", true);
        }
    }
Beispiel #2
0
    public void RealizarReversion(DataTable dtInformacionCertificado)
    {
        DAOPagos  objPagos = new DAOPagos();
        DataTable dtConsultarInformacionAnteriorPagosReversion = new DataTable();
        DataTable dtBorradoDeDatos = new DataTable();

        //Consultar las aplicaciones de los clientes que van para reversion, las cuales son mayores al inicio de vigencia del certificado
        dtConsultarInformacionAnteriorPagosReversion = ConsultarInformacionAnteriorPagosReversion(double.Parse(dtInformacionCertificado.Rows[0]["Cedula"].ToString()), DateTime.Parse(dtInformacionCertificado.Rows[0]["cer_VigenciaDesde"].ToString()), double.Parse(dtInformacionCertificado.Rows[0]["Producto"].ToString()));

        DataTable dtCertificadoAnterior = new DataTable();

        //Pregunta si el certificado que se esta recorriendo ya posee un certificado anterior
        if (dtInformacionCertificado.Rows[0]["cer_IdAnterior"].ToString() != "")
        {
            //Consulta el certificado con el cer_Id que se envie como parametro
            dtCertificadoAnterior = objPagos.ConsultarCertificado(double.Parse(dtInformacionCertificado.Rows[0]["cer_IdAnterior"].ToString()));
        }

        //Actualiza el estado de negocio del certificado recorrido a "NO APLICO"
        objPagos.ActualizarEstadoNegocioDevolucion("NO APLICO", double.Parse(dtInformacionCertificado.Rows[0]["cer_Id"].ToString()));

        //------------------------------------
        //Actualiza la novedad a no aplico nov_Estado = 0
        AdministrarCertificados objAdministrarCertificados = new AdministrarCertificados();
        AdministrarNovedades    objAdministrarNovedades    = new AdministrarNovedades();
        DataTable dtArchivo = new DataTable();

        dtArchivo = objAdministrarCertificados.ConsultarIdArchivo(int.Parse(dtInformacionCertificado.Rows[0]["Producto"].ToString()), int.Parse(dtInformacionCertificado.Rows[0]["convenio"].ToString()));
        DataTable dtNovedadActual = new DataTable();

        dtNovedadActual = objAdministrarCertificados.ConsultarNovedadActual(int.Parse(dtInformacionCertificado.Rows[0]["Cedula"].ToString()), int.Parse(dtArchivo.Rows[0]["arcpag_Id"].ToString()), 0);
        if (dtNovedadActual.Rows.Count != 0)
        {
            AdministrarNovedades.ActualizarDePendienteASinAplicar(int.Parse(dtNovedadActual.Rows[0]["nov_Id"].ToString()), 0, "1");
        }
        //-------------------------------------

        //Pregunta si el certificado que se esta recorriendo ya posee un certificado anterior
        if (dtInformacionCertificado.Rows[0]["cer_IdAnterior"].ToString() != "")
        {
            //Si posee un certificado anterior se pasara a "VIGENTE", con el fin de que este vuelva a activarse, ya que el actual se actualizo a "NO APLICO"
            objPagos.ActualizarEstadoNegocioDevolucion("VIGENTE", double.Parse(dtInformacionCertificado.Rows[0]["cer_IdAnterior"].ToString()));
            //Crea novedad
            //SI TENIA CERTIFICADO ANTERIOR DUPLICAR LA ULTIMA NOVEDAD APLICADA Y PONER EN DEV_ESTADO=1 Y ENVIADA=0
            if (dtNovedadActual.Rows.Count != 0)
            {
                DataTable dtNovedadAnterior = AdministrarNovedades.ConsultarNovedadPorTercero("0", "0", "0", dtNovedadActual.Rows[0]["nov_Id"].ToString());
                AdministrarNovedades.InsertarNovedades(int.Parse(dtNovedadActual.Rows[0]["Cedula"].ToString()), dtNovedadActual.Rows[0]["TipoNovedad"].ToString(), 1, int.Parse(dtNovedadActual.Rows[0]["Pagaduria"].ToString()), int.Parse(dtNovedadActual.Rows[0]["Convenio"].ToString()), int.Parse(dtNovedadActual.Rows[0]["Archivo"].ToString()), int.Parse(dtNovedadActual.Rows[0]["Valor"].ToString()), 0, int.Parse(dtNovedadAnterior.Rows[0]["nov_Mes"].ToString()), int.Parse(dtNovedadAnterior.Rows[0]["nov_Anio"].ToString()));
            }
        }
        else
        {
            //Crea novedad de retiro
            //SI NO TIENE CERTIFICADO ANTERIOR CREAR UNA NOVEDAD DE RETIRO
            if (dtNovedadActual.Rows.Count != 0)
            {
                DataTable dtNovedadAnterior = AdministrarNovedades.ConsultarNovedadPorTercero("0", "0", "0", dtNovedadActual.Rows[0]["nov_Id"].ToString());
                AdministrarNovedades.InsertarNovedades(int.Parse(dtNovedadAnterior.Rows[0]["ter_Id"].ToString()), "R", 1, int.Parse(dtNovedadAnterior.Rows[0]["paga_Id"].ToString()), int.Parse(dtNovedadAnterior.Rows[0]["con_Id"].ToString()), int.Parse(dtNovedadAnterior.Rows[0]["arcpag_Id"].ToString()), 0, 0, int.Parse(dtNovedadAnterior.Rows[0]["nov_Mes"].ToString()), int.Parse(dtNovedadAnterior.Rows[0]["nov_Anio"].ToString()));
            }
        }

        /*Pregunta si el tipo movimiento es un ingreso y si es diferente de coversión, todo esto con el fin de*/
        if (int.Parse(dtInformacionCertificado.Rows[0]["TipoMovimiento"].ToString()) == 53 && int.Parse(dtInformacionCertificado.Rows[0]["casesp_Id"].ToString()) != 2)
        {
            //Pregunta si el certificado nuevo ya tenia algun pago
            if (dtConsultarInformacionAnteriorPagosReversion.Rows.Count > 0)
            {
                //Recorre el foreach para actualizar las aplicaciones realizadas a devolución de prima
                foreach (DataRow dt in dtConsultarInformacionAnteriorPagosReversion.Rows)
                {
                    //Actualizar aplicaciones a devolución segun su pago_Id enviado como parametro
                    objPagos.ActualizarDepIdParaReversion(double.Parse(dt["aplPago_Id"].ToString()), 1);
                }
            }
        }
        else
        {
            //Recorre el dt con los pagos que van para reversión
            foreach (DataRow dt in dtConsultarInformacionAnteriorPagosReversion.Rows)
            {
                //Actualiza las aplicaciones necesarias al estado reversión
                objPagos.ActualizarReversionYBorradoDeAplicacion(double.Parse(dt["aplPago_Id"].ToString()), 0);
            }

            int recorre = 0;
            //Recorre el dt con todos los pagos mayores al inicio de vigencia
            foreach (DataRow dt in dtConsultarInformacionAnteriorPagosReversion.Rows)
            {
                //if (recorre == 0)
                //{
                //Consulta las aplicaciones que hay por cada uno de los pagos mayores al inicio de vigencia
                DataTable dtConsultarInformacionAnteriorPagosReversionPagoId = new DataTable();
                dtConsultarInformacionAnteriorPagosReversionPagoId = objPagos.ConsultarInformacionAnteriorPagosReversionPagoId(double.Parse(dtInformacionCertificado.Rows[0]["Cedula"].ToString()), DateTime.Parse(dtInformacionCertificado.Rows[0]["cer_VigenciaDesde"].ToString()), double.Parse(dtInformacionCertificado.Rows[0]["Producto"].ToString()), double.Parse(dt["pago_Id"].ToString()));

                /*Llena dt con la misma informacion de dtConsultarInformacionAnteriorPagosReversionPagoId, todo esto con el fin de realizar
                 * una funcionalidad diferente */
                dtBorradoDeDatos = dtConsultarInformacionAnteriorPagosReversionPagoId;

                //Crea variable y la iguala a 0
                double pagos = 0;

                //Recorre el dt con cada unas de las aplicaciones realizadas por pago
                foreach (DataRow dt2 in dtConsultarInformacionAnteriorPagosReversionPagoId.Rows)
                {
                    //Suma los valores de estas aplicaciones
                    pagos += int.Parse(dt2["aplPago_Valor"].ToString());
                }
                try
                {
                    //Recorre el while siempre y cuando el pago aun tenga un valor mayor a 0
                    while (pagos > 0)
                    {
                        DataTable dtProductoARealizarPago = new DataTable();
                        double    valorAplicar            = 0;
                        //Pregunta si ya posee un certificado anterior
                        if (dtCertificadoAnterior.Rows.Count > 0)
                        {
                            //Consulta el producto al cual se le debe hacer la reversión y se le envia el producto de su certificado anterior
                            objPagos.ActualizarConvenioCertificado(double.Parse(dtInformacionCertificado.Rows[0]["cer_IdAnterior"].ToString()), double.Parse(dtInformacionCertificado.Rows[0]["Convenio"].ToString()));
                            dtProductoARealizarPago = objPagos.ConsultarProductoParaPagoReversion(double.Parse(dtInformacionCertificado.Rows[0]["Cedula"].ToString()), int.Parse(dtInformacionCertificado.Rows[0]["Convenio"].ToString()), double.Parse(dtCertificadoAnterior.Rows[0]["pro_Id"].ToString()));
                        }
                        else
                        {
                            //Consulta el producto al cual se le debe hacer la reversión y se le envia el producto de su certificado actual
                            dtProductoARealizarPago = objPagos.ConsultarProductoParaPagoReversion(double.Parse(dtInformacionCertificado.Rows[0]["Cedula"].ToString()), int.Parse(dtInformacionCertificado.Rows[0]["Convenio"].ToString()), double.Parse(dtInformacionCertificado.Rows[0]["Producto"].ToString()));
                        }
                        if (double.Parse(dtProductoARealizarPago.Rows[0]["VALOR APLICAR"].ToString()) > 0)
                        {
                            //Asigna en una variable el valor que se debe aplicar, traido desde dtProductoARealizarPago
                            valorAplicar = double.Parse(dtProductoARealizarPago.Rows[0]["VALOR APLICAR"].ToString());
                            //pregunta si el pago es menor a lo que se le debe pagar, en caso de ser asi el valor a aplicar es igual a la variable pago
                            if (pagos < double.Parse(dtProductoARealizarPago.Rows[0]["VALOR APLICAR"].ToString()))
                            {
                                valorAplicar = pagos;
                            }
                            //Pregunta si el certificado que se esta recorriendo es un caso de conversion
                            if (int.Parse(dtInformacionCertificado.Rows[0]["casesp_Id"].ToString()) == 2)
                            {
                                //Ingresa la aplicacion y le asigna a esta el mismo rec_Id del certificado anterior
                                this.IngresarAplicacionPagoCliente(double.Parse(dtInformacionCertificado.Rows[0]["Cedula"].ToString()), int.Parse(dt["pago_Id"].ToString()), int.Parse(dtProductoARealizarPago.Rows[0]["pro_Id"].ToString()),
                                                                   Convert.ToDateTime(dtProductoARealizarPago.Rows[0]["VIGENCIA APLICAR"].ToString()), 0, valorAplicar, int.Parse(dtInformacionCertificado.Rows[0]["Convenio"].ToString()), 1, double.Parse(dtConsultarInformacionAnteriorPagosReversionPagoId.Rows[0]["pago_Recibo"].ToString()), double.Parse(dtProductoARealizarPago.Rows[0]["CER_ID"].ToString()));
                            }
                            else
                            {
                                //Ingresa la aplicacion y le asigna a esta el rec_Id calculado por el sistema
                                this.IngresarAplicacionPagoCliente(double.Parse(dtInformacionCertificado.Rows[0]["Cedula"].ToString()), int.Parse(dt["pago_Id"].ToString()), int.Parse(dtProductoARealizarPago.Rows[0]["pro_Id"].ToString()),
                                                                   Convert.ToDateTime(dtProductoARealizarPago.Rows[0]["VIGENCIA APLICAR"].ToString()), 0, valorAplicar, int.Parse(dtInformacionCertificado.Rows[0]["Convenio"].ToString()), 0, double.Parse(dtConsultarInformacionAnteriorPagosReversionPagoId.Rows[0]["pago_Recibo"].ToString()), double.Parse(dtProductoARealizarPago.Rows[0]["CER_ID"].ToString()));
                            }

                            //Le resta a la variable pago, el valor que se aplico anteriormente
                            pagos -= double.Parse(dtProductoARealizarPago.Rows[0]["VALOR APLICAR"].ToString());
                        }
                        else
                        {
                            valorAplicar = pagos;

                            //Ingresa la aplicacion y le asigna a esta el rec_Id calculado por el sistema
                            this.IngresarAplicacionPagoCliente(double.Parse(dtInformacionCertificado.Rows[0]["Cedula"].ToString()), int.Parse(dt["pago_Id"].ToString()), int.Parse(dtInformacionCertificado.Rows[0]["Producto"].ToString()),
                                                               DateTime.Today, 1, valorAplicar, int.Parse(dtInformacionCertificado.Rows[0]["Convenio"].ToString()), 0, double.Parse(dtConsultarInformacionAnteriorPagosReversionPagoId.Rows[0]["pago_Recibo"].ToString()), double.Parse(dtInformacionCertificado.Rows[0]["cer_Id"].ToString()));

                            //Le resta a la variable pago, el valor que se aplico anteriormente
                            pagos -= valorAplicar;
                        }
                    }
                }
                catch
                {
                }

                /*Recorre el dtBorradoDeDatos que es igual a dtConsultarInformacionAnteriorPagosReversionPagoId, esto con el fin
                 * de eliminar las aplicaciones ya que no son requeridas luego de realizar toda la funcionalidad anterior*/

                foreach (DataRow dt3 in dtBorradoDeDatos.Rows)
                {
                    //Borra las aplicaciones correspondientes luego de realizar la funcionalidad anterior
                    objPagos.ActualizarReversionYBorradoDeAplicacion(double.Parse(dt3["aplPago_Id"].ToString()), 1);
                    recorre = 1;
                }
                //}
            }
        }
    }