Ejemplo n.º 1
0
 private static void ConverterLapidacao(GenericBenef convertido, ItemBeneficiamentoDto beneficiamento, BenefConfig configuracao)
 {
     if (configuracao?.TipoControleParent == TipoControleBenef.Lapidacao)
     {
         convertido.LapAlt  = beneficiamento.Altura ?? 0;
         convertido.LapLarg = beneficiamento.Largura ?? 0;
     }
 }
Ejemplo n.º 2
0
 private static void ConverterBisote(GenericBenef convertido, ItemBeneficiamentoDto beneficiamento, BenefConfig configuracao)
 {
     if (configuracao?.TipoControleParent == TipoControleBenef.Bisote)
     {
         convertido.BisAlt    = beneficiamento.Altura ?? 0;
         convertido.BisLarg   = beneficiamento.Largura ?? 0;
         convertido.EspBisote = (float?)beneficiamento.Espessura ?? 0;
     }
 }
Ejemplo n.º 3
0
        private BeneficiamentoDto ObterBeneficiamentoSelecionado(
            BeneficiamentoDto beneficiamento,
            ItemBeneficiamentoDto itemSelecionado)
        {
            if (beneficiamento.Id == itemSelecionado.Id)
            {
                return(beneficiamento);
            }

            foreach (var filho in beneficiamento.Filhos)
            {
                var item = this.ObterBeneficiamentoSelecionado(filho, itemSelecionado);

                if (item != null)
                {
                    return(item);
                }
            }

            return(null);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Calcula o valor total de um beneficiamento.
        /// </summary>
        /// <param name="dadosCalculo">Dados adicionais para o cálculo associado ao beneficiamento.</param>
        /// <param name="beneficiamento">Os dados do beneficiamento aplicado.</param>
        /// <param name="itemSelecionado">Os dados do item selecionado (pode ser o pai ou um dos filhos).</param>
        /// <returns>Um valor que indica o total daquele beneficiamento aplicado para o produto.</returns>
        public TotalDto Calcular(
            DadosCalculoDto dadosCalculo,
            BeneficiamentoDto beneficiamento,
            ItemBeneficiamentoDto itemSelecionado)
        {
            var selecionado = this.ObterBeneficiamentoSelecionado(beneficiamento, itemSelecionado);
            var preco       = new SelecionaPrecoBeneficiamento().ObterPrecoBeneficiamento(dadosCalculo, selecionado);

            var valorUnitario = this.ObterValorUnitario(dadosCalculo, preco, beneficiamento.TipoControle);

            valorUnitario = this.ObterValorComPercentualComissao(valorUnitario, dadosCalculo.PercentualComissao);

            var estrategia = ValorTotalStrategyFactory.Instance.ObterEstrategia(selecionado);

            return(new TotalDto
            {
                ValorUnitario = valorUnitario,
                ValorTotal = estrategia.CalcularValor(dadosCalculo, selecionado, itemSelecionado, valorUnitario),
                CustoTotal = estrategia.CalcularCusto(dadosCalculo, selecionado, itemSelecionado, preco.CustoUnitario),
            });
        }
Ejemplo n.º 5
0
        private IHttpActionResult ValidarItemSelecionadoEBeneficiamento(
            ItemBeneficiamentoDto itemSelecionado,
            Data.Beneficiamentos.Total.Dto.BeneficiamentoDto beneficiamento)
        {
            if (itemSelecionado.Id == beneficiamento.Id)
            {
                return(null);
            }

            var filhos = beneficiamento.Filhos ?? new BeneficiamentoDto[0];

            foreach (var filho in filhos)
            {
                var validacao = this.ValidarItemSelecionadoEBeneficiamento(itemSelecionado, filho);

                if (validacao == null)
                {
                    return(null);
                }
            }

            return(this.ErroValidacao("Item selecionado não é do tipo do beneficiamento informado."));
        }
Ejemplo n.º 6
0
 /// <inheritdoc/>
 public decimal CalcularCusto(DadosCalculoDto dadosCalculo, BeneficiamentoDto beneficiamento, ItemBeneficiamentoDto itemSelecionado, decimal custoUnitario)
 {
     return(this.CalcularValor(dadosCalculo, beneficiamento, itemSelecionado, custoUnitario));
 }
Ejemplo n.º 7
0
        /// <inheritdoc/>
        public decimal CalcularValor(DadosCalculoDto dadosCalculo, BeneficiamentoDto beneficiamento, ItemBeneficiamentoDto itemSelecionado, decimal valorUnitario)
        {
            var baseCalculo = this.ObterBaseCalculo(dadosCalculo);

            return(valorUnitario * baseCalculo);
        }
Ejemplo n.º 8
0
        /// <inheritdoc/>
        public decimal CalcularValor(DadosCalculoDto dadosCalculo, BeneficiamentoDto beneficiamento, ItemBeneficiamentoDto itemSelecionado, decimal valorUnitario)
        {
            var alturas  = itemSelecionado.Altura ?? 2;
            var larguras = itemSelecionado.Largura ?? 2;

            var baseCalculo = this.ObterBaseCalculo(dadosCalculo, alturas, larguras);

            return(valorUnitario * baseCalculo);
        }
Ejemplo n.º 9
0
 /// <inheritdoc/>
 public decimal CalcularCusto(DadosCalculoDto dadosCalculo, BeneficiamentoDto beneficiamento, ItemBeneficiamentoDto itemSelecionado, decimal custoUnitario)
 {
     return(0);
 }
Ejemplo n.º 10
0
        /// <inheritdoc/>
        public decimal CalcularCusto(DadosCalculoDto dadosCalculo, BeneficiamentoDto beneficiamento, ItemBeneficiamentoDto itemSelecionado, decimal custoUnitario)
        {
            var valor = dadosCalculo.Produto.CustoUnitario > 0
                ? dadosCalculo.Produto.CustoUnitario
                : dadosCalculo.Produto.ValorUnitario;

            var baseCalculo = this.ObterBaseCalculo(dadosCalculo, valor);

            return(custoUnitario * baseCalculo);
        }
Ejemplo n.º 11
0
        /// <inheritdoc/>
        public decimal CalcularValor(DadosCalculoDto dadosCalculo, BeneficiamentoDto beneficiamento, ItemBeneficiamentoDto itemSelecionado, decimal valorUnitario)
        {
            var quantidade = itemSelecionado.Quantidade ?? 1;

            if (quantidade == 0)
            {
                quantidade = 1;
            }

            var baseCalculo = this.ObterBaseCalculo(dadosCalculo, dadosCalculo.Produto.ValorUnitario);

            return(valorUnitario * baseCalculo * quantidade);
        }