Example #1
0
        public void ComoNumero_DatosCorrectos_TasaBrutaCorrecta()
        {
            elResultadoEsperado = 12.0007;

            losDatos                    = new DatosParaLaInversionSinTratamiento();
            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 TasaBrutaSinTratamiento(losDatos).ComoNumero();

            Assert.AreEqual(elResultadoEsperado, elResultadoObtenido, 0.0001);
        }
        public void GenereUnaNuevaInversion_SinTratamientoFiscal_RendimientoPorDescuento()
        {
            elResultadoEsperado = 20000;

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

            elResultadoObtenido = laInversion.RendimientoPorDescuento;

            Assert.AreEqual(elResultadoEsperado, elResultadoObtenido);
        }
Example #3
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);
        }
Example #4
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));
        }