public void EstornoEntradaAntecipada(EntradaAntecipada entrada)
        {
            try
            {
                if (documentoEntradaService.ExisteDocumentoEntrada(entrada.NotaFiscal, entrada.Fornecedor))
                {
                    throw new Exception("Documento de Entrada/Nota Fiscal já lancada.");
                }

                var item = db.DocumentoEntradaItem
                           .Where(e => e.Codigo == entrada.Produto && e.DocumentoEntradaNumero == entrada.NotaFiscal &&
                                  e.Fornecedor == entrada.Fornecedor && e.Loja == entrada.Loja && e.RowDeleted != "T")
                           .SingleOrDefault();

                if (item != null)
                {
                    db.DocumentoEntradaItem.Remove(item);
                    db.SaveChanges();
                }

                saldoEstoqueService.SaidaItem(entrada.Produto, entrada.Loja, (int)entrada.Quantidade);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public int EntradaAntecipada(EntradaAntecipada entrada)
        {
            try
            {
                var produto = db.Produtos.Where(e => e.Codigo == entrada.Produto && e.RowDeleted != "T").SingleOrDefault();

                if (produto == null)
                {
                    produto = new Produto
                    {
                        Codigo             = entrada.Produto,
                        Descricao          = entrada.DescricaoProduto,
                        DescricaoEtiqueta1 = entrada.DescricaoEtiqueta1,
                        DescricaoEtiqueta2 = entrada.DescricaoEtiqueta2,
                        Unidade            = "PC",
                        ValorVista         = Math.Round((double)entrada.PrecoVista, 2),
                        ValorPrazo         = Math.Round((double)entrada.PrecoPrazo, 2),
                        ValorCusto         = Math.Round((double)entrada.PrecoCusto, 2),
                        Status             = "A",
                        Fornecedor         = entrada.Fornecedor,
                        UltimaCompra       = entrada.DataEntrada,
                        Secao = entrada.Secao
                    };

                    db.Produtos.Add(produto);
                }
                else
                {
                    produto.Descricao          = entrada.DescricaoProduto;
                    produto.DescricaoEtiqueta1 = entrada.DescricaoEtiqueta1;
                    produto.DescricaoEtiqueta2 = entrada.DescricaoEtiqueta2;
                    produto.ValorVista         = Math.Round((double)entrada.PrecoVista, 2);
                    produto.ValorPrazo         = Math.Round((double)entrada.PrecoPrazo, 2);
                    produto.ValorCusto         = Math.Round((double)entrada.PrecoCusto, 2);
                    produto.Fornecedor         = entrada.Fornecedor;
                    produto.UltimaCompra       = entrada.DataEntrada;
                    produto.Secao = entrada.Secao;

                    db.Produtos.Update(produto);
                }

                var item = new DocumentoEntradaItem
                {
                    Codigo = entrada.Produto,
                    DocumentoEntradaNumero = entrada.NotaFiscal,
                    Classificacao          = "",
                    DataEntrada            = (DateTime)entrada.DataEntrada,
                    Fornecedor             = entrada.Fornecedor,
                    Loja              = entrada.Loja,
                    Quantidade        = (int)entrada.Quantidade,
                    ValorUnitario     = Math.Round((double)entrada.PrecoCusto, 2),
                    EntradaAntecipada = "S"
                };

                db.DocumentoEntradaItem.Add(item);
                db.SaveChanges();

                saldoEstoqueService.EntradaItem(item.Codigo, item.Loja, item.Quantidade);

                return(1);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }