Пример #1
0
        private async void ajustarEstoque(decimal estoque)
        {
            var m = new ProdutoDaoManager();

            var result = await XFrmWait.StartTask(Task.Run(()
                                                           => m.AjustarEstoque(produtoList, estoque)), "Ajustando estoque");

            if (result)
            {
                var msg = "O estoque do(s) produto(s) selecionado(s) foi atualizado!";
                XFrmOptionPane.ShowListTextArea(produtoList, msg);
                this.Dispose();
            }
        }
Пример #2
0
        /// <summary>
        /// Evento disparado quando terminada a leitura do codigo de barras
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void txtCodigoBarrras_KeyUp(object sender, KeyEventArgs e)
        {
            var txtCodBar = this.txtCodigoBarrasProduto.Text;

            //ação de ver o produto através do código de barras
            //testar usando um leitor real
            if (e.KeyCode == Keys.Enter && !txtCodBar.Equals(_codBarraProdutoAnt))
            {
                Produto find = new ProdutoDaoManager()
                               .GetProdutoByCodigoBarras(this.txtCodigoBarrasProduto.CodigoBarras);

                if (find != null)
                {
                    //cria uma copia para nao altera os dados do grid
                    Produto p = find.Clone();

                    Decimal qtde = txtCodigoBarrasProduto.Quantidade;
                    this._codBarraProdutoAnt = txtCodigoBarrasProduto.Text;

                    if (p == null)
                    {
                        lblDescricaoProduto.ForeColor = Color.Red;
                        lblDescricaoProduto.Text      = "Nenhum produto encontrado";
                        //alerta sonoro
                        SoundUtil.Exclamation();
                    }
                    else
                    {
                        btnSelecionarNow_Click(null, null);
                        lblDescricaoProduto.Text = p.DescricaoProduto + "\t" +
                                                   qtde + "x " + p.PrecoVenda + " = " + p.CalculaTotalProduto(p.PrecoVenda, qtde).ToString("N2");
                    }

                    //deixe o foco no codigo de barras
                    this.txtCodigoBarrasProduto.Focus();

                    //selecione todo o codigo ja presente no componente
                    this.txtCodigoBarrasProduto.SelectAll();
                }
            }
            else
            if (e.KeyCode != Keys.Back)
            {
                this._codBarraProdutoAnt = "";
            }
        }
Пример #3
0
        private async Task updateProdutoAsync()
        {
            var prdMng     = new ProdutoDaoManager();
            var categoria  = cbCategoriaProduto.GetSelectedItem <CategoriaProduto>();
            var unidMedida = cbUnidadeMed.GetSelectedItem <UnidadeMedida>();

            if (categoria != null && unidMedida != null)
            {
                var ctx = new BalcaoContext();

                var pUpdate = await ctx.ProdutoDao.FindAsync(produto.IdProduto);

                pUpdate.DescricaoProduto       = txtDescricao.Text;
                pUpdate.IdCategoriaProduto     = categoria.IdCategoriaProduto;
                pUpdate.IdUnidadeMedidaProduto = unidMedida.IdUnidadeMedida;
                pUpdate.MargemLucro            = ParseUtil.ToDecimal(txtMargemLucro.Text);
                pUpdate.PrecoCompra            = ParseUtil.ToDecimal(txtPrecoCompra.Text);
                pUpdate.PrecoVenda             = ParseUtil.ToDecimal(txtPrecoVenda.Text);
                pUpdate.QuantidadeProduto      = ParseUtil.ToDecimal(txtQtdEstoque.Text, 3);
                //pUpdate.StatusProduto = (StatusProduto)cbStatusProduto.SelectedItem;

                //adicione a alteracao ao produto
                pUpdate.AlteracoesProduto.Add(new AlteracaoProduto(pUpdate.IdProduto,
                                                                   "A", 0.0m, DateTime.Now, produto.PrecoVenda, produto.PrecoCompra, produto.QuantidadeProduto));

                SplashScreenManager.ShowForm(typeof(XFrmWait));

                var result = await ctx.ProdutoDao.UpdateAsync(pUpdate);

                if (result)
                {
                    cbStatusProduto.Text = pUpdate.StatusProduto.ToString();
                    FillStatus();
                    XMessageIts.Mensagem("Produto atualizado com sucesso!",
                                         "SUCESSSO", MessageBoxIcon.Information);
                    this.produto = await ctx.ProdutoDao.FindAsync(produto.IdProduto);

                    popularCampos();


                    this.ProdutoUpdate = pUpdate;
                }
                SplashScreenManager.CloseForm();
            }
        }
Пример #4
0
        private void gridViewProdutos_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            if (_lc.UserManager.IsSuperUser(_user) &&
                _user.NomeUtilizador == "admin")
            {
                var row = gridViewProdutos.GetFocusedRow <Produto>();
                if (row != null)
                {
                    var ctx     = new BalcaoContext();
                    var current = ctx.ProdutoDao.Find(row.IdProduto);

                    //se existe um produto com o codigo
                    // e produto é diferente do q estou editando
                    if (e.Column == colCodigoBarras)
                    {
                        string codigoBarras = e.Value.ToString();
                        var    find         = new ProdutoDaoManager().GetProdutoByCodigoBarras(codigoBarras);

                        if (find != null && row.IdProduto != find.IdProduto)
                        {
                            XMessageIts.Advertencia("Código de barras " + codigoBarras + " já utilizado !");

                            gridViewProdutos.SetFocusedValue(current.CodigoBarras);
                        }
                        else
                        {
                            //atualize com os dados da celula
                            current.Update(row);
                            //efetiva transacao
                            ctx.ProdutoDao.Update(current);
                            gridViewProdutos.RefreshRow(e.RowHandle);
                        }
                    }
                    else
                    {
                        //atualize com os dados da celula
                        current.Update(row);

                        ctx.ProdutoDao.Update(current);
                        gridViewProdutos.RefreshRow(e.RowHandle);
                        row.Update(current);
                    }
                }
            }
        }
Пример #5
0
        private void findAddProduto(string txtCodBar)
        {
            var     ctx   = new BalcaoContext().ProdutoDao;
            var     split = txtCodBar.Split('*');
            Decimal qtde  = 0;
            Produto p     = null;

            if (txtCodBar.Contains("*") && split.Length > 1)
            {
                p    = new ProdutoDaoManager().GetProdutoByCodigoBarras(split[1]);
                qtde = ParseUtil.ToDecimal(split[0]);
            }
            else if (split.Length > 0)
            {
                p = new ProdutoDaoManager().GetProdutoByCodigoBarras(split[0]);
                //minimo
                qtde = 1;
            }

            if (p == null)
            {
                lblDescricaoProduto.ForeColor = Color.Red;
                lblDescricaoProduto.Text      = "Nenhum produto encontrado";
            }
            else
            {
                AddProduto(p, qtde);
            }

            //deixe o foco no codigo de barras
            this.txtCodigoBarrasProduto.Focus();
            //selecione todo o codigo ja presente no componente
            this.txtCodigoBarrasProduto.SelectAll();
            //foco no top
            this.listBoxControlProdutos.SelectedIndex = 0;
        }
Пример #6
0
        private void btnQtdPrd_Click(object sender, EventArgs e)
        {
            var qtd = new ProdutoDaoManager().GetQuantidadeAtualProduto(_produtoAnt.IdProduto);

            btnQtdPrd.Text = qtd.ToString();
        }
Пример #7
0
        private void btnSalvar_ItemClick(object sender, ItemClickEventArgs e)
        {
            var novo = indexarDados();

            if (novo.CodigoBarras.IsContainsNumber() || string.IsNullOrEmpty(novo.CodigoBarras))
            {
                using (var ctx = new BalcaoContext())
                {
                    var manager = new ProdutoDaoManager();
                    //sempre cheque o codigo de barras
                    var find = manager.GetProdutoByCodigoBarras(novo.CodigoBarras);

                    if (find != null && novo.IdProduto != this._produtoAnt.IdProduto)
                    {
                        XMessageIts.Advertencia("Código de barras " + novo.CodigoBarras + " já utilizado !");
                    }
                    var  pFind  = manager.GetProdutoByDescricao(novo.DescricaoProduto);
                    bool valido = false;

                    if (pFind != null)
                    {
                        //se to atualizando
                        if (_produtoAnt != null && novo.IdProduto == pFind.IdProduto)
                        {
                            valido = true;
                        }
                    }
                    else
                    {
                        valido = true;
                    }

                    if (valido)
                    {
                        var current = ctx.ProdutoDao.Find(_produtoAnt.IdProduto);

                        if (chEditar.Checked && !novo.DescricaoProduto.Equals(current.DescricaoProduto))
                        {
                            XMessageIts.Advertencia("Você está alterando o nome do produto.\n" +
                                                    "Todas as relações do produto serão afetas !",
                                                    "*** Atenção ***");
                        }
                        //atualize o produto
                        current.Update(novo);

                        var result = ctx.ProdutoDao.Update(current);

                        if (result)
                        {
                            this._produtoAnt.Update(current);
                            XMessageIts.Mensagem("Produto atualizado com sucesso!");
                        }
                    }
                    else
                    {
                        XMessageIts.Advertencia("Nome \"" + novo.DescricaoProduto + "\" já utilizado !",
                                                "Aviso");
                    }
                }
            }
            else
            {
                XMessageIts.Mensagem("Código de barras deve possui pelo menos um número e não pode conter espaços");
            }
        }
Пример #8
0
        private void btnSalvar_Click(object sender, EventArgs e)
        {
            Produto novo = indexarDados();

            using (var ctx = new BalcaoContext())
            {
                var manager = new ProdutoDaoManager();

                //se foi setado o codigo de barras
                if (string.IsNullOrEmpty(novo.CodigoBarras) == false)
                {
                    //sempre cheque o codigo de barras
                    var find = manager.GetProdutoByCodigoBarras(novo.CodigoBarras);

                    if (find != null)
                    {
                        var op = XMessageIts.Confirmacao("Código de barras " + novo.CodigoBarras + " já utilizado !\n\n"
                                                         + "Gerar código de barra aleatóriamente ?");

                        if (op == DialogResult.Yes)
                        {
                            novo.CodigoBarras = null;
                        }
                        else
                        {
                            return;
                        }
                    }
                }
                //localizado pelo nome
                var current = manager.GetProdutoByDescricao(novo.DescricaoProduto);

                if (current != null)
                {
                    XMessageIts.Advertencia("Nome \"" + novo.DescricaoProduto + "\" já utilizado !", "Aviso");
                }
                else
                {
                    //se estou cadastrando um novo produto
                    if (produtoAnt == null)
                    {
                        generateCodigoBarras(ctx, novo);

                        if (ctx.ProdutoDao.Save(novo))
                        {
                            XMessageIts.Mensagem("Produto salvo com sucesso.");
                            this.Dispose();
                        }
                    }
                    else
                    {
                        //estou atualizando o produto
                        //nao vai entrar nesse caso pois a tela de update eh tela detalhada
                        var pro = ctx.ProdutoDao.Find(produtoAnt.IdProduto);

                        pro.FotoProduto = novo.FotoProduto;

                        if (ctx.ProdutoDao.Update(pro))
                        {
                            XMessageIts.Mensagem("Produto atualizado com sucesso.");
                            this.Dispose();
                        }
                    }
                }
            }
        }