Пример #1
0
        public void ComoTexto_FechaYConsecutivo_CodigoDeReferenciaCorrecto()
        {
            elResultadoEsperado = "20160303022058888888888887";

            losDatos             = new DatosParaLaInversionConTratamiento();
            losDatos.FechaActual = new DateTime(2016, 3, 3);
            losDatos.ConsecutivoParaElCodigoDeReferencia = "888888888888";

            elResultadoObtenido = new CodigoDeReferenciaParaInversion(losDatos).ComoTexto();

            Assert.AreEqual(elResultadoEsperado, elResultadoObtenido);
        }
Пример #2
0
        public void ComoNumero_DatosCorrectos_RendimientoPorDescuentoCorrecto()
        {
            elResultadoEsperado = 21621.6216;

            losDatos                    = new DatosParaLaInversionConTratamiento();
            losDatos.ValorFacial        = 320000;
            losDatos.ValorTransadoNeto  = 300000;
            losDatos.TasaDeImpuesto     = 0.08;
            losDatos.FechaActual        = new DateTime(2016, 3, 3);
            losDatos.FechaDeVencimiento = new DateTime(2016, 10, 10);

            elResultadoObtenido = new RendimientoPorDescuentoConTratamiento(losDatos).ComoNumero();

            Assert.AreEqual(elResultadoEsperado, elResultadoObtenido, 0.0001);
        }
Пример #3
0
        public void GenereUnaNuevaInversion_CodigoDeReferencia()
        {
            elResultadoEsperado = "20160303022058888888888887";

            losDatos                    = new DatosParaLaInversionConTratamiento();
            losDatos.ValorFacial        = 320000;
            losDatos.ValorTransadoNeto  = 300000;
            losDatos.TasaDeImpuesto     = 0.08;
            losDatos.FechaActual        = new DateTime(2016, 3, 3);
            losDatos.FechaDeVencimiento = new DateTime(2016, 10, 10);
            losDatos.ConsecutivoParaElCodigoDeReferencia = "888888888888";
            laInversion = new Inversion(losDatos);

            elResultadoObtenido = laInversion.CodigoDeReferencia;

            Assert.AreEqual(elResultadoEsperado, elResultadoObtenido);
        }
Пример #4
0
        public void GenereUnaNuevaInversion_TasaBruta()
        {
            elResultadoEsperado = 12.0008;

            losDatos                        = new DatosParaLaInversionConTratamiento();
            losDatos.ValorFacial            = 320000;
            losDatos.ValorTransadoNeto      = 300000;
            losDatos.TasaDeImpuesto         = 0.08;
            losDatos.FechaActual            = new DateTime(2016, 3, 3);
            losDatos.FechaDeVencimiento     = new DateTime(2016, 10, 10);
            losDatos.tieneTratamientoFiscal = true;
            losDatos.ConsecutivoParaElCodigoDeReferencia = "888888888888";
            laInversion = new Inversion(losDatos);

            elResultadoObtenido = Math.Round(laInversion.TasaBruta, 4);

            Assert.AreEqual(elResultadoEsperado, elResultadoObtenido);
        }
        public void GenereUnaNuevaInversion_ConTratamientoFiscal_RendimientoPorDescuento()
        {
            elResultadoEsperado = 21621.6216;

            losDatosCon                        = new DatosParaLaInversionConTratamiento();
            losDatosCon.ValorFacial            = 320000;
            losDatosCon.ValorTransadoNeto      = 300000;
            losDatosCon.TasaDeImpuesto         = 0.08;
            losDatosCon.FechaActual            = new DateTime(2016, 3, 3);
            losDatosCon.FechaDeVencimiento     = new DateTime(2016, 10, 10);
            losDatosCon.tieneTratamientoFiscal = true;
            losDatosCon.ConsecutivoParaElCodigoDeReferencia = "888888888888";
            laInversion = new Inversion(losDatosCon);

            elResultadoObtenido = laInversion.RendimientoPorDescuento;

            Assert.AreEqual(elResultadoEsperado, elResultadoObtenido, 0.0001);
        }
Пример #6
0
        private static DatosParaLaInversion DetermineElTipo(TipoDeInversion elTipoDeInversion)
        {
            DatosParaLaInversion losDatos;

            switch (elTipoDeInversion)
            {
            case TipoDeInversion.ConTratamientoFiscal:
                losDatos = new DatosParaLaInversionConTratamiento();
                break;

            case TipoDeInversion.SinTratamientoFiscal:
                losDatos = new DatosParaLaInversionSinTratamiento();
                break;

            case TipoDeInversion.Tratamiento360:
                losDatos = new DatosParaLaInversion360();
                break;

            default:
                throw new ArgumentException("Error: tipo de inversion invalido.");
            }
            return(losDatos);
        }
Пример #7
0
        public static Inversion GenereLaInversion(double elValorFacial,
                                                  double elValorTransadoNeto, int elPlazoEnDias, TipoDeInversion elTipoDeInversion)
        {
            //VALIDACION DE LOS DATOS

            if (elValorFacial <= 100000)
            {
                throw new ArgumentException("Error: El valor facial es invalido.");
            }

            if (elValorTransadoNeto <= 100000)
            {
                throw new ArgumentException("Error: El valor transado neto es invalido.");
            }

            if (elPlazoEnDias < 1)
            {
                throw new ArgumentException("Error: El plazo en dias es invalido.");
            }

            //DEPENDENCIAS CON RECURSOS EXTERNOS

            DateTime laFechaActual    = DateTime.Now;
            double   laTasaDeImpuesto = new RepositorioDeParametros().ObtengaLaTasaDeimpuestoVigente(laFechaActual);
            int      elConsecutivo    = new RepositorioDeParametros().ObtengaElConsecutivoParaElCodigoDeReferencia(laFechaActual);

            //ASIGNACION DE LAS PROPIEDADES

            DatosParaLaInversion losDatos;

            switch (elTipoDeInversion)
            {
            case TipoDeInversion.ConTratamientoFiscal:
                losDatos = new DatosParaLaInversionConTratamiento();
                break;

            case TipoDeInversion.SinTratamientoFiscal:
                losDatos = new DatosParaLaInversionSinTratamiento();
                break;

            case TipoDeInversion.Tratamiento360:
                losDatos = new DatosParaLaInversion360();
                break;

            default:
                throw new ArgumentException("Error: tipo de inversion invalido.");
            }

            //ASIGNACION DE TODOS LOS DATOS PARA LA INVERSION
            losDatos.ValorFacial       = elValorFacial;
            losDatos.ValorTransadoNeto = elValorTransadoNeto;
            losDatos.TasaDeImpuesto    = laTasaDeImpuesto;
            losDatos.FechaActual       = laFechaActual;

            DateTime laFechaDeVencimiento = laFechaActual.AddDays(elPlazoEnDias);

            losDatos.FechaDeVencimiento = laFechaDeVencimiento;

            string elConsecutivoComoTexto = elConsecutivo.ToString();

            losDatos.ConsecutivoParaElCodigoDeReferencia = elConsecutivoComoTexto;

            return(new Inversion(losDatos));
        }