/// <summary> /// Construtor padrão. /// </summary> /// <param name="indicadoresFinanceiros"></param> /// <param name="variaveisItem"></param> /// <param name="expressoesCalculo"></param> /// <param name="custoTotal"></param> /// <param name="item"></param> internal ResultadoRentabilidade( Mathematical.IVariavelCollection indicadoresFinanceiros, Mathematical.IVariavelCollection variaveisItem, Mathematical.IVariavelCollection expressoesCalculo, double custoTotal, IItemRentabilidade item) { item.Require(nameof(item)).NotNull(); IndicadoresFinanceiros = new Dictionary <string, decimal>(); VariaveisItem = new Dictionary <string, decimal>(); ExpressoesCalculo = new Dictionary <string, decimal>(); foreach (var i in indicadoresFinanceiros) { IndicadoresFinanceiros.Add(i.Nome, (decimal)i.ObterValor()); } foreach (var i in variaveisItem) { VariaveisItem.Add(i.Nome, (decimal)i.ObterValor()); } foreach (var i in expressoesCalculo) { ExpressoesCalculo.Add(i.Nome, (decimal)i.ObterValor()); } CustoTotal = (decimal)custoTotal; Item = item; }
/// <summary> /// Construtor padrão. /// </summary> /// <param name="provedorDescritores"></param> /// <param name="item"></param> /// <param name="culture"></param> public ItemRentabilidadeDataSource( IProvedorDescritorRegistroRentabilidade provedorDescritores, IItemRentabilidade item, System.Globalization.CultureInfo culture = null) { provedorDescritores.Require(nameof(provedorDescritores)).NotNull(); item.Require(nameof(item)).NotNull(); ProvedorDescritores = provedorDescritores; Item = item; Cultura = culture ?? System.Globalization.CultureInfo.CurrentCulture; }
/// <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)); }