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 }
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); }
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 }); }