public static OpenPOS.Data.Cadastro.TabelaPreco.TabelaPreco NovaTabela() { OpenPOS.Data.Cadastro.TabelaPreco.TabelaPreco t = new OpenPOS.Data.Cadastro.TabelaPreco.TabelaPreco(); IList<IAcabado> list = new Acabado().Find<IAcabado>(new Where { Limit = new Limit(3, 0) }); t.Descricao = new Random().NextString(); t.Promocional = true; t.ValidadeInicial = new Random().DateTime(); t.ValidadeFinal = t.ValidadeInicial.AddDays(30); t.Itens = new List<IItem> { new OpenPOS.Data.Cadastro.TabelaPreco.Item { Item=list[0] as IAcabado, Preco = new Random().NextDouble(10,50) }, new OpenPOS.Data.Cadastro.TabelaPreco.Item { Item=list[1] as IAcabado, Preco = new Random().NextDouble(10,50) }, new OpenPOS.Data.Cadastro.TabelaPreco.Item { Item=list[2] as IAcabado, Preco = new Random().NextDouble(10,50) } }; return t; }
/// <summary> /// Relação de mercadorias e serviços /// </summary> private void PreencheP() { ACBrPAF.PAF_P.RegistroP1.RazaoSocial = Settings.EmpresaAtual.RazaoSocial; ACBrPAF.PAF_P.RegistroP1.UF = Settings.EmpresaAtual.Enderecos.First(w => w.Principal).Endereco.Estado.UF; ACBrPAF.PAF_P.RegistroP1.CNPJ = Settings.EmpresaAtual.GetCPFCNPJ(); ACBrPAF.PAF_P.RegistroP1.IE = Settings.EmpresaAtual.Juridica.IE; ACBrPAF.PAF_P.RegistroP1.IM = Settings.EmpresaAtual.Juridica.IM; //------------------------------------------------------------------------- // Buscar a tabela de preços principal e sem regras //------------------------------------------------------------------------- ITabelaPreco tabelaPreco = new TabelaPreco((GUID)Settings.Setting.TabelaPrecoPadrao); foreach(Model.Cadastro.TabelaPreco.IItem item in tabelaPreco.Itens) { ACBrPAFRegistroP2 ItemP2 = new ACBrPAFRegistroP2(); ItemP2.COD_MERC_SERV = item.Item.EGUID; ItemP2.DESC_MERC_SERV = item.Item.Descricao; if(item.Item is Model.Cadastro.Item.Produto.IProduto) { ItemP2.IAT = (item.Item as Model.Cadastro.Item.Produto.IProduto).IndicadorTruncamento; ItemP2.IPPT = (item.Item as Model.Cadastro.Item.Produto.IProduto).IndicadorProducao; } // ItemP2.ST = item.SituacaoTributaria; //ItemP2.ALIQ = (decimal)item.Aliquota; ItemP2.VL_UNIT = (decimal)item.Preco; ItemP2.RegistroValido = !item.Item.HasHashModification; ACBrPAF.PAF_P.RegistroP2.Add(ItemP2); ItemP2 = null; } }
public override void Popular() { OpenPOS.Data.Cadastro.TabelaPreco.TabelaPreco t = new OpenPOS.Data.Cadastro.TabelaPreco.TabelaPreco(GUID); DumpElement(t); DumpElement(t.Itens); }
public override void Editar() { OpenPOS.Data.Cadastro.TabelaPreco.TabelaPreco t = new OpenPOS.Data.Cadastro.TabelaPreco.TabelaPreco(GUID); t.Descricao = "Editada"; t.Save(); }
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); }