Exemplo n.º 1
0
        /// <summary>
        /// Executa o calculo da rentabilidade sobre o item informado.
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public ResultadoRentabilidade Calcular(IItemRentabilidade item)
        {
            item.Require(nameof(item)).NotNull();

            var variaveisItem = CriarVariaveisItem(item);
            var agregador     = new Mathematical.AggregateVariavelCollection();

            agregador.Add(variaveisItem);
            agregador.Add(_variaveisIndicadoresFinanceiro);

            // Percorre as variáveis de calculo compiladas
            var variaveisCalculo = new Mathematical.VariavelCollection(
                _variaveisCalculo.Select(f => ((Mathematical.Formula)f).CreateCopy(agregador)));

            agregador.Add(variaveisCalculo);

            var formula = _formulaCalculo.CreateCopy(agregador);

            var custoTotal = formula.ObterValor();

            return(new ResultadoRentabilidade(_variaveisIndicadoresFinanceiro, variaveisItem, variaveisCalculo, custoTotal, item));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Cria as variáveis para as expressões de calculo.
        /// </summary>
        /// <returns></returns>
        private Mathematical.IVariavelCollection CriarVariaveisCalculo()
        {
            var agregador = new Mathematical.AggregateVariavelCollection();

            agregador.Add(CriarIndicadoresFinanceiros());
            agregador.Add(CriarVariaveisItem(new ItemRentabilidadeFake()));

            foreach (var i in Calculo.Expressoes.Select(f => new Mathematical.Constante(f.Nome, 0.0)))
            {
                agregador.Add(i);
            }

            var formulas = new List <Mathematical.Formula>();

            foreach (var expressao in Calculo.Expressoes)
            {
                var formula = new Mathematical.Formula(expressao.Nome, expressao.Texto, agregador);
                formula.Compilar();

                formulas.Add(formula);
            }

            return(new Mathematical.VariavelCollection(formulas));
        }