public EstoqueDisponivel ConsultarEstoqueDisponivel(int IDProduto, int IDFilial)
        {
            try
            {
                EstoqueDisponivel estoqueDisponivel = new EstoqueDisponivel();

                conexao.LimparParametros();
                conexao.AdicionarParametros("@IDProduto", IDProduto);
                conexao.AdicionarParametros("@IDFilial", IDFilial);

                DataTable dataTable = conexao.ExecutarConsulta(CommandType.StoredProcedure, "uspEstoqueDisponivel");

                foreach (DataRow dataRow in dataTable.Rows)
                {
                    estoqueDisponivel.Filial               = Convert.ToString(dataRow["Filial"]);
                    estoqueDisponivel.FilialTipo           = Convert.ToString(dataRow["TipoFilial"]);
                    estoqueDisponivel.NomeProduto          = Convert.ToString(dataRow["Produto"]);
                    estoqueDisponivel.QuantidadeDisponivel = Convert.ToInt32(dataRow["QuantidadeDisponivel"]);
                    estoqueDisponivel.QuantidadeEstoque    = Convert.ToInt32(dataRow["QuantidadeEstoque"]);
                    estoqueDisponivel.QuantidadeReservada  = Convert.ToInt32(dataRow["QuantidadeReservada"]);
                }

                return(estoqueDisponivel);
            }
            catch (Exception)
            {
                throw new Exception("Estoque disponível está apresentando divergência nos dados. Provavelmente a quantidade está negativa.");
            }
        }
Example #2
0
        private void btnOk_Click(object sender, EventArgs e)
        {
            if (txtCliente.Text != "" && txtproduto.Text != "")
            {
                #region Verifica Se Existe o Produto No Estoque Antes de Inserir na Lista
                try
                {
                    EstoqueDisponivel estoqueDisponivel = new EstoqueDisponivel();
                    EstoqueNegocio    estoqueNegocio    = new EstoqueNegocio();

                    estoqueDisponivel = estoqueNegocio.ConsultarEstoqueDisponivel(produtoSelecionado.IDProduto, filialLogada.IDFilial);

                    if (estoqueDisponivel.QuantidadeDisponivel < Convert.ToInt32(txtQuantidade.Text))
                    {
                        MessageBox.Show
                            ("Não existe a quantidade solicitada em estoque do produto " + estoqueDisponivel.NomeProduto +
                            ". Quantidade disponível: " + estoqueDisponivel.QuantidadeDisponivel +
                            " . Quantidade reservada: " + estoqueDisponivel.QuantidadeReservada);
                        return;
                    }
                    else
                    {
                        EstoqueReservadoNegocio estoqueReservadoNegocio = new EstoqueReservadoNegocio();
                        EstoqueReservado        estoqueReservado        = new EstoqueReservado();

                        estoqueReservado.IDFilial   = filialLogada.IDFilial;
                        estoqueReservado.IDProduto  = produtoSelecionado.IDProduto;
                        estoqueReservado.Quantidade = Convert.ToInt32(txtQuantidade.Text);
                        string retorno = estoqueReservadoNegocio.Inserir(estoqueReservado);

                        int IDProduto;
                        if (!int.TryParse(retorno, out IDProduto))
                        {
                            MessageBox.Show("Erro ao inserir produto no estoque reservado");
                            return;
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Erro ao consultar estoque disponível. Detalhes: " + ex.Message);
                    return;
                }

                #endregion


                #region Adicionar Produto Na Lista De Venda
                try
                {
                    if (pedido == null)
                    {
                        //Cria o pedido
                        pedido                      = new Pedido();
                        pedido.IDOperacao           = 1;
                        pedido.IDPessoaDestinatario = clienteSelecionado.IDCliente;
                        pedido.IDPessoaEmitente     = filialLogada.IDFilial;
                        pedido.IDSituacao           = 1;
                    }

                    //adiciono item no pedido
                    if (pedidoItens == null)
                    {
                        pedidoItens = new PedidoItemColecao();
                    }


                    if (pedidoItens.Exists(p => p.IDProduto == produtoSelecionado.IDProduto))
                    {
                        try
                        {
                            var pedidoItemExistente = pedidoItens.Single(p => p.IDProduto == produtoSelecionado.IDProduto);
                            pedidoItemExistente.Quantidade += Convert.ToInt32(txtQuantidade.Text);
                            pedidoItemExistente.ValorTotal += (produtoSelecionado.PrecoVenda * Convert.ToInt32(txtQuantidade.Text));
                            decimal valorDescontoItemExistente = ((produtoSelecionado.PrecoVenda * Convert.ToInt32(txtQuantidade.Text)) * Convert.ToDecimal(txtDescontoItem.Text.Replace("%", ""))) / 100;
                            pedidoItemExistente.ValorDesconto += decimal.Round(valorDescontoItemExistente, 2);                                                      //45
                            decimal valorTotalItemComDesconto = (produtoSelecionado.PrecoVenda * Convert.ToInt32(txtQuantidade.Text)) - valorDescontoItemExistente; //22,5
                            pedidoItemExistente.ValorTotalComDesconto += decimal.Round(valorTotalItemComDesconto, 2);
                            pedidoItemExistente.PercentualDesconto     = decimal.Round((pedidoItemExistente.ValorDesconto * 100) / pedidoItemExistente.ValorTotal, 2);
                            pedidoItem = pedidoItemExistente;

                            //Adiciona valor total e total com desconto ao pedido
                            decimal valorTotalDoItemNovo = produtoSelecionado.PrecoVenda * Convert.ToInt32(txtQuantidade.Text);
                            pedido.ValorTotal += valorTotalDoItemNovo;
                            txtValorTotal.Text = pedido.ValorTotal.ToString();
                            decimal valorTotalDoitemNovoComDesconto = valorTotalDoItemNovo - valorDescontoItemExistente;
                            pedido.ValorTotalComDesconto += valorTotalDoitemNovoComDesconto;
                            txtValorFinal.Text            = pedido.ValorTotalComDesconto.ToString();
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("Erro ao inserir produto. Detalhes: " + ex.Message);
                        }
                    }
                    else
                    {
                        pedidoItem             = new PedidoItem();
                        pedidoItem.IDProduto   = produtoSelecionado.IDProduto;
                        pedidoItem.ProdutoNome = produtoSelecionado.Nome;
                        pedidoItem.Quantidade  = Convert.ToInt32(txtQuantidade.Text);
                        pedidoItem.ValorTotal  = produtoSelecionado.PrecoVenda * Convert.ToInt32(txtQuantidade.Text);
                        decimal valorDescontoItem = ((produtoSelecionado.PrecoVenda * Convert.ToInt32(txtQuantidade.Text)) * Convert.ToDecimal(txtDescontoItem.Text.Replace("%", ""))) / 100;
                        pedidoItem.ValorDesconto         = decimal.Round(valorDescontoItem, 2);
                        pedidoItem.ValorUnitario         = produtoSelecionado.PrecoVenda;
                        pedidoItem.ValorTotalComDesconto = decimal.Round((produtoSelecionado.PrecoVenda * Convert.ToInt32(txtQuantidade.Text)) - valorDescontoItem, 2);
                        pedidoItem.PercentualDesconto    = decimal.Round((pedidoItem.ValorDesconto * 100) / pedidoItem.ValorTotal, 2);

                        //Adiciona valor total e total com desconto ao pedido
                        pedido.ValorTotal            += pedidoItem.ValorTotal;
                        txtValorTotal.Text            = pedido.ValorTotal.ToString();
                        pedido.ValorTotalComDesconto += pedidoItem.ValorTotalComDesconto;
                        txtValorFinal.Text            = pedido.ValorTotalComDesconto.ToString();

                        pedidoItens.Add(pedidoItem);
                    }



                    dbgListaProdutos.DataSource         = null;
                    dbgListaProdutos.DataSource         = pedidoItens;
                    dbgListaProdutos.Columns[0].Visible = false;
                    dbgListaProdutos.Columns[1].Visible = false;
                    dbgListaProdutos.Update();
                    dbgListaProdutos.Refresh();
                    txtproduto.Clear();
                    txtDescontoItem.Text = "0";
                    //txtQuantidade.Text = "1";
                    btnProcurarProduto.Focus();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Erro ao inserir produto no pedido. Detalhes: " + ex.Message);
                }
            }
            #endregion

            else
            {
                MessageBox.Show("É necesssário adicionar um cliente e selecionar um produto para inserir na venda.");
            }
        }