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."); } }