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; } }
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; } }
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); }
/// <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), }); }
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.")); }
/// <inheritdoc/> public decimal CalcularCusto(DadosCalculoDto dadosCalculo, BeneficiamentoDto beneficiamento, ItemBeneficiamentoDto itemSelecionado, decimal custoUnitario) { return(this.CalcularValor(dadosCalculo, beneficiamento, itemSelecionado, custoUnitario)); }
/// <inheritdoc/> public decimal CalcularValor(DadosCalculoDto dadosCalculo, BeneficiamentoDto beneficiamento, ItemBeneficiamentoDto itemSelecionado, decimal valorUnitario) { var baseCalculo = this.ObterBaseCalculo(dadosCalculo); return(valorUnitario * baseCalculo); }
/// <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); }
/// <inheritdoc/> public decimal CalcularCusto(DadosCalculoDto dadosCalculo, BeneficiamentoDto beneficiamento, ItemBeneficiamentoDto itemSelecionado, decimal custoUnitario) { return(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); }
/// <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); }