Beispiel #1
0
 private void adicionarProdutoDaBusca()
 {
     Produto p = new Produto(D.Pedido);
     p.CarregarProduto(Convert.ToInt32(grdProduto[0, 0]));
     p.AcaoProduto = Produto.EnumAcaoProduto.ItemAdicionar;
     FrmItem f = new FrmItem(p);
     f.Show();
 }
Beispiel #2
0
 private void btnTesteCargaInserir_Click(object sender, EventArgs e)
 {
     string qryProd =@"
     Select distinct top (" + txtTesteCargaQtdProdutos.Text + @")
             *
     from
             produto
     ";
     Produto p;
     DataTable dt = D.Bd.DataTablePreenche(qryProd);
     Cursor.Current = Cursors.WaitCursor;
     //double preco;
     int produtosNaoIncluidos = 0;
     int quantidadeRequerida = 0;
     int estoque;
     for (int i = 0; i < dt.Rows.Count; ++i)
     {
         estoque = Convert.ToInt32(dt.Rows[i]["estoque"]);
         //preco =
         //p = new Produto(D.Pedido, Convert.ToInt32(dt.Rows[i]["estoque"]), Convert.ToDouble(dt.Rows[i]["preco_venda"]), 0);
         if (!Parametro.VenderSemEstoque && estoque < 0)
         {
             produtosNaoIncluidos++;
             continue;
         }
         p = new Produto(D.Pedido);
         p.CarregarProduto(Convert.ToInt32(dt.Rows[i]["id_produto"]));
         p.AcaoProduto = Produto.EnumAcaoProduto.ItemAdicionar;
         if (Parametro.VenderSemEstoque && estoque < 0)
             quantidadeRequerida = 1;
         else
             quantidadeRequerida = estoque;
         try
         {
             p.QuantidadeRequerida = quantidadeRequerida;
             D.Pedido.LstItem.Add(p);
         }
         catch
         {
             produtosNaoIncluidos++;
             continue;
         }
     }
     Cursor.Current = Cursors.Default;
     MessageBox.Show("Número de produtos adicionados: " + (dt.Rows.Count - produtosNaoIncluidos));
 }
Beispiel #3
0
 public FrmItem(Produto p)
     : this()
 {
     produto = p;
     valorPedidoMenosProdutoSendoEditado = D.Pedido.Valor - p.PrecoVendaTotal;
 }
Beispiel #4
0
        private void AddProduto()
        {
            int i;
            try
            {
                i = grdProduto.CurrentRowIndex;
                lastProductAddedIndex = i;
            }
            catch
            {
                return;
            }
            if (i == -1)
                return;

            Produto p = new Produto(D.Pedido);
            p.CarregarProduto(Convert.ToInt32(grdProduto[i, 0]));
            p.AcaoProduto = Produto.EnumAcaoProduto.ItemAdicionar;
            //FrmItem f = new FrmItem(p); // Reativar para que vá ao próximo item a ser vendido
            Util.FormExibirDialog(new FrmItem(p));
            //f.Closing += new CancelEventHandler(f_Closing);
        }
Beispiel #5
0
 public Grade(Produto produto)
 {
     Produto = produto;
 }
Beispiel #6
0
 public FrmGrade(Produto _produto, DataTable _dtGrade)
 {
     InitializeComponent();
     produto = _produto;
     dtGrade = _dtGrade;
 }
Beispiel #7
0
        private bool inserirItemPedido(SqlCeTransaction dbTrans, Produto p)
        {
            int rf;

            //Dá baixa no estoque:
            string sqlUpdateEstoque = @"
            update
                    produto
            set
                    estoque=estoque - " + p.QuantidadeRequerida +
            @" where
                    id_produto =  " + p.Id;
            rf = D.Bd.ExecuteNonQuery(sqlUpdateEstoque, dbTrans);
            if (rf < 1)
            {
                dbTrans.Rollback();
                return false;
            }

            string sqlInsertItem = "";
            sqlInsertItem = @"
            insert into
                item_pedido
            (id_pedido,
             id_funcionario,
             id_produto,
             quantidade,
             valor_unitario,
             desconto)
                    values ('" +
            D.Pedido.Id + "'," +
            D.Funcionario.Id + "," +
            p.Id + "," +
            p.QuantidadeRequerida + "," +
            Bd.RealPtParaBd(p.PrecoUtilizado.ToString()) + "," +
            Bd.Numerico(Fcn.RoundComputing(p.Desconto, Parametro.ProdutoPrecoCasasDecimais)) + ")";

            rf = D.Bd.ExecuteNonQuery(sqlInsertItem, dbTrans);
            if (rf < 1)
            {
                dbTrans.Rollback();
                return false;
            }

            //Verifica se o pedido tem grade e insere
            p.IdItemPedido.V = D.Bd.I("SELECT @@IDENTITY AS UltimaIdentity", dbTrans);

            if (p.IdGrade.Iniciada)
            {
                rf = p.Grade.Inserir(dbTrans);
                if (rf < 1)
                {
                    try
                    {
                        dbTrans.Rollback();
                    }
                    catch { }
                    return false;
                }
            }
            return true;
        }
Beispiel #8
0
        /// <summary>
        /// Executado depois que é feita alguma moficação no pedido, tipo outra tabela de preço
        /// Tenta manter quantidades e descontos originais, se não conseguir vai zerando a quantidade ou o desconto
        /// do produto
        /// </summary>
        private void pedidoAdaptarDianteNovasCircunstancias()
        {
            Produto p, clone;
            int c = LstItem.Count;
            //Valores desejados mas que talvez não sejam possíveis dado as novas condições
            int quantidadeRequeridaDesejada;
            double descontoDesejado;
            bool pedidoNaoPodeSerAlterado = false;
            List<Produto> itemBackupLst = new List<Produto>();

            //Fazer backup de todos os itens caso nao seja possivel manter a quantidade zerando o desconto

            foreach (Produto it in LstItem)
            {
                clone = new Produto(D.Pedido);
                clone = (Produto)((ICloneable)it).Clone();
                itemBackupLst.Add(clone);
            }

            List<string> ExceptionMessageLst = new List<string>();
            for (int i = c - 1; i >= 0; --i)
            {
                p = LstItem[i];
                LstItem.RemoveAt(i);
                quantidadeRequeridaDesejada = p.QuantidadeRequerida;
                descontoDesejado = p.Desconto;
                p.QuantidadeRequerida = 0;
                p.Desconto = 0;
                p.CarregarProduto(p.Id);

                //Tenta aplicar tudo desejado
                try
                {
                    p.QuantidadeRequerida = quantidadeRequeridaDesejada;
                    p.Desconto = descontoDesejado;
                    D.Pedido.LstItem.Add(p);
                }
                catch
                {
                    //Tenta zerar o desconto mantendo a quantidade
                    try
                    {
                        p.QuantidadeRequerida = quantidadeRequeridaDesejada;
                        p.Desconto = 0;
                        D.Pedido.LstItem.Add(p);
                    }
                    //Desiste e guarda e msg da exceção
                    catch (Exception ex)
                    {
                        p.QuantidadeRequerida = 0;
                        p.Desconto = 0;
                        pedidoNaoPodeSerAlterado = true;
                        ExceptionMessageLst.Add("item " + p.Id + ex.Message + ", ");
                    }
                }
            }
            if (pedidoNaoPodeSerAlterado)
            {
                string Msg = "Não foi possível modificar algum ou alguns itens do pedido ";
                foreach (string s in ExceptionMessageLst)
                    Msg += s;
                Msg = Msg.Substring(0, Msg.Length - 2);

                //Restaurar backup
                LstItem.Clear();
                foreach (Produto it in itemBackupLst)
                {
                    LstItem.Add(it);
                }
                //Lança exceção para desfazer a atividade que estava tentando ser feita
                throw new Exception(Msg);
            }
            clone = null;
        }
Beispiel #9
0
        private bool atualizaTabelaItemPedido(SqlCeTransaction dbTrans, Produto p)
        {
            int rf;

            //Atualiza o estoque
            string sqlPedidoOriginalQuantidade = @"
            select
                    quantidade
            from
                    item_pedido
            where id_pedido='" + D.Pedido.Id + "' and id_produto=" + p.Id;

            int quantidadeOriginal = D.Bd.I(sqlPedidoOriginalQuantidade, dbTrans);
            string sqlUpdateEstoque = @"
            update
                    produto
            set
                    estoque=estoque + " + quantidadeOriginal + " - " + p.QuantidadeRequerida + @"
            where
                    id_produto = " + p.Id;
            D.Bd.ExecuteNonQuery(sqlUpdateEstoque, dbTrans);

            string sqlUpdateItem = "";
            sqlUpdateItem = @"
            update item_pedido
            set
            quantidade=" + p.QuantidadeRequerida + "," +
            "id_funcionario=" + D.Funcionario.Id + "," +
            "valor_unitario=" + Bd.RealPtParaBd(p.PrecoUtilizado.ToString()) + "," +
            "desconto=" + p.Desconto +
            " where id_pedido='" + D.Pedido.Id + "' and id_produto=" + p.Id;

            rf = D.Bd.ExecuteNonQuery(sqlUpdateItem, dbTrans);
            if (rf < 1)
            {
                dbTrans.Rollback();
                return false;
            }
            //Verifica se o pedido tem grade e atualiza
            if (p.IdGrade.Iniciada)
            {
                rf = p.Grade.Atualizar(dbTrans);
                if (rf < 1)
                {

                    dbTrans.Rollback();
                    return false;
                }
            }
            return true;
        }
Beispiel #10
0
 /// <summary>
 /// Inclue na lstItem e ou decrementa o estoque
 /// </summary>
 /// <param name="pt"></param>
 public void ListaInserirProduto(Produto pt)
 {
     LstItem.Add(pt);
     pt.AcaoProduto = Produto.EnumAcaoProduto.ItemAdicionar;
     pt.estoque.V -= pt.QuantidadeRequerida;
 }
Beispiel #11
0
 public void ListaEditarProduto(Produto pt)
 {
     pt.AcaoProduto = Produto.EnumAcaoProduto.ItemAlterar;
     pt.estoque.V -= pt.QuantidadeRequerida;
 }
Beispiel #12
0
        /// <summary>
        /// Exclui os itens marcados para exclusão
        /// </summary>
        /// <returns></returns>
        public bool ItensExcluir(SqlCeTransaction dbTrans, Produto p)
        {
            int rf;

            //Incrementa estoque:
            string sqlUpdateEstoque = @"
            update
                    produto
            set
                    estoque=estoque + " + p.QuantidadeRequerida +
            @" where
                    id_produto =  " + p.Id;
            rf = D.Bd.ExecuteNonQuery(sqlUpdateEstoque, dbTrans);

            //Verificar se funcionou...

            string sqlDelItemPedido = @"
            Delete from
                    item_pedido
            where
                    id_pedido='" + Id + "' and id_produto=" + p.Id;
            rf = D.Bd.ExecuteNonQuery(sqlDelItemPedido, dbTrans);
            //Esta trazendo zero mesmo que tenha tido sucesso na delecao
            //if (rf < 1)
            //{
            //    dbTrans.Rollback();
            //    return false;
            //}

            if (p.IdGrade.Iniciada)
            {
                p.Grade.Excluir(dbTrans);
            }
            return true;
        }
Beispiel #13
0
        //da
        public void Carregar(Guid id)
        {
            Id = id;

            Produto clone;
            string sqlPedido = @"select * from pedido where id_pedido='" + Id + "'";
            SqlCeDataReader rdCarga = D.Bd.Linha(sqlPedido);
            IdClientePocket = (Guid)(rdCarga["id_cliente_pocket"]);
            IdClienteStore = Bd.IntZeroIfNull(rdCarga["id_cliente_store"]);
            Data = Convert.ToDateTime(rdCarga["data"]);

            try
            {
                Bdi = Convert.ToDouble(rdCarga["bdi"]);
            }
            catch { }

            IdFuncionario = Convert.ToInt32(rdCarga["id_funcionario"]);
            idTabelaPreco = Bd.IntZeroIfNull(rdCarga["id_tabela_preco"]);
            idFormaPagamento = Bd.IntZeroIfNull(rdCarga["id_forma_pagamento"]);
            string sqlEspecieFinanceira = @"SELECT     id_especie_financeira
                FROM         item_forma_pagamento
                    WHERE    id_forma_pagamento = " + IdFormaPagamento;
            idEspecieFinanceira = D.Bd.I(sqlEspecieFinanceira);

            Status = Convert.ToString(rdCarga["status"]);
            valorBd = Bd.IntZeroIfNull(rdCarga["valor"]);
            Observacao = Convert.ToString(rdCarga["observacao"]);

            int quantidade, idProduto;
            double valorUnitario, desconto;

            DataTable dtItemPedido = D.Bd.DataTablePreenche("select * from item_pedido where id_pedido ='" + Id + "'", "item_pedido");
            for (int y = 0; y < dtItemPedido.Rows.Count; ++y)
            {
                quantidade = Bd.IntZeroIfNull(dtItemPedido.Rows[y]["quantidade"]);
                valorUnitario = Bd.DoubleZeroIfNull(dtItemPedido.Rows[y]["valor_unitario"]);
                desconto = Bd.DoubleZeroIfNull(dtItemPedido.Rows[y]["desconto"]);
                idProduto = Convert.ToInt32(dtItemPedido.Rows[y]["id_produto"]);

                Produto p = new Produto(this, quantidade, valorUnitario, desconto);
                p.CarregarProduto(idProduto);
                p.PrecosCalcularEGuardar();
                //Incrementa a quantidade do item caso esteja editando
                //Isto é repoe o estoque na memória para edição
                p.estoque.V += quantidade;

                //Carregar grade
                if (p.IdGrade.Iniciada)
                {
                    p.Grade = new Grade(p);
                    p.Grade.Carregar();
                }
                LstItem.Add(p);
                clone = new Produto(D.Pedido);
                clone = (Produto)((ICloneable)p).Clone();
                ItemCarregadosLst.Add(clone);
            }
            rdCarga.Close();
            return;
        }