/// <summary> /// Executa uma estratégia antes de salvar /// </summary> /// <param name="executeBefore">Método que será executado antes desta ação acontecer</param> /// <param name="updating">Se verdadeiro, está sendo realizado uma atualização</param> public override void PerformBeforeSave(Func<bool> executeBefore, bool updating) { if(!updating) { if(GUID.IsNullOrEmpty()) GUID = GUID.Create(); UsuarioAlteracao = UsuarioCadastro; } else UsuarioAlteracao = Settings.UsuarioAtual; if(EGUID.IsNullOrEmpty()) { if(!(this is Data.Configuracao.NumeroEGUID)) { EGUID = EGUIDExtensions.Create(EGUID, this); } } if(Empresa.IsNullOrEmpty()) Empresa = Settings.EmpresaAtual; if(UsuarioCadastro.IsNullOrEmpty()) UsuarioCadastro = Settings.UsuarioAtual; base.PerformBeforeSave(executeBefore, updating); }
public static Model.Cadastro.TabelaPreco.IItem Create(Model.Cadastro.TabelaPreco.ITabelaPreco tabelaPreco, EGUID eguid) { Data.Cadastro.TabelaPreco.Item result = new Data.Cadastro.TabelaPreco.Item(); result.Parent = tabelaPreco; result.Item = Data.Cadastro.Item.Produto.Acabado.Create(eguid); if (result.Item == null) return null;//Não encontrou o produto cadastrado Connection connection = null; try { connection = DbContext.CreateConnection(); DataReader dr = connection.ExecuteReader(@"SELECT GUIDTabelaPreco, GUIDItem, Preco FROM cad_TabelaPrecoItem WHERE GUIDTabelaPreco = @p1 AND GUIDItem = @p2", new[] { new Parameter { ParameterName = "@p1", Value = tabelaPreco.GUID }, new Parameter { ParameterName = "@p2", Value = result.Item.GUID } }); if (dr.Read()) { result.Preco = dr.GetDouble("Preco"); } } finally { connection.Close(); } return result; }
/// <summary> /// Carrega o movimento selecionado pelo usuário /// </summary> /// <param name="eguid">Código do movimento</param> private void CarregarMovimento(EGUID eguid) { IList<IMovimento> movimentos = new List<IMovimento>(); if (!string.IsNullOrEmpty(eguid)) { if (rbtDAV.Checked) { movimentos = new DAV().Find<IDAV>(new Where { { "fat_LanMovDav.EGUID", eguid} }).ToList<IMovimento>(); } else if (rbtPreVenda.Checked) { movimentos = new PreVenda().Find<IPreVenda>(new Where { { "fat_LanMovPv.EGUID", eguid } }).ToList<IMovimento>(); } else { movimentos = new Data.Faturamento.Lancamento.Movimento.DAV.OS.DAV().Find<Model.Faturamento.Lancamento.Movimento.DAV.OS.IDAV>(new Where { { "fat_LanMovDavOs.EGUID", eguid } }).ToList<IMovimento>(); } /* * Se não encontrou movimento na base do OpenPOS, vamos procurar na base da retaguarda */ if (movimentos.Count == 0) { Movimento = GetFromBackend().FirstOrDefault(); movimentos.Add(Movimento); } CarregarMovimento(movimentos.FirstOrDefault()); } }
/// <summary> /// Preenche o produto pelo EGUID passado /// </summary> /// <param name="eguid">código do produto</param> private void PopulateProduto(EGUID eguid) { List<IAcabado> list = new Acabado().Find<IAcabado>(new Where() { {"cad_Item.EGUID", eguid} }); PopulateProduto(list.Count > 0 ? list[0] : null); }
/// <summary> /// Retorna um novo produto pelo EGUID, identificando o seu tipo /// </summary> /// <param name="eguid">EGUID para pesquisar o produto</param> /// <param name="viewOnly">Se true, traz apenas os campos de base, como GUID, EGUID, Nome Fantasia e Razão Social</param> /// <returns></returns> public static ItemBase Create(EGUID eguid, bool viewOnly = true) { if(EGUID.IsNullOrEmpty(eguid)) return null; ItemBase result = null; Connection connection = null; try { connection = DbContext.CreateConnection(); string sql = @"SELECT TipoItem, GUID, EGUID FROM cad_Item LEFT JOIN cad_itemcodigobarra ON cad_itemcodigobarra.GUIDItem = cad_Item.GUID WHERE ( EGUID = @p1 OR cad_itemcodigobarra.Codigo = @p1 ) AND GUIDempresa = @empresa"; DataReader dr = connection.ExecuteReader(sql, new[] { new Parameter { Value = Settings.EmpresaAtual.GUID, ParameterName="@empresa" }, new Parameter { Value = eguid.ToString(), ParameterName="@p1" } }); if(dr.Read()) { TipoItem tipo = dr.GetValue<TipoItem>(0); result = Create((GUID)dr.GetString(1), tipo, viewOnly); } } finally { connection.Close(); } return result; }