public decimal Calcular(Contexto contexto, Concepto concepto)
 {
     var reintegro = criterioAdaptado.Calcular(contexto, concepto);
     if (reintegro > 0)
         contexto.RegistrarReintegroTemporal(new Historial(1, reintegro));
     return reintegro;
 }
        public decimal Calcular(Contexto contexto, Concepto concepto)
        {
            var historial = contexto.ObtenerHistorial(DateRange.AnioCalendarioParaFecha(concepto.FechaPrestacion));
            var montoReintegro = cantidadMaxima <= historial.Cantidad ? 0m : concepto.MontoReclamado;

            return montoReintegro;
        }
        public decimal Calcular(Contexto contexto, Concepto concepto)
        {
            var historial = contexto.ObtenerHistorial(DateRange.PasadoDesdeHoy(this.periodo));
            var montoReintegro = cantidadMaxima <= historial.Cantidad ? 0m : concepto.MontoReclamado;

            return montoReintegro;
        }
예제 #4
0
        public decimal Calcular(Contexto contexto, Concepto concepto)
        {
            if (contexto.Variable<int>("edad") <= this.edad)
                return concepto.MontoReclamado;

            return 0m;
        }
예제 #5
0
        public decimal Calcular(Contexto contexto, Concepto concepto)
        {
            var montoReintegro = this.montoMaximo;

            if (concepto.MontoReclamado > montoReintegro)
                return montoReintegro;

            return concepto.MontoReclamado;
        }
예제 #6
0
 public decimal Calcular(Contexto contexto, Concepto concepto)
 {
     var porcentajeReintegro = 0;
     if (contexto.Variable<bool>("esAfiliado"))
         porcentajeReintegro = 50;
     else if (contexto.Variable<int>("edad") <= 6)
         porcentajeReintegro = 30;
     else
         porcentajeReintegro = 20;
     return Decimal.Round(concepto.MontoReclamado * porcentajeReintegro / 100, 2);
 }
        public decimal Calcular(Contexto contexto, Concepto concepto)
        {
            var historial = contexto.ObtenerHistorial(DateRange.PasadoDesdeHoy(this.periodo));
            var montoReintegro = montoMaximo - historial.Monto;

            if (montoReintegro < 0)
                montoReintegro = 0;

            if (concepto.MontoReclamado > montoReintegro)
                return montoReintegro;

            return concepto.MontoReclamado;
        }
        public decimal Calcular(Contexto contexto, Concepto concepto)
        {
            var historial = contexto.ObtenerHistorial(DateRange.AnioCalendarioParaFecha(concepto.FechaPrestacion));
            var montoReintegro = montoMaximo - historial.Monto;

            if (montoReintegro < 0)
                montoReintegro = 0;

            if (concepto.MontoReclamado > montoReintegro)
                return montoReintegro;

            return concepto.MontoReclamado;
        }
예제 #9
0
        public decimal Calcular(Contexto contexto, Concepto concepto)
        {
            var historial = contexto.ObtenerHistorial(
                new DateRange(contexto.Variable<DateTime>("fechaNacimiento"), concepto.FechaPrestacion));

            var fechaNacimiento = contexto.Variable<DateTime>("fechaNacimiento");
            var fechaReintegro = concepto.FechaPrestacion;

            var dias = fechaReintegro.Subtract(fechaNacimiento).Days;

            var cantidadPaniales = dias * this.cantidadDiaria;

            var reintegro = (cantidadPaniales - historial.Cantidad) * this.reintegroPorPanial;

            return reintegro;
        }
        public void ConstruyeCorrectamenteElFiltroPorAñoCalendarioMonto()
        {
            var concepto = new Concepto(200, new DateTime(2013, 10, 10));
            DateRange periodoCalculado = null;

            // Capturo el periodo para chequear si el criterio lo calcula correctamente
            contexto.DefinirBuscadorDeHistorial((periodo) => {
                periodoCalculado = periodo;
                return new Historial(0, 0m);
            });

            criterioMonto.Calcular(contexto, concepto);

            Assert.That(periodoCalculado.Desde, Is.EqualTo(new DateTime(2013, 1, 1)));
            Assert.That(periodoCalculado.Hasta, Is.EqualTo(new DateTime(2013, 12, 31)));
        }
예제 #11
0
        public decimal Calcular(Contexto contexto, Concepto concepto)
        {
            var porcentajeReintegro = this.porcentaje;

            return Decimal.Round(concepto.MontoReclamado * porcentajeReintegro / 100, 2);
        }
예제 #12
0
 public decimal Calcular(Contexto contexto, Concepto concepto)
 {
     return this.criterios.Max(criterio => criterio.Calcular(contexto, concepto));
 }