private void simpleButton1_Click(object sender, EventArgs e) { try { decimal percent = ParseUtil.ToDecimal(txtPorcetagemPromocao.Text); var ctx = new BalcaoContext(); int vCount = list.Count; int i = 0; foreach (var p in list) { var pFind = ctx.ProdutoDao.Find(p.IdProduto); var alteracao = new AlteracaoProduto(p.IdProduto, "P", percent, DateTime.Now, p.PrecoVenda, p.PrecoCompra, p.QuantidadeProduto); pFind.PrecoVenda = pFind.PrecoVenda - ((pFind.PrecoVenda * percent) / 100); pFind.MargemLucro = pFind.CalcularMargemLucro(pFind.PrecoVenda, pFind.PrecoCompra); pFind.AlteracoesProduto.Add(alteracao); ctx.ProdutoDao.Update(pFind); i++; } if (i == vCount) { XMessageIts.Mensagem("Promoção Lançada " + "=> Devemos criar um estrategia para voltar todos os itens ao normal apos um determinado periodo"); this.Dispose(); } } catch (Exception ex) { XMessageIts.ExceptionMessage(ex); } }
public async Task <bool> AjustarEstoque(List <Produto> produtoList, decimal estoque) { using (var ctx = new BalcaoContext()) { int i = 0; int vCount = produtoList.Count; foreach (var p in produtoList) { var pFind = ctx.ProdutoDao.Find(p.IdProduto); var newQtde = ParseUtil.ToDecimal(estoque); var alteracao = new AlteracaoProduto(p.IdProduto, "E", 0.0m, DateTime.Now, p.PrecoVenda, p.PrecoCompra, p.QuantidadeProduto); pFind.AlteracoesProduto.Add(alteracao); pFind.QuantidadeProduto = GetNewQtdAjustarEstoqueProduto(pFind, newQtde); if (pFind.QuantidadeProduto <= 0) { pFind.StatusProduto = TypeStatusProduto.SemEstoque; } else { pFind.StatusProduto = TypeStatusProduto.Ativo; } bool r = await ctx.ProdutoDao.UpdateAsync(pFind); if (r) { //passa atualizacao pro objeto do grid p.Update(pFind); } i++; } if (i == vCount) { return(true); } else { return(false); } } }