Exemplo n.º 1
0
        public override void Editar()
        {
            DescontoRegra oDescRegra = new DescontoRegra(GUID);

            oDescRegra.Descricao = "Regra geral editada";
            oDescRegra.TipoValor = TipoValor.Valor;
            oDescRegra.Save();
        }
Exemplo n.º 2
0
        public override void Editar()
        {
            IDescontoRegra descRegra = new DescontoRegra(GUID);

            //descRegra.Filtros.Add(new DescontoRegraFiltro
            //{
            //    Item = new OpenPOS.Data.Cadastro.Item.Produto.Acabado().Find<IAcabado>(new Where { Limit = new Limit(1) })[0]
            //});

            descRegra.Save();
        }
Exemplo n.º 3
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);
        }
Exemplo n.º 4
0
 public override void Popular()
 {
     DescontoRegra oDescRegra = new DescontoRegra(GUID);
     DumpElement(oDescRegra);
     DumpElement(oDescRegra.Filtros);
 }
Exemplo n.º 5
0
        private void Gravar(IEstado estado)
        {
            DescontoRegra oRegDesc = new DescontoRegra();
            oRegDesc.Descricao = "Primeira Regra Desconto";
            oRegDesc.TipoValor = TipoValor.Percentual;
            oRegDesc.Valor = 10;

            oRegDesc.Filtros = new List<IDescontoRegraFiltro>{
                new DescontoRegraFiltro{
                 TabelaPreco = NovatabelaPreco()
                }
            };
            GUID = oRegDesc.Save();
        }
Exemplo n.º 6
0
        public override void Validate(bool updating)
        {
            base.Validate(updating);

            #region vars
            Where where = new Where();
            object value = null;
            #endregion

            foreach (IDescontoRegraFiltro filtro in Filtros)
            {
                //-------------------------------------------------------------------------
                // Pesquisar por todos os campos do fitro
                //-------------------------------------------------------------------------
                value = filtro.Cliente.IsNullOrEmpty() ? null : (object)filtro.Cliente.GUID;
                where.Add(String.Format("(cad_DescontoRegraFiltro.GUIDCliente = @p1 OR cad_DescontoRegraFiltro.GUIDCliente IS NULL)", value), new Parameter
                {
                    ParameterName = "@p1",
                    Value = value
                });

                value = filtro.CondicaoPagamento.IsNullOrEmpty() ? null : (object)filtro.CondicaoPagamento.GUID;
                where.Add(String.Format("(cad_DescontoRegraFiltro.GUIDCondPgto = @p2 OR cad_DescontoRegraFiltro.GUIDCondPgto IS NULL)", value ), new Parameter
                {
                    ParameterName = "@p2",
                    Value = value
                });

                value = filtro.Estado.IsNullOrEmpty() ? null : (object)filtro.Estado.GUID;
                where.Add(String.Format("(cad_DescontoRegraFiltro.GUIDEstado = @p3 OR cad_DescontoRegraFiltro.GUIDEstado IS NULL)", value ), new Parameter
                {
                    ParameterName = "@p3",
                    Value = value
                });

                value = filtro.Fabricante.IsNullOrEmpty() ? null : (object)filtro.Fabricante.GUID;
                where.Add(String.Format("(cad_DescontoRegraFiltro.GUIDFabricante = @p4 OR cad_DescontoRegraFiltro.GUIDFabricante IS NULL)", value), new Parameter
                {
                    ParameterName = "@p4",
                    Value = value
                });

                value = filtro.GrupoItem.IsNullOrEmpty() ? null : (object)filtro.GrupoItem.GUID;
                where.Add(String.Format("(cad_DescontoRegraFiltro.GUIDGrupoItem = @p5 OR cad_DescontoRegraFiltro.GUIDGrupoItem  IS NULL)", value ), new Parameter
                {
                    ParameterName = "@p5",
                    Value = value
                });

                value = filtro.Item.IsNullOrEmpty() ? null : (object)filtro.Item.GUID;
                where.Add(String.Format("(cad_DescontoRegraFiltro.GUIDItem = @p6 OR cad_DescontoRegraFiltro.GUIDItem IS NULL)", value ), new Parameter
                {
                    ParameterName = "@p6",
                    Value = value
                });
                value = filtro.Quantidade;
                where.Add(String.Format("(cad_DescontoRegraFiltro.Quantidade = @p7  OR cad_DescontoRegraFiltro.Quantidade IS NULL)", value ), new Parameter
                {
                    ParameterName = "@p7",
                    Value = value
                });

               value = filtro.Vendedor.IsNullOrEmpty() ? null : (object)filtro.Vendedor.GUID;
               where.Add(String.Format("(cad_DescontoRegraFiltro.GUIDVendedor = @p8 OR cad_DescontoRegraFiltro.GUIDVendedor IS NULL)", value ), new Parameter
               {
                   ParameterName = "@p8",
                   Value = value
               });

                IList<IDescontoRegra> regras = new DescontoRegra().Find<IDescontoRegra>(where);
                //-------------------------------------------------------------------------
                // Localizar a lista de regras
                //-------------------------------------------------------------------------
                if (regras.Count(w => w.GUID != GUID) > 0)
                {
                    throw new Exceptions.Regra.FilterAlreadyExists(Convert.ToString(regras[0].Descricao));
                }
            }
        }
Exemplo n.º 7
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
        }
Exemplo n.º 8
0
 public override void Popular()
 {
     IDescontoRegra descRegra = new DescontoRegra(GUID);
     DumpElement(descRegra);
 }
Exemplo n.º 9
0
        public override void Gravar()
        {
            #region Regra de descontos
            IDescontoRegra descRegra = new DescontoRegra();
            descRegra.Descricao = "Regra de desconto para grupo de item";
            descRegra.TipoValor = TipoValor.Percentual;
            descRegra.Valor = 5;
            #endregion

            #region Filtros da regra de desconto
            descRegra.Filtros.Add(new DescontoRegraFiltro
            {
                GrupoItem = new GrupoItem().Find<IGrupoItem>(new Where { Limit = new Limit(1) })[0],
            });
            #endregion

            #region Exceçoes da regra de desconto
            descRegra.Excecoes.Add(new DescontoRegraExcecao
            {
                GrupoItem = new GrupoItem().Find<IGrupoItem>(new Where { Limit = new Limit(2) })[1],
            });
            #endregion

            #region Usuarios Responsáveis
            descRegra.UsuariosResponsaveis.Add(new DescontoRegraUsuarioResp
            {
                UsuarioResponsavel = new Usuario().Find<IUsuario>(new Where { Limit = new Limit(2) })[0]
            });
            #endregion
            GUID = descRegra.Save();
        }