Ejemplo n.º 1
0
        public void ExcecaoTest()
        {
            #region gravar a pré-venda
            //-------------------------------------------------------------------------
            // Gravar um pré-venda para utilizar durante o teste
            //-------------------------------------------------------------------------
            PreVendaTest pvTest = new PreVendaTest();
            pvTest.Gravar();
            PreVenda pv = pvTest.PreVenda;
            IEstado estado = RegraDescontoTest.NovoEstado();

            //-------------------------------------------------------------------------
            // Modificar o estado do movimento
            //-------------------------------------------------------------------------
            pv.DadoPessoa.Cliente.Enderecos[0].Endereco.Estado = estado;
            #endregion

            #region gravar a regra
            //-------------------------------------------------------------------------
            // Criar um regra por estado e cliente
            //-------------------------------------------------------------------------
            DescontoRegra oRegDesc = new DescontoRegra();
            oRegDesc.Descricao = "Primeira Regra Desconto";
            oRegDesc.TipoValor = TipoValor.Percentual;
            oRegDesc.Valor = 10;

            oRegDesc.Filtros = new List<IDescontoRegraFiltro>{
                new DescontoRegraFiltro{
                    Estado = estado,
                }
            };

            GUID = oRegDesc.Save();
            #endregion

            #region aqui existe desconto
            Model.Faturamento.Lancamento.Movimento.Item.IItem item = pv.Itens[0];

            double old = item.ValorTotalLiquido;

            //-------------------------------------------------------------------------
            // Buscar um desconto pelo estado
            //-------------------------------------------------------------------------
            RegraDescontoResult result = new CalcularDesconto(pv, item).ExecutarRegra(
                new RegraDescontoFilter
                {
                    Estado = pv.DadoPessoa.Cliente.Enderecos[0].Endereco.Estado
                });

            //o desconto foi aplicado
            Assert.AreNotEqual(old, item.ValorTotalLiquido);
            #endregion

            #region exceção pelo cliente
            //-------------------------------------------------------------------------
            // Agora iremos informar a regra que o cliente é exceção
            //-------------------------------------------------------------------------
            oRegDesc.Excecoes.Add(new DescontoRegraExcecao
            {
                Cliente = pv.DadoPessoa.Cliente as ICliente
            });

            oRegDesc.Save();

            old = item.ValorTotalLiquido;

            result = new CalcularDesconto(pv, pv.Itens[0]).ExecutarRegra(
                new RegraDescontoFilter
                {
                    Estado = pv.DadoPessoa.Cliente.Enderecos[0].Endereco.Estado
                });

            //-------------------------------------------------------------------------
            // Não pode ter havido desconto, pois o cliente é uma exceção
            //-------------------------------------------------------------------------
            Assert.AreEqual(old, item.ValorTotalLiquido);
            #endregion
        }
Ejemplo n.º 2
0
        public void RegraEstadoClienteTest()
        {
            //-------------------------------------------------------------------------
            // Gravar um pré-venda para utilizar durante o teste
            //-------------------------------------------------------------------------
            PreVendaTest pvTest = new PreVendaTest();
            pvTest.Gravar();
            PreVenda pv = pvTest.PreVenda;

            //-------------------------------------------------------------------------
            // Criar um regra por estado e cliente
            //-------------------------------------------------------------------------
            DescontoRegra oRegDesc = new DescontoRegra();
            oRegDesc.Descricao = "Primeira Regra Desconto";
            oRegDesc.TipoValor = TipoValor.Percentual;
            oRegDesc.Valor = 10;

            oRegDesc.Filtros = new List<IDescontoRegraFiltro>{
                new DescontoRegraFiltro{
                    Estado = pv.DadoPessoa.Cliente.Enderecos[0].Endereco.Estado,
                    Cliente = pv.DadoPessoa.Cliente as ICliente
                }
            };

            GUID = oRegDesc.Save();

            Model.Faturamento.Lancamento.Movimento.Item.IItem item = pv.Itens[0];

            double old = item.ValorTotalLiquido;

            //-------------------------------------------------------------------------
            // Buscar um desconto pelo estado
            //-------------------------------------------------------------------------
            RegraDescontoResult result = new CalcularDesconto(pv, item).ExecutarRegra(
                new RegraDescontoFilter
                {
                    Cliente = new OpenPOS.Data.Cadastro.Pessoa.Cliente
                    {
                        GUID = Guid.NewGuid().ToString()
                    },
                    Estado = pv.DadoPessoa.Cliente.Enderecos[0].Endereco.Estado
                });

            Assert.AreEqual(old, item.ValorTotalLiquido);

            result = new CalcularDesconto(pv, pv.Itens[0]).ExecutarRegra(
                new RegraDescontoFilter
                {
                    Cliente = pv.DadoPessoa.Cliente as ICliente,
                    Estado = pv.DadoPessoa.Cliente.Enderecos[0].Endereco.Estado
                });

            Assert.AreNotEqual(old, item.ValorTotalLiquido);
        }
Ejemplo n.º 3
0
 private void CalculaDesconto(IItem item)
 {
     Shared.Regra.Desconto.RegraDescontoResult result = new CalcularDesconto(this, item).ExecutarRegra(new RegraDescontoFilter
     {
         Cliente = (OpenPOS.Model.Cadastro.Pessoa.ICliente)DadoPessoa.Cliente,
         CondicaoPagamento = this.CondicaoPagamento,
         Estado = DadoPessoa.Cliente != null && DadoPessoa.Cliente.Enderecos.Count > 0 ? DadoPessoa.Cliente.Enderecos[0].Endereco.Estado : null,
         Fabricante = item is Model.Cadastro.Item.Produto.IAcabado ? ((Model.Cadastro.Item.Produto.IAcabado)item.ItemMovimentado) != null ?
         ((Model.Cadastro.Item.Produto.IAcabado)item.ItemMovimentado).Fabricante : null : null,
         GrupoItem = item is Model.Cadastro.Item.Produto.IAcabado ? ((Model.Cadastro.Item.Produto.IAcabado)item.ItemMovimentado) != null ?
         item.ItemMovimentado.GrupoItem :
         null : item is Model.Cadastro.Item.Servico.IServico ? ((Model.Cadastro.Item.Servico.IServico)item.ItemMovimentado) != null ? item.ItemMovimentado.GrupoItem : null : null,
         Item = item.ItemMovimentado,
         Quantidade = item.Quantidade,
         Vendedor = item.Vendedor
     });
 }