Exemplo n.º 1
0
        public void CalcularPreco()
        {
            #region buscar clientes
            IList<ICliente> clientes = new Cliente().Find<ICliente>(new Where { Limit = new Limit(3, 0) });
            #endregion

            #region buscar itens
            IList<IAcabado> produtos = new Acabado().Find<IAcabado>(new Where { Limit = new Limit(3, 0) });

            Model.Faturamento.Lancamento.Movimento.Item.VendaCF.IItem item = new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.VendaCF.Item();
            item.ItemMovimentado = produtos[0];
            #endregion

            #region tabela de preço
            //-------------------------------------------------------------------------
            // Gravar um tabela de preços para garantir que iremos ter uma tabela
            //-------------------------------------------------------------------------
            TabelaPrecoTest precoTest = new TabelaPrecoTest();
            precoTest.Gravar();

            //-------------------------------------------------------------------------
            // Carregar esta tabela para uso futuro
            //-------------------------------------------------------------------------
            ITabelaPreco tabela = new TabelaPreco(precoTest.GUID);
            #endregion

            #region Regra com 10% desconto
            IDesconto desconto = new Desconto().Find<IDesconto>(new Where { Limit = new Limit(1, 0) })[0] as IDesconto;

            new PrecoRegra
            {
                Descricao = "Regra desconto 10% Geral",
                TabelaPreco = tabela,
                ItensEspeciais = new List<IPrecoRegraItemEspecial>{
                new PrecoRegraItemEspecial {
                    ItemEspecial  = desconto,
                    TipoValor = Enuns.Cadastro.TipoValor.Percentual,
                    Valor= 10
                }
            }
            }.Save();
            #endregion

            #region Regra com 25% desconto para o cliente posição 0
            desconto = new Desconto().Find<IEspecial>(new Where { Limit = new Limit(1, 0) })[0] as IDesconto;
            new PrecoRegra
            {
            Descricao = "Regra desconto 25% cliente posição 0",
            TabelaPreco = tabela,
            ItensEspeciais = new List<IPrecoRegraItemEspecial>{

                    new PrecoRegraItemEspecial {
                    ItemEspecial  = desconto,
                    TipoValor = Enuns.Cadastro.TipoValor.Percentual,
                    Valor= 25
                }
            }
            }.Save();
            #endregion

            #region Regra com 30% desconto para o cliente posição 0 e produto 0
            desconto = new Desconto().Find<IEspecial>(new Where { Limit = new Limit(1, 0) })[0] as IDesconto;

            new PrecoRegra
            {
                Descricao = "Regra desconto 30% cliente e produto posição 0",
                TabelaPreco = tabela,
                ItensEspeciais = new List<IPrecoRegraItemEspecial>{
                new PrecoRegraItemEspecial {
                    ItemEspecial  = desconto,
                    TipoValor = Enuns.Cadastro.TipoValor.Percentual,
                    Valor= 30
                }
            }
            }.Save();
            #endregion

            #region Regra com 35% desconto para o produto posição 0
            desconto = new Desconto().Find<IEspecial>(new Where { Limit = new Limit(1, 0) })[0] as IDesconto;

            new PrecoRegra
            {
                Descricao = "Regra desconto 35% cliente e produto posição 0",
                TabelaPreco = tabela,
                ItensEspeciais = new List<IPrecoRegraItemEspecial>{
                new PrecoRegraItemEspecial {
                    ItemEspecial  = desconto,
                    TipoValor = Enuns.Cadastro.TipoValor.Percentual,
                    Valor= 35
                }
            }
            }.Save();
            #endregion

            //-------------------------------------------------------------------------
            // Calcular o preço para o cliente na posição 0
            //-------------------------------------------------------------------------
            RegraPrecoResult preco = new CalcularPreco(item).ExecutarRegra(new RegraPrecoFilter
            {
                Pessoa = clientes[0]
            });

            WriteLine("Preço final: {0:C2}", preco.PrecoFinal);
            DumpElement(preco);

            //-------------------------------------------------------------------------
            // Calcular o preço para o cliente e produto na posição 0
            //-------------------------------------------------------------------------
            preco = new CalcularPreco(item).ExecutarRegra(new RegraPrecoFilter
            {
                Pessoa = clientes[0],
                GrupoItem = produtos[0].GrupoItem
            });

            WriteLine("Preço final: {0:C2}", preco.PrecoFinal);
            DumpElement(preco);

            //-------------------------------------------------------------------------
            // Calcular o preço para o produto na posição 0
            //-------------------------------------------------------------------------
            preco = new CalcularPreco(item).ExecutarRegra(new RegraPrecoFilter
            {
                GrupoItem = produtos[0].GrupoItem
            });

            WriteLine("Preço final: {0:C2}", preco.PrecoFinal);
            DumpElement(preco);

            //-------------------------------------------------------------------------
            // Calcular o preço com todo mundo nulo
            //-------------------------------------------------------------------------
            preco = new CalcularPreco(item).ExecutarRegra(new RegraPrecoFilter
            {
            });

            WriteLine("Preço final: {0:C2}", preco.PrecoFinal);
            DumpElement(preco);
        }
Exemplo n.º 2
0
 /// <summary>
 /// Calcula regra de preço do item.
 /// </summary>
 /// <param name="item"></param>
 private void CalculaRegraPreco(IItem item)
 {
     Shared.Regra.Preco.RegraPrecoResult result = new CalcularPreco(item).ExecutarRegra(new RegraPrecoFilter
     {
         Pessoa = DadoPessoa.Cliente,
         GrupoItem = item.ItemMovimentado != null ? item.ItemMovimentado.GrupoItem : null
     });
 }