/// <summary> /// Cria o resultado do calculo da rentabilidade para o item informado. /// </summary> /// <param name="item"></param> /// <param name="resultadoCalculo"></param> /// <param name="subResultados">Sub resultados processados.</param> /// <returns></returns> protected override Data.ICalculoRentabilidadeResultado CriaResultado( IItemRentabilidade item, ResultadoRentabilidade resultadoCalculo, IEnumerable <Data.ICalculoRentabilidadeResultado> subResultados) { Data.ICalculoRentabilidadeResultado resultado; var itemNotaFiscal = item as IItemRentabilidade <Data.Model.NotaFiscal>; var itemProdutoNf = item as IItemRentabilidade <Data.Model.ProdutosNf>; var itemProdutoNfCusto = item as IItemRentabilidade <Data.Model.ProdutoNfCusto>; if (itemNotaFiscal != null) { resultado = MontarResultado ((IItemRentabilidadeComReferencias <Data.Model.NotaFiscalRentabilidade>)item, (x, y) => (int)x.Tipo == y.Tipo && x.IdRegistro == y.IdRegistro, (x, y) => y.Valor = x.Valor); var noteFiscal = itemNotaFiscal.Proprietario; // Registra o evento para salvar o dados da nota fiscal quando o resultado for salvo resultado.Salvando += (sender, e) => { var rentabilidade = noteFiscal.RentabilidadeFinanceira = e.RentabilidadeFinanceira; var percentual = noteFiscal.PercentualRentabilidade = e.PercentualRentabilidade * 100m; Data.DAL.NotaFiscalDAO.Instance.AtualizarRentabilidade(e.Sessao, noteFiscal.IdNf, percentual, rentabilidade); }; } else if (itemProdutoNf != null) { resultado = MontarResultado ((IItemRentabilidadeComReferencias <Data.Model.ProdutoNfRentabilidade>)item, (x, y) => (int)x.Tipo == y.Tipo && x.IdRegistro == y.IdRegistro, (x, y) => y.Valor = x.Valor); var produtoNf = itemProdutoNf.Proprietario; // Registra o evento para salvar o dados do produto da nota fiscal quando o resultado for salvo resultado.Salvando += (sender, e) => { var rentabilidade = produtoNf.RentabilidadeFinanceira = e.RentabilidadeFinanceira; var percentual = produtoNf.PercentualRentabilidade = e.PercentualRentabilidade * 100m; Data.DAL.ProdutosNfDAO.Instance.AtualizarRentabilidade(e.Sessao, produtoNf.IdProdNf, percentual, rentabilidade); }; } else if (itemProdutoNfCusto != null) { resultado = MontarResultado ((IItemRentabilidadeComReferencias <Data.Model.ProdutoNfCustoRentabilidade>)item, (x, y) => (int)x.Tipo == y.Tipo && x.IdRegistro == y.IdRegistro, (x, y) => y.Valor = x.Valor); var produtoNfCusto = itemProdutoNfCusto.Proprietario; // Registra o evento para salvar o dados do custo do produto da nota fiscal quando o resultado for salvo resultado.Salvando += (sender, e) => { var rentabilidade = produtoNfCusto.RentabilidadeFinanceira = e.RentabilidadeFinanceira; var percentual = produtoNfCusto.PercentualRentabilidade = e.PercentualRentabilidade * 100m; Data.DAL.ProdutoNfCustoDAO.Instance.AtualizarRentabilidade(e.Sessao, produtoNfCusto.IdProdNfCusto, percentual, rentabilidade); }; } else { throw new NotSupportedException("Tipo do item de rentabilidade não suportado."); } var resultadosContainer = resultado as ICalculoRentabilidadeResultadoContainer; if (resultadosContainer != null) { foreach (var i in subResultados) { resultadosContainer.Adicionar(i); } } return(resultado); }
/// <summary> /// Cria o resultado do calculo da rentabilidade para o item informado. /// </summary> /// <param name="item"></param> /// <param name="resultadoCalculo"></param> /// <param name="subResultados">Sub resultados processados.</param> /// <returns></returns> protected override Data.ICalculoRentabilidadeResultado CriaResultado( IItemRentabilidade item, ResultadoRentabilidade resultadoCalculo, IEnumerable <Data.ICalculoRentabilidadeResultado> subResultados) { Data.ICalculoRentabilidadeResultado resultado; var itemPedido = item as IItemRentabilidade <Data.Model.PedidoEspelho>; var itemProdutoPedido = item as IItemRentabilidade <Data.Model.ProdutosPedidoEspelho>; var itemAmbientePedido = item as IItemRentabilidade <Data.Model.AmbientePedidoEspelho>; if (itemPedido != null) { resultado = MontarResultado ((IItemRentabilidadeComReferencias <Data.Model.PedidoEspelhoRentabilidade>)item, (x, y) => (int)x.Tipo == y.Tipo && x.IdRegistro == y.IdRegistro, (x, y) => y.Valor = x.Valor); var pedido = itemPedido.Proprietario; // Registra o evento para salvar o dados do pedido quando o resultado for salvo resultado.Salvando += (sender, e) => { var rentabilidade = pedido.RentabilidadeFinanceira = e.RentabilidadeFinanceira; var percentual = pedido.PercentualRentabilidade = e.PercentualRentabilidade * 100m; Data.DAL.PedidoEspelhoDAO.Instance.AtualizarRentabilidade(e.Sessao, pedido.IdPedido, percentual, rentabilidade); }; } else if (itemProdutoPedido != null) { resultado = MontarResultado ((IItemRentabilidadeComReferencias <Data.Model.ProdutoPedidoEspelhoRentabilidade>)item, (x, y) => (int)x.Tipo == y.Tipo && x.IdRegistro == y.IdRegistro, (x, y) => y.Valor = x.Valor); var produtoPedido = itemProdutoPedido.Proprietario; // Registra o evento para salvar o dados do pedido quando o resultado for salvo resultado.Salvando += (sender, e) => { var rentabilidade = produtoPedido.RentabilidadeFinanceira = e.RentabilidadeFinanceira; var percentual = produtoPedido.PercentualRentabilidade = e.PercentualRentabilidade * 100m; produtoPedido.PercComissao = item.PercentualComissao * 100m; Data.DAL.ProdutosPedidoEspelhoDAO.Instance.AtualizarRentabilidade(e.Sessao, produtoPedido.IdProdPed, percentual, rentabilidade, produtoPedido.PercComissao); }; } else if (itemAmbientePedido != null) { resultado = MontarResultado ((IItemRentabilidadeComReferencias <Data.Model.AmbientePedidoEspelhoRentabilidade>)item, (x, y) => (int)x.Tipo == y.Tipo && x.IdRegistro == y.IdRegistro, (x, y) => y.Valor = x.Valor); var ambiente = itemAmbientePedido.Proprietario; // Registra o evento para salvar o dados do pedido quando o resultado for salvo resultado.Salvando += (sender, e) => { var rentabilidade = ambiente.RentabilidadeFinanceira = e.RentabilidadeFinanceira; var percentual = ambiente.PercentualRentabilidade = e.PercentualRentabilidade * 100m; Data.DAL.AmbientePedidoEspelhoDAO.Instance.AtualizarRentabilidade(e.Sessao, ambiente.IdAmbientePedido, percentual, rentabilidade); }; } else { throw new NotSupportedException("Tipo do item de rentabilidade não suportado."); } var resultadosContainer = resultado as ICalculoRentabilidadeResultadoContainer; if (resultadosContainer != null) { foreach (var i in subResultados) { resultadosContainer.Adicionar(i); } } return(resultado); }
/// <summary> /// Cria o resultado do calculo da rentabilidade para o item informado. /// </summary> /// <param name="item"></param> /// <param name="resultadoCalculo"></param> /// <param name="subResultados">Sub resultados processados.</param> /// <returns></returns> protected abstract Data.ICalculoRentabilidadeResultado CriaResultado( IItemRentabilidade item, ResultadoRentabilidade resultadoCalculo, IEnumerable <Data.ICalculoRentabilidadeResultado> subResultados);