Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
 /// <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);