Beispiel #1
0
        public void ComoNumero_DatosCorrectos_ImpuestoPagadoCorrecto()
        {
            elResultadoEsperado = 1621.6216;

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

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