Example #1
0
        /// <summary>
        /// Atualiza os dados de um produto da saída
        /// </summary>
        /// <param name="saidaProduto"></param>
        /// <param name="saida"></param>
        public void Atualizar(SaidaProduto saidaProduto, Saida saida)
        {
            if (saidaProduto.Quantidade == 0)
            {
                throw new NegocioException("A quantidade do produto não pode ser igual a zero.");
            }
            else if (saidaProduto.ValorVendaAVista <= 0)
            {
                throw new NegocioException("O preço de venda do produto deve ser maior que zero.");
            }
            else if (saida.TipoSaida == Saida.TIPO_VENDA)
            {
                throw new NegocioException("Não é possível alterar produtos de uma Venda cujo Comprovante Fiscal já foi emitido.");
            }
            else if ((saida.TipoSaida == Saida.TIPO_REMESSA_DEPOSITO) && (saida.Nfe != null) && (!saida.Nfe.Equals("")))
            {
                throw new NegocioException("Não é possível alterar produtos numa transferência para depósito cuja nota fiscal já foi emitida.");
            }
            else if ((saida.TipoSaida == Saida.TIPO_DEVOLUCAO_FORNECEDOR) && (saida.Nfe != null) && (!saida.Nfe.Equals("")))
            {
                throw new NegocioException("Não é possível alterar produtos numa devolução para fornecedor cuja nota fiscal já foi emitida.");
            }


            var query = from saidaProdutoE in saceContext.SaidaProdutoSet
                        where saidaProdutoE.codSaidaProduto == saidaProduto.CodSaidaProduto
                        select saidaProdutoE;

            foreach (SaidaProdutoE _saidaProdutoE in query)
            {
                Atribuir(saidaProduto, _saidaProdutoE);
            }
            saceContext.SaveChanges();
        }
Example #2
0
        /// <summary>
        /// Insere um novo produto na saída
        /// </summary>
        /// <param name="saidaProduto"></param>
        /// <param name="saida"></param>
        /// <returns></returns>
        public Int64 Inserir(SaidaProduto saidaProduto, Saida saida)
        {
            if (saidaProduto.Quantidade == 0)
            {
                throw new NegocioException("A quantidade do produto não pode ser igual a zero.");
            }
            else if (saidaProduto.ValorVendaAVista <= 0)
            {
                throw new NegocioException("O preço de venda do produto deve ser maior que zero.");
            }
            else if (saida.TipoSaida.Equals(Saida.TIPO_VENDA))
            {
                throw new NegocioException("Não é possível inserir produtos de uma Venda cujo Comprovante Fiscal já foi emitido.");
            }
            else if (saida.TipoSaida.Equals(Saida.TIPO_REMESSA_DEPOSITO) && string.IsNullOrEmpty(saida.Nfe))
            {
                throw new NegocioException("Não é possível inserir produtos em uma transferência para depósito cuja nota fiscal já foi emitida.");
            }
            else if (saida.TipoSaida.Equals(Saida.TIPO_RETORNO_DEPOSITO) && string.IsNullOrEmpty(saida.Nfe))
            {
                throw new NegocioException("Não é possível inserir produtos em um retorno de depósito cuja nota fiscal já foi emitida.");
            }
            else if (saida.TipoSaida.Equals(Saida.TIPO_DEVOLUCAO_FORNECEDOR) && string.IsNullOrEmpty(saida.Nfe))
            {
                throw new NegocioException("Não é possível inserir produtos em uma devolução para fornecedor cuja nota fiscal já foi emitida.");
            }

            SaidaProdutoE _saidaProdutoE = new SaidaProdutoE();

            Atribuir(saidaProduto, _saidaProdutoE);

            repSaidaProduto.Inserir(_saidaProdutoE);
            repSaidaProduto.SaveChanges();
            return(_saidaProdutoE.codSaidaProduto);
        }
Example #3
0
        /// <summary>
        /// Estorna dos lotes do estoque uma determinada quantidade
        /// </summary>
        /// <param name="produto"></param>
        /// <param name="dataValidade"></param>
        /// <param name="quantidadeDevolvida"></param>
        private void EstornarItensVendidosEstoque(SaidaProduto saidaProduto)
        {
            decimal quantidadeDevolvida           = Math.Abs(saidaProduto.Quantidade);
            List <EntradaProduto> entradaProdutos = ObterVendidosOrdenadoPorEntrada(saidaProduto.CodProduto);
            Decimal quantidadeRetornada           = 0;

            if (entradaProdutos != null)
            {
                if (saidaProduto.TemVencimento)
                {
                    foreach (EntradaProduto entradaProduto in entradaProdutos)
                    {
                        if ((entradaProduto.DataValidade.Date.Equals(saidaProduto.DataValidade.Date)) && (quantidadeRetornada < quantidadeDevolvida))
                        {
                            if (entradaProduto.Quantidade <= (entradaProduto.QuantidadeDisponivel + (quantidadeDevolvida - quantidadeRetornada)))
                            {
                                entradaProduto.QuantidadeDisponivel += quantidadeDevolvida - quantidadeRetornada;
                                quantidadeRetornada += quantidadeDevolvida - quantidadeRetornada;
                                Atualizar(entradaProduto);
                            }
                        }
                        if (quantidadeDevolvida == quantidadeRetornada)
                        {
                            break;
                        }
                    }
                }

                // acontece quando uma data de validade não existe no estoque
                if (quantidadeRetornada < quantidadeDevolvida)
                {
                    foreach (EntradaProduto entradaProduto in entradaProdutos)
                    {
                        if (entradaProduto.Quantidade >= (entradaProduto.QuantidadeDisponivel + (quantidadeDevolvida - quantidadeRetornada)))
                        {
                            entradaProduto.QuantidadeDisponivel += quantidadeDevolvida - quantidadeRetornada;
                            quantidadeRetornada += quantidadeDevolvida - quantidadeRetornada;
                        }
                        else
                        {
                            quantidadeRetornada += entradaProduto.Quantidade - entradaProduto.QuantidadeDisponivel;
                            entradaProduto.QuantidadeDisponivel = entradaProduto.Quantidade;
                        }
                        Atualizar(entradaProduto);
                        if (quantidadeDevolvida == quantidadeRetornada)
                        {
                            break;
                        }
                    }
                }
            }

            // acontece quando uma data de validade não existe no estoque
            if (quantidadeRetornada < quantidadeDevolvida)
            {
                BaixarItensVendidosEstoqueEntradaPadrao(saidaProduto, ((-1) * (quantidadeDevolvida - quantidadeRetornada)));
            }
        }
Example #4
0
        /// <summary>
        /// Baixar uma certa quantidade de produtos da entrada padrão que contém todos os produtos sem entradas associadas
        /// </summary>
        /// <param name="produtoPesquisa"></param>
        /// <param name="quantidade"></param>
        /// <returns></returns>
        private decimal BaixarItensVendidosEstoqueEntradaPadrao(SaidaProduto saidaProduto, decimal quantidade)
        {
            List <EntradaProduto> entradaProdutos = (List <EntradaProduto>)Obter(Global.ENTRADA_PADRAO, saidaProduto.CodProduto);
            Produto produto = GerenciadorProduto.GetInstance().Obter(new ProdutoPesquisa()
            {
                CodProduto = saidaProduto.CodProduto
            });
            EntradaProduto entradaProduto = null;

            if (entradaProdutos.Count > 0)
            {
                entradaProduto = entradaProdutos[0];
            }

            if (entradaProduto != null)
            {
                entradaProduto.QuantidadeDisponivel -= quantidade;
                Atualizar(entradaProduto);
            }
            else
            {
                entradaProduto            = new EntradaProduto();
                entradaProduto.CodEntrada = Global.ENTRADA_PADRAO;
                entradaProduto.CodProduto = produto.CodProduto;

                entradaProduto.UnidadeCompra        = produto.Unidade;
                entradaProduto.Quantidade           = 10000;
                entradaProduto.QuantidadeEmbalagem  = produto.QuantidadeEmbalagem == 0 ? 1 : produto.QuantidadeEmbalagem;
                entradaProduto.QuantidadeDisponivel = (entradaProduto.Quantidade * entradaProduto.QuantidadeEmbalagem) - quantidade;
                entradaProduto.ValorUnitario        = produto.UltimoPrecoCompra;
                //entradaProduto.ValorTotal = 0;
                entradaProduto.BaseCalculoICMS   = 0;
                entradaProduto.BaseCalculoICMSST = 0;
                entradaProduto.DataValidade      = DateTime.Now;
                // para não perder os dados do produto
                entradaProduto.LucroPrecoVendaAtacado = produto.LucroPrecoVendaAtacado;
                entradaProduto.LucroPrecoVendaVarejo  = produto.LucroPrecoVendaVarejo;
                entradaProduto.PrecoVendaAtacado      = produto.PrecoVendaAtacado;
                entradaProduto.PrecoVendaVarejo       = produto.PrecoVendaVarejo;
                entradaProduto.Frete             = produto.Frete;
                entradaProduto.Icms              = 7;
                entradaProduto.IcmsSubstituto    = 20;
                entradaProduto.Ipi               = produto.Ipi;
                entradaProduto.Ncmsh             = produto.Ncmsh;
                entradaProduto.QtdProdutoAtacado = produto.QtdProdutoAtacado;
                entradaProduto.DataEntrada       = produto.DataUltimoPedido;
                entradaProduto.Desconto          = produto.Desconto;
                entradaProduto.PrecoCusto        = produto.PrecoCusto;
                entradaProduto.ValorDesconto     = 0;
                entradaProduto.CodCST            = produto.CodCST;
                entradaProduto.Cfop              = 9999;

                Inserir(entradaProduto, Entrada.TIPO_ENTRADA);
            }

            return(0);
        }
Example #5
0
        /// <summary>
        /// Salva os dados de um produto inserido na saída
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSalvar_Click(object sender, EventArgs e)
        {
            saida = (Saida)saidaBindingSource.Current;

            if (saida.CodSaida <= 0)
            {
                saida.CodSaida       = GerenciadorSaida.GetInstance(null).Inserir(saida);
                codSaidaTextBox.Text = saida.CodSaida.ToString();
            }

            SaidaProduto saidaProduto = new SaidaProduto();

            if (produto != null)
            {
                saidaProduto.CodProduto           = produto.CodProduto;
                saidaProduto.CodSaida             = Convert.ToInt64(codSaidaTextBox.Text);
                saidaProduto.Desconto             = Global.DESCONTO_PADRAO;
                saidaProduto.Quantidade           = Convert.ToDecimal(quantidadeTextBox.Text);
                saidaProduto.ValorVendaAVista     = Convert.ToDecimal(precoVendatextBox.Text);
                saidaProduto.DataValidade         = Convert.ToDateTime(data_validadeDateTimePicker.Text);
                saidaProduto.BaseCalculoICMS      = Convert.ToDecimal(baseCalculoICMSTextBox.Text);
                saidaProduto.ValorICMS            = Convert.ToDecimal(valorICMSTextBox.Text);
                saidaProduto.BaseCalculoICMSSubst = Convert.ToDecimal(baseCalculoICMSSubstTextBox.Text);
                saidaProduto.ValorICMSSubst       = Convert.ToDecimal(valorICMSSubstTextBox.Text);
                saidaProduto.ValorIPI             = Convert.ToDecimal(valorIPITextBox.Text);
                saidaProduto.CodCST  = produto.CodCST;
                saidaProduto.CodCfop = cfopPadrao;

                codProdutoComboBox.Focus();
                codProdutoComboBox.Text = "";
                InicializarValoresProdutos();

                bool saidaProdutoInvalida = (saidaProduto.CodProduto == 1) || (saidaProduto.Quantidade == 0) || (saidaProduto.ValorVendaAVista == 0);
                if (estado.Equals(EstadoFormulario.INSERIR_DETALHE) && !saidaProdutoInvalida)
                {
                    GerenciadorSaidaProduto.GetInstance(null).Inserir(saidaProduto, saida);
                    codSaidaTextBox_TextChanged(sender, e);
                    saidaProdutoBindingSource.MoveLast();
                    if (saida.TipoSaida == Saida.TIPO_ORCAMENTO &&
                        GerenciadorProdutoLoja.GetInstance(null).ObterEstoque(saidaProduto.CodProduto) < saidaProduto.Quantidade)
                    {
                        MessageBox.Show("Estoque INSUFICIENTE em caso de VENDA", "ATENÇÃO", MessageBoxButtons.OK);
                    }
                }
            }
            saidaBindingSource.ResumeBinding();
        }
Example #6
0
        /// <summary>
        /// Permite excluir o pedido
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void excluirProduto(object sender, EventArgs e)
        {
            if (MessageBox.Show("Confirma exclusão do produto?", "Confirmar Exclusão", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                if (tb_saida_produtoDataGridView.Rows.Count > 0)
                {
                    SaidaProduto saidaProduto = (SaidaProduto)saidaProdutoBindingSource.Current;
                    //saida = GerenciadorSaida.GetInstance().Obter(saida.CodSaida);

                    Negocio.GerenciadorSaidaProduto.GetInstance(null).Remover(saidaProduto, saida);
                    saidaProdutoBindingSource.RemoveCurrent();
                }
            }
            estado = EstadoFormulario.INSERIR_DETALHE;
            codSaidaTextBox_TextChanged(sender, e);
            codProdutoComboBox.Focus();
        }
Example #7
0
        /// <summary>
        /// Remover um produto de uma saída
        /// </summary>
        /// <param name="saidaProduto"></param>
        /// <param name="saida"></param>
        public void Remover(SaidaProduto saidaProduto, Saida saida)
        {
            if (saida.TipoSaida == Saida.TIPO_VENDA)
            {
                throw new NegocioException("Não é possível remover produtos de uma Venda cujo Comprovante Fiscal já foi emitido.");
            }
            else if ((saida.TipoSaida == Saida.TIPO_REMESSA_DEPOSITO) && (saida.Nfe != null) && (!saida.Nfe.Equals("")))
            {
                throw new NegocioException("Não é possível remover produtos de uma Saída para Deposito com Nota Fiscal já emitida.");
            }
            else if ((saida.TipoSaida == Saida.TIPO_DEVOLUCAO_FORNECEDOR) && (saida.Nfe != null) && (!saida.Nfe.Equals("")))
            {
                throw new NegocioException("Não é possível remover produtos de uma Devolução para Fornecedor com Nota Fiscal já emitida.");
            }

            DbTransaction transaction = null;

            try
            {
                if (saceContext.Connection.State == System.Data.ConnectionState.Closed)
                {
                    saceContext.Connection.Open();
                }
                transaction = saceContext.Connection.BeginTransaction();

                var query = from _saidaProduto in saceContext.SaidaProdutoSet
                            where _saidaProduto.codSaidaProduto == saidaProduto.CodSaidaProduto
                            select _saidaProduto;
                foreach (SaidaProdutoE saidaProdutoE in query)
                {
                    repSaidaProduto.Remover(saidaProdutoE);
                }
                repSaidaProduto.SaveChanges();

                transaction.Commit();
            }
            catch (Exception e)
            {
                transaction.Rollback();
                throw new DadosException("Saída de Produtos", e.Message, e);
            }
            finally
            {
                saceContext.Connection.Close();
            }
        }
Example #8
0
 /// <summary>
 /// Atribui entidade para entidade persistente
 /// </summary>
 /// <param name="saidaProduto"></param>
 /// <param name="_saidaProdutoE"></param>
 private static void Atribuir(SaidaProduto saidaProduto, SaidaProdutoE _saidaProdutoE)
 {
     _saidaProdutoE.baseCalculoICMS      = saidaProduto.BaseCalculoICMS;
     _saidaProdutoE.baseCalculoICMSSubst = saidaProduto.BaseCalculoICMSSubst;
     _saidaProdutoE.codProduto           = saidaProduto.CodProduto;
     _saidaProdutoE.codSaida             = saidaProduto.CodSaida;
     _saidaProdutoE.data_validade        = saidaProduto.DataValidade;
     _saidaProdutoE.desconto             = saidaProduto.Desconto;
     _saidaProdutoE.quantidade           = saidaProduto.Quantidade;
     _saidaProdutoE.subtotal             = saidaProduto.Subtotal;
     _saidaProdutoE.subtotalAVista       = saidaProduto.SubtotalAVista;
     _saidaProdutoE.valorICMS            = saidaProduto.ValorICMS;
     _saidaProdutoE.valorICMSSubst       = saidaProduto.ValorICMSSubst;
     _saidaProdutoE.valorIPI             = saidaProduto.ValorIPI;
     _saidaProdutoE.valorVenda           = saidaProduto.ValorVenda;
     _saidaProdutoE.codCST = saidaProduto.CodCST;
     _saidaProdutoE.cfop   = saidaProduto.CodCfop;
 }
Example #9
0
        /// <summary>
        /// Atualiza o preço de venda a prazo com o acréscimo padrão
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void precoVendatextBox_Leave(object sender, EventArgs e)
        {
            if (!panelBalcao.Visible)
            {
                FormatTextBox.NumeroCom3CasasDecimais(precoVendatextBox);
                SaidaProduto saidaProduto = new SaidaProduto();
                saidaProduto.ValorVendaAVista = Convert.ToDecimal(precoVendatextBox.Text);

                if (saida.TipoSaida.Equals(Saida.TIPO_PRE_REMESSA_DEPOSITO) || saida.TipoSaida.Equals(Saida.TIPO_PRE_DEVOLUCAO_FORNECEDOR) ||
                    saida.TipoSaida.Equals(Saida.TIPO_PRE_RETORNO_DEPOSITO))
                {
                    precoVendaSemDescontoTextBox.Text = saidaProduto.ValorVendaAVista.ToString("N3");
                }
                else
                {
                    precoVendaSemDescontoTextBox.Text = saidaProduto.ValorVenda.ToString("N3");
                }
                AtualizarSubTotal();
                codSaidaTextBox_Leave(sender, e);
            }
        }
Example #10
0
        /// <summary>
        /// Baixa dos lotes do estoque uma determinada quantidade vendida
        /// </summary>
        /// <param name="produto"></param>
        /// <param name="dataValidade"></param>
        /// <param name="quantidadeVendida"></param>
        /// <returns></returns>
        public Decimal BaixarItensVendidosEstoque(SaidaProduto saidaProduto)
        {
            List <EntradaProduto> entradaProdutos = (List <EntradaProduto>)ObterDisponiveisPorEntrada(saidaProduto.CodProduto);

            decimal somaPrecosCusto  = 0;
            decimal quantidadeBaixas = 0;

            if (saidaProduto.Quantidade < 0)
            {
                EstornarItensVendidosEstoque(saidaProduto);
            }
            else if (entradaProdutos.Count > 0)
            {
                // reduz a quantidade de itens disponíveis nos lotes de entrada
                foreach (EntradaProduto entradaProduto in entradaProdutos)
                {
                    if (saidaProduto.Quantidade == quantidadeBaixas)
                    {
                        break;
                    }
                    if (saidaProduto.TemVencimento)
                    {
                        // quando produto tem vencimento
                        if ((entradaProduto.DataValidade.Date.Equals(saidaProduto.DataValidade.Date)) && (quantidadeBaixas < saidaProduto.Quantidade))
                        {
                            if (entradaProduto.QuantidadeDisponivel >= (saidaProduto.Quantidade - quantidadeBaixas))
                            {
                                entradaProduto.QuantidadeDisponivel -= saidaProduto.Quantidade - quantidadeBaixas;
                                somaPrecosCusto  += (saidaProduto.Quantidade - quantidadeBaixas) * entradaProduto.PrecoCusto;
                                quantidadeBaixas += (saidaProduto.Quantidade - quantidadeBaixas);
                            }
                        }
                    }
                    else
                    {
                        if (quantidadeBaixas < saidaProduto.Quantidade)
                        {
                            if (entradaProduto.QuantidadeDisponivel >= (saidaProduto.Quantidade - quantidadeBaixas))
                            {
                                entradaProduto.QuantidadeDisponivel -= saidaProduto.Quantidade - quantidadeBaixas;
                                somaPrecosCusto  += (saidaProduto.Quantidade - quantidadeBaixas) * entradaProduto.PrecoCusto;
                                quantidadeBaixas += (saidaProduto.Quantidade - quantidadeBaixas);
                            }
                            else
                            {
                                quantidadeBaixas += entradaProduto.QuantidadeDisponivel;
                                somaPrecosCusto  += entradaProduto.QuantidadeDisponivel * entradaProduto.PrecoCusto;
                                entradaProduto.QuantidadeDisponivel = 0;
                            }
                        }
                    }
                    Atualizar(entradaProduto);
                }
            }

            if (quantidadeBaixas < saidaProduto.Quantidade)
            {
                somaPrecosCusto += BaixarItensVendidosEstoqueEntradaPadrao(saidaProduto, (saidaProduto.Quantidade - quantidadeBaixas));
            }
            saceContext.SaveChanges();
            return(somaPrecosCusto);
        }
Example #11
0
        public static string SalvarPedido(DateTime data, Dictionary <int, int> produtos, string nomeTabela, bool entrada)
        {
            var ret = "";
            int idLocalArmazenamento = 0;

            try
            {
                var numPedido        = "";
                var numPedidoCalculo = 0;
                if (nomeTabela.Equals("entrada_produto"))
                {
                    EntradaProduto resultadoConsulta = null;

                    var quantidadeEntradas = ctx.EntradasProdutos.Count();
                    if (quantidadeEntradas > 0)
                    {
                        resultadoConsulta = ctx.EntradasProdutos.OrderByDescending(x => x.Id).Take(1).Single();
                        numPedidoCalculo  = (Convert.ToInt32(resultadoConsulta.Numero) + 1);
                        numPedido         = numPedidoCalculo.ToString();
                    }
                    else
                    {
                        numPedido = Convert.ToString(1);
                    }
                }
                else if (nomeTabela.Equals("saida_produto"))
                {
                    SaidaProduto resultadoConsulta = null;

                    var quantidadeSaidas = ctx.SaidasProdutos.Count();
                    if (quantidadeSaidas > 0)
                    {
                        resultadoConsulta = ctx.SaidasProdutos.OrderByDescending(x => x.Id).Take(1).Single();
                        numPedidoCalculo  = (Convert.ToInt32(resultadoConsulta.Numero) + 1);
                        numPedido         = numPedidoCalculo.ToString();
                    }
                    else
                    {
                        numPedido = Convert.ToString(1);
                    }
                }


                using (var transacao = ctx.Database.BeginTransaction())
                {
                    foreach (var produto in produtos)
                    {
                        if (nomeTabela.Equals("entrada_produto"))
                        {
                            EntradaProduto ep = new EntradaProduto();
                            ep.Numero     = numPedido;
                            ep.Data       = data;
                            ep.IdProduto  = produto.Key;
                            ep.Quantidade = produto.Value;

                            ctx.EntradasProdutos.Add(ep);


                            Produto recuperado = ctx.Produtos.Find(produto.Key);

                            var existingProduto = ctx.Produtos.Include("LocalArmazenamento").FirstOrDefault(x => x.Id == produto.Key);
                            if (existingProduto != null)
                            {
                                ctx.Entry(existingProduto).State = EntityState.Detached;
                            }

                            idLocalArmazenamento = existingProduto.IdLocalArmazenamento;

                            try
                            {
                                ctx.Produtos.Attach(recuperado);
                                recuperado.QuantEstoque     = recuperado.QuantEstoque + produto.Value;
                                ctx.Entry(recuperado).State = EntityState.Modified;
                                ctx.SaveChanges();
                                LocalArmazenamentoDao.AtualizarCapacidadeAtual(idLocalArmazenamento, produto.Value, "Cadastrar");
                            }
                            catch (System.Exception ex)
                            {
                                throw;
                            }
                        }
                        else if (nomeTabela.Equals("saida_produto"))
                        {
                            SaidaProduto ep = new SaidaProduto();
                            ep.Numero     = numPedido;
                            ep.Data       = data;
                            ep.IdProduto  = produto.Key;
                            ep.Quantidade = produto.Value;

                            ctx.SaidasProdutos.Add(ep);


                            Produto recuperado = ctx.Produtos.Find(produto.Key);

                            var existingProduto = ctx.Produtos.Include("LocalArmazenamento").FirstOrDefault(x => x.Id == produto.Key);
                            if (existingProduto != null)
                            {
                                ctx.Entry(existingProduto).State = EntityState.Detached;
                            }

                            idLocalArmazenamento = existingProduto.IdLocalArmazenamento;

                            try
                            {
                                ctx.Produtos.Attach(recuperado);
                                if ((recuperado.QuantEstoque - produto.Value) < 0)
                                {
                                    recuperado.QuantEstoque = 0;
                                }
                                else
                                {
                                    recuperado.QuantEstoque = recuperado.QuantEstoque - produto.Value;
                                }

                                ctx.Entry(recuperado).State = EntityState.Modified;
                                ctx.SaveChanges();
                                LocalArmazenamentoDao.AtualizarCapacidadeAtual(idLocalArmazenamento, produto.Value, "Remover");
                            }
                            catch (System.Exception ex)
                            {
                                throw;
                            }
                        }
                    }

                    transacao.Commit();

                    ret = numPedido;
                }
            }
            catch (Exception ex)
            {
            }

            return(ret);
        }