Пример #1
0
        public JsonResult VerificaSituacaoEstoque()
        {
            var loteDAO      = new LoteDAO();
            var baixaDAO     = new BaixaDAO();
            var listabaixa   = baixaDAO.GetAll();
            var loteAtual    = loteDAO.GetAll();
            var produtoDAO   = new ProdutoDAO();
            var listaProduto = produtoDAO.GetAll();

            HashSet <VerificaSituacaoEstoqueViewModel> lista = new HashSet <VerificaSituacaoEstoqueViewModel>();
            var texto = "";

            foreach (var aux in listaProduto)
            {
                var produtoemestoque = loteDAO.GetAll().Where(x => x.Produto_CodigoProduto == aux.CodigoProduto).Sum(x => x.QuantidadeProduto);
                var produtobaixado   = baixaDAO.GetAll().Where(x => x.DataBaixa.Month == (DateTime.Now.Month) && x.Produto_CodigoProduto == aux.CodigoProduto).Sum(x => x.QuantidadeBaixa);
                var produtogeral     = produtoemestoque + produtobaixado;
                var baixamenos1      = baixaDAO.GetAll().Where(x => x.DataBaixa.Month == (DateTime.Now.Month - 1) && x.Produto_CodigoProduto == aux.CodigoProduto).Sum(x => x.QuantidadeBaixa);
                var baixamenos2      = baixaDAO.GetAll().Where(x => x.DataBaixa.Month == (DateTime.Now.Month - 2) && x.Produto_CodigoProduto == aux.CodigoProduto).Sum(x => x.QuantidadeBaixa);
                var baixamenos3      = baixaDAO.GetAll().Where(x => x.DataBaixa.Month == (DateTime.Now.Month - 3) && x.Produto_CodigoProduto == aux.CodigoProduto).Sum(x => x.QuantidadeBaixa);
                var nomeproduto      = produtoDAO.GetById(aux.CodigoProduto);

                var mediabaixa = (baixamenos1 + baixamenos2 + baixamenos3) / 3;

                if (mediabaixa > produtogeral)
                {
                    var produtofalta = mediabaixa - produtogeral;
                    texto = "Seu estoque ficará em falta de: " + produtofalta + " do produto " + nomeproduto.NomeProduto + " ";
                    lista.Add(new VerificaSituacaoEstoqueViewModel()
                    {
                        NomeProduto  = nomeproduto.NomeProduto,
                        EstoqueAtual = produtogeral,
                        MediaBaixa   = mediabaixa,
                    });
                }
                else
                {
                    ViewBag.Mensagem = "";
                }
            }

            var js   = new JavaScriptSerializer();
            var json = js.Serialize(lista);

            return(Json(json, JsonRequestBehavior.AllowGet));
        }
Пример #2
0
        // GET: Lote
        public ActionResult Index()
        {
            LoteDAO loteDAO   = new LoteDAO();
            var     listaLote = loteDAO.GetAll();

            ViewBag.Lotes = listaLote;
            return(View());
        }
Пример #3
0
        public IEnumerable <SelectListItem> GetLotes()
        {
            var dao   = new LoteDAO();
            var lotes = dao.GetAll()
                        .Select(x => new SelectListItem
            {
                Value = x.CodigoLote.ToString(),
                Text  = x.DescricaoLote,
            });

            return(new SelectList(lotes, "Value", "Text"));
        }
Пример #4
0
        public ActionResult FormularioLote()
        {
            LoteDAO loteDAO   = new LoteDAO();
            var     listaLote = loteDAO.GetAll();

            EstoqueDAO estoqueDAO   = new EstoqueDAO();
            var        listaEstoque = estoqueDAO.GetAll();

            ProdutoDAO produtoDAO   = new ProdutoDAO();
            var        listaProduto = produtoDAO.GetAll();

            ViewBag.Lotes    = listaLote;
            ViewBag.Estoques = listaEstoque;
            ViewBag.Produtos = listaProduto;
            return(View());
        }
Пример #5
0
        public JsonResult RetornaRankingBaixas()
        {
            //Retorna Grafico de Colunas
            //Esse grafico retorna a quantidade de produtos totais.

            ProdutoDAO produtoDAO   = new ProdutoDAO();
            var        listaProduto = produtoDAO.GetAll();

            LoteDAO loteDAO   = new LoteDAO();
            var     listaLote = loteDAO.GetAll();

            BaixaDAO baixaDAO   = new BaixaDAO();
            var      listaBaixa = baixaDAO.GetAll();

            var resultQuery = from b in listaBaixa
                              join p in listaProduto
                              on b.Produto_CodigoProduto equals p.CodigoProduto
                              where b.QuantidadeBaixa > 0
                              orderby b.QuantidadeBaixa
                              group b by new { p.NomeProduto } into g

                select new
            {
                NomeProduto     = g.Key.NomeProduto,
                QuantidadeBaixa = g.Sum(x => x.QuantidadeBaixa)
            };

            resultQuery = resultQuery.OrderByDescending(x => x.QuantidadeBaixa).Take(5);

            var lista = new List <RankingBaixaViewModel>();

            foreach (var item in resultQuery)
            {
                lista.Add(new RankingBaixaViewModel()
                {
                    NomeProduto     = item.NomeProduto,
                    QuantidadeBaixa = item.QuantidadeBaixa
                });
            }

            var js   = new JavaScriptSerializer();
            var json = js.Serialize(lista);

            return(Json(json, JsonRequestBehavior.AllowGet));
        }
Пример #6
0
        public ActionResult Index()
        {
            LoteDAO loteDAO = new LoteDAO();
            var     lotes   = loteDAO.GetAll().Where(x => x.QuantidadeProduto > 0).OrderBy(x => x.ValidadeLote);

            EstoqueDAO estoqueDao = new EstoqueDAO();

            var model = lotes.Select(x => new LoteViewModel()
            {
                CodigoLote        = x.CodigoLote,
                DescricaoLote     = x.DescricaoLote,
                Produto           = x.Produto,
                ValidadeLote      = x.ValidadeLote,
                QuantidadeProduto = x.QuantidadeProduto,
                LocalEstoque      = estoqueDao.GetById(x.Estoque_CodigoEstoque).DescricaoEstoque,
            });

            return(View(model));
        }
Пример #7
0
        public JsonResult RetornaRankingProdutosMorto()
        {
            //Retorna Grafico de Colunas
            //Esse grafico retorna a quantidade de produtos totais.

            ProdutoDAO produtoDAO   = new ProdutoDAO();
            var        listaProduto = produtoDAO.GetAll();

            LoteDAO loteDAO   = new LoteDAO();
            var     listaLote = loteDAO.GetAll();

            var resultQuery = from l in listaLote
                              join p in listaProduto
                              on l.Produto_CodigoProduto equals p.CodigoProduto
                              where l.ValidadeLote < DateTime.Now.Date &&
                              l.QuantidadeProduto > 0
                              orderby l.QuantidadeProduto
                              group l by new { p.NomeProduto } into g

                select new
            {
                NomeProduto       = g.Key.NomeProduto,
                QuantidadeProduto = g.Sum(x => x.QuantidadeProduto)
            };

            resultQuery = resultQuery.OrderByDescending(x => x.QuantidadeProduto).Take(5);

            var lista = new List <RankingProdutosMortoViewModel>();

            foreach (var item in resultQuery)
            {
                lista.Add(new RankingProdutosMortoViewModel()
                {
                    NomeProduto       = item.NomeProduto,
                    QuantidadeProduto = item.QuantidadeProduto
                });
            }

            var js   = new JavaScriptSerializer();
            var json = js.Serialize(lista);

            return(Json(json, JsonRequestBehavior.AllowGet));
        }
Пример #8
0
        public ActionResult RetornaRankingProdutos()
        {
            //Retorna Grafico de Colunas
            //Esse grafico retorna a quantidade de produtos totais.

            ProdutoDAO produtoDAO   = new ProdutoDAO();
            var        listaProduto = produtoDAO.GetAll();

            LoteDAO loteDAO   = new LoteDAO();
            var     listaLote = loteDAO.GetAll();

            var resultQuery = from l in listaLote
                              join p in listaProduto
                              on l.Produto_CodigoProduto equals p.CodigoProduto
                              group l by new { p.NomeProduto } into g
                select new
            {
                NomeProduto       = g.Key.NomeProduto,
                QuantidadeProduto = g.Sum(x => x.QuantidadeProduto)
            };

            return(View(resultQuery));
        }
Пример #9
0
        static void Main(string[] args)
        {
            #region VARIAVEIS DE ENTRADA
            string nomeCategoria             = null;
            Nullable <DateTime> dataValidade = null /*new DateTime(2018, 06, 01)*/;
            #endregion

            //METODOS QUE REQUISITAM DADOS NO BANCO E FILTRAM

            #region COLETORES DE DADOS DAO
            ProdutoDAO produtoDAO   = new ProdutoDAO();
            var        listaProduto = produtoDAO.GetAll();

            LoteDAO loteDAO    = new LoteDAO();
            var     listaLote  = loteDAO.GetAll();
            var     filtroLote = new List <Lote>();
            foreach (var item in listaLote)
            {
                if (item.ValidadeLote.Equals(dataValidade))
                {
                    filtroLote.Add(item);
                }
            }

            CategoriaDAO categoriaDAO    = new CategoriaDAO();
            var          listaCategoria  = categoriaDAO.GetAll();
            var          filtroCategoria = new List <CategoriaProduto>();
            foreach (var item in listaCategoria)
            {
                if (item.NomeCategoria.Equals(nomeCategoria))
                {
                    filtroCategoria.Add(item);
                }
            }
            #endregion

            //Retorna Grafico de Colunas
            //Esse grafico retorna a quantidade de produtos totais.
            //Com ele podemos criar um ranking de produto para verificar o que mais é vendido, tornando mais dificil de vencer no estoque
            //Pois tem alta rotatividade

            #region DADOS GRAFICO DE RANKING DE PRODUTOS (BARRA)

            //var resultQuery = from l in listaLote
            //                  join p in listaProduto
            //                  on l.Produto_CodigoProduto equals p.CodigoProduto
            //                  group l by new { p.NomeProduto } into g
            //                  select new
            //                  {
            //                      NomeProduto = g.Key.NomeProduto,
            //                      QuantidadeProduto = g.Sum(x => x.QuantidadeProduto)
            //                  };

            //foreach (var item in resultQuery)
            //{
            //    Console.WriteLine("Produto: " + item.NomeProduto + " Quantidade: " + item.QuantidadeProduto);
            //}
            //Console.ReadLine();

            #endregion

            //Esse relatorio pode ser filtrado pelo nome da categoria do lote e pela data de validade
            //O Mesmo vai retornar o resultado de todos os lotes daquela categoria e com aquela data
            //Esse relatorio é importate para sabermos o nome o tipo de produto que tem dentro de cada lote, quantidade e se esta proximo do vencimento

            #region RELATORIO LOTE COM FILTRO DE DATA E NOMECATEGORIA
            //if (nomeCategoria != null && dataValidade != null)
            //{
            //    var resultQuery = from l in listaLote
            //                      join p in listaProduto
            //                      on l.Produto_CodigoProduto equals p.CodigoProduto
            //                      join c in filtroCategoria
            //                      on p.Categoria_CodigoCategoria equals c.CodigoCategoria
            //                      orderby l.ValidadeLote
            //                      select new
            //                      {
            //                          l.DescricaoLote,
            //                          p.NomeProduto,
            //                          c.NomeCategoria,
            //                          l.ValidadeLote,
            //                          l.QuantidadeProduto,
            //                      };
            //    foreach (var item in resultQuery)
            //    {
            //        Console.WriteLine("Lote: " + item.DescricaoLote + " Produto: " + item.NomeProduto + " Categoria: " + item.NomeCategoria + " Validade: " + item.ValidadeLote + " Quantidade: " + item.QuantidadeProduto);
            //    }
            //    Console.ReadLine();

            //}
            //else
            //{
            //    var resultQuery = from l in listaLote
            //                      join p in listaProduto
            //                      on l.Produto_CodigoProduto equals p.CodigoProduto
            //                      join c in listaCategoria
            //                      on p.Categoria_CodigoCategoria equals c.CodigoCategoria
            //                      orderby l.ValidadeLote
            //                      select new
            //                      {
            //                          l.DescricaoLote,
            //                          p.NomeProduto,
            //                          c.NomeCategoria,
            //                          l.ValidadeLote,
            //                          l.QuantidadeProduto,
            //                      };
            //    foreach (var item in resultQuery)
            //    {
            //        Console.WriteLine("Lote: " + item.DescricaoLote + " Produto: " + item.NomeProduto + " Categoria: " + item.NomeCategoria + " Validade: " + item.ValidadeLote + " Quantidade: " + item.QuantidadeProduto);
            //    }
            //    Console.ReadLine();
            //}
            #endregion


            //RELATORIO DE PRODUTO
            // Filtros: CATEGORIA/DATA ou DATA ou TODOS OS PRODUTOS
            #region RELATORIO DE PRODUTO
            if (nomeCategoria != null && dataValidade != null)
            {
                var resultQuery = from p in listaProduto
                                  join l in filtroLote
                                  on p.CodigoProduto equals l.Produto_CodigoProduto
                                  join c in filtroCategoria
                                  on p.Categoria_CodigoCategoria equals c.CodigoCategoria
                                  select new
                {
                    p.NomeProduto,
                    c.NomeCategoria,
                    p.MarcaProduto,
                    l.ValidadeLote,
                };

                foreach (var item in resultQuery)
                {
                    Console.WriteLine("Produto: " + item.NomeProduto + " Categoria: " + item.NomeCategoria + " Marca: " + item.MarcaProduto + " Validade: " + item.ValidadeLote);
                }
                Console.ReadLine();
            }
            else if (nomeCategoria == null && dataValidade != null)
            {
                var resultQuery = from p in listaProduto
                                  join l in filtroLote
                                  on p.CodigoProduto equals l.Produto_CodigoProduto
                                  join c in listaCategoria
                                  on p.Categoria_CodigoCategoria equals c.CodigoCategoria
                                  select new
                {
                    p.NomeProduto,
                    c.NomeCategoria,
                    p.MarcaProduto,
                    l.ValidadeLote,
                };

                foreach (var item in resultQuery)
                {
                    Console.WriteLine("Produto: " + item.NomeProduto + " Categoria: " + item.NomeCategoria + " Marca: " + item.MarcaProduto + " Validade: " + item.ValidadeLote);
                }
                Console.ReadLine();
            }
            else if (nomeCategoria == null && dataValidade == null)
            {
                var todosLote       = loteDAO.GetAll();
                var todosProdutos   = produtoDAO.GetAll();
                var todasCategorias = categoriaDAO.GetAll();

                var resultQuery = from p in todosProdutos
                                  join l in todosLote
                                  on p.CodigoProduto equals l.Produto_CodigoProduto
                                  join c in todasCategorias
                                  on p.Categoria_CodigoCategoria equals c.CodigoCategoria
                                  select new
                {
                    p.NomeProduto,
                    c.NomeCategoria,
                    p.MarcaProduto,
                    l.ValidadeLote,
                };

                foreach (var item in resultQuery)
                {
                    Console.WriteLine("Produto: " + item.NomeProduto + " Categoria: " + item.NomeCategoria + " Marca: " + item.MarcaProduto + " Validade: " + item.ValidadeLote);
                }
                Console.ReadLine();
            }
            #endregion
        }
Пример #10
0
        public ActionResult RelatorioProduto(string nomeCategoria, DateTime dataValidade)
        {
            RelatorioViewModel model = new RelatorioViewModel
            {
                ListaProdutoViewModel = new List <ProdutoViewModel>()
            };

            CategoriaDAO categoriaDAO    = new CategoriaDAO();
            var          listaCategoria  = categoriaDAO.GetAll();
            var          filtroCategoria = new List <CategoriaProduto>();

            foreach (var item in listaCategoria)
            {
                if (item.NomeCategoria.Equals(nomeCategoria))
                {
                    filtroCategoria.Add(item);
                }
            }

            ProdutoDAO produtoDAO   = new ProdutoDAO();
            var        listaProduto = produtoDAO.GetAll();
            //var filtroProduto = new List<Produto>();
            //foreach (var item in listaProduto)
            //{
            //    if (item.NomeProduto.Equals(nomeProduto))
            //    {
            //        filtroProduto.Add(item);
            //    }
            //}

            LoteDAO loteDAO    = new LoteDAO();
            var     listaLote  = loteDAO.GetAll();
            var     filtroLote = new List <Lote>();

            foreach (var item in listaLote)
            {
                if (item.ValidadeLote.Equals(dataValidade))
                {
                    filtroLote.Add(item);
                }
            }
            if (nomeCategoria != null && dataValidade != null)
            {
                var resultQuery = from p in listaProduto
                                  join l in filtroLote
                                  on p.CodigoProduto equals l.Produto_CodigoProduto
                                  join c in filtroCategoria
                                  on p.Categoria_CodigoCategoria equals c.CodigoCategoria
                                  select new
                {
                    p.NomeProduto,
                    c.NomeCategoria,
                    l.ValidadeLote,
                };
                return(View());
            }
            else if (nomeCategoria == null && dataValidade != null)
            {
                var resultQuery = from p in listaProduto
                                  join l in filtroLote
                                  on p.CodigoProduto equals l.Produto_CodigoProduto
                                  select new
                {
                    p.NomeProduto,
                    p.MarcaProduto,
                    l.ValidadeLote,
                };
                return(View());
            }
            else if (nomeCategoria == null && dataValidade == null)
            {
                var todosLote       = loteDAO.GetAll();
                var todosProdutos   = produtoDAO.GetAll();
                var todasCategorias = categoriaDAO.GetAll();

                var resultQuery = from p in todosProdutos
                                  join l in todosLote
                                  on p.CodigoProduto equals l.Produto_CodigoProduto
                                  join c in todasCategorias
                                  on p.Categoria_CodigoCategoria equals c.CodigoCategoria
                                  select new
                {
                    p.NomeProduto,
                    c.NomeCategoria,
                    p.MarcaProduto,
                    l.ValidadeLote,
                };
                return(View());
            }

            return(null);
        }
Пример #11
0
        public ActionResult RelatorioLote(string nomeLote, string nomeCategoria, DateTime dataValidade)
        {
            CategoriaDAO categoriaDAO    = new CategoriaDAO();
            var          listaCategoria  = categoriaDAO.GetAll();
            var          filtroCategoria = new List <CategoriaProduto>();

            foreach (var item in listaCategoria)
            {
                if (item.NomeCategoria.Equals(nomeCategoria))
                {
                    filtroCategoria.Add(item);
                }
            }

            LoteDAO loteDAO    = new LoteDAO();
            var     listaLote  = loteDAO.GetAll();
            var     filtroLote = new List <Lote>();

            foreach (var item in listaLote)
            {
                if (item.ValidadeLote.Equals(dataValidade) && item.DescricaoLote.Equals(nomeLote))
                {
                    filtroLote.Add(item);
                }
            }

            ProdutoDAO produtoDAO    = new ProdutoDAO();
            var        listaProduto  = produtoDAO.GetAll();
            var        filtroProduto = new List <Produto>();


            if (nomeLote != null && nomeCategoria != null && dataValidade != null)
            {
                var resultQuery = from l in filtroLote
                                  join p in listaProduto
                                  on l.Produto_CodigoProduto equals p.CodigoProduto
                                  join c in filtroCategoria
                                  on p.Categoria_CodigoCategoria equals c.CodigoCategoria
                                  orderby l.ValidadeLote
                                  select new
                {
                    l.DescricaoLote,
                    p.NomeProduto,
                    c.NomeCategoria,
                    l.ValidadeLote,
                    l.QuantidadeProduto,
                };
                return(View());
            }
            else
            {
                var resultQuery = from l in listaLote
                                  join p in listaProduto
                                  on l.Produto_CodigoProduto equals p.CodigoProduto
                                  join c in listaCategoria
                                  on p.Categoria_CodigoCategoria equals c.CodigoCategoria
                                  orderby l.ValidadeLote
                                  select new
                {
                    l.DescricaoLote,
                    p.NomeProduto,
                    c.NomeCategoria,
                    l.ValidadeLote,
                    l.QuantidadeProduto,
                };
                return(View());
            }
        }
Пример #12
0
        public ActionResult RelatorioProduto(FiltrosViewModel filtro)
        {
            CategoriaDAO categoriaDAO = new CategoriaDAO();
            ProdutoDAO   produtoDAO   = new ProdutoDAO();
            LoteDAO      loteDAO      = new LoteDAO();

            var todosLote       = loteDAO.GetAll();
            var todosProdutos   = produtoDAO.GetAll();
            var todasCategorias = categoriaDAO.GetAll();

            if (filtro.SelectItemCategoriaId != null && filtro.SelectItemProdutoId != null)
            {
                var resultQuery = from p in todosProdutos
                                  join c in todasCategorias
                                  on p.Categoria_CodigoCategoria equals c.CodigoCategoria
                                  where p.Categoria_CodigoCategoria == filtro.SelectItemCategoriaId &&
                                  p.CodigoProduto == filtro.SelectItemProdutoId
                                  select new RelatorioProdutoViewModel
                {
                    NomeProduto   = p.NomeProduto,
                    NomeCategoria = c.NomeCategoria,
                    Marca         = p.MarcaProduto,
                };
                return(View(resultQuery.Distinct()));
            }
            else if (filtro.SelectItemCategoriaId == null && filtro.SelectItemProdutoId != null)
            {
                var resultQuery = from p in todosProdutos
                                  join c in todasCategorias
                                  on p.Categoria_CodigoCategoria equals c.CodigoCategoria
                                  where p.CodigoProduto == filtro.SelectItemProdutoId
                                  select new RelatorioProdutoViewModel
                {
                    NomeProduto   = p.NomeProduto,
                    NomeCategoria = c.NomeCategoria,
                    Marca         = p.MarcaProduto,
                };
                return(View(resultQuery.Distinct()));
            }
            else if (filtro.SelectItemCategoriaId != null && filtro.NomeProduto == null)
            {
                var resultQuery = from p in todosProdutos
                                  join c in todasCategorias
                                  on p.Categoria_CodigoCategoria equals c.CodigoCategoria
                                  where p.Categoria_CodigoCategoria == filtro.SelectItemCategoriaId
                                  select new RelatorioProdutoViewModel
                {
                    NomeProduto   = p.NomeProduto,
                    NomeCategoria = c.NomeCategoria,
                    Marca         = p.MarcaProduto,
                };
                return(View(resultQuery.Distinct()));
            }
            else if (filtro.SelectItemProdutoId == null && filtro.SelectItemCategoriaId != null)
            {
                var resultQuery = from p in todosProdutos
                                  join c in todasCategorias
                                  on p.Categoria_CodigoCategoria equals c.CodigoCategoria
                                  where p.CodigoProduto == filtro.SelectItemProdutoId
                                  select new RelatorioProdutoViewModel
                {
                    NomeProduto   = p.NomeProduto,
                    NomeCategoria = c.NomeCategoria,
                    Marca         = p.MarcaProduto,
                };
                return(View(resultQuery.Distinct()));
            }
            else
            {
                var resultQuery = from p in todosProdutos
                                  join c in todasCategorias
                                  on p.Categoria_CodigoCategoria equals c.CodigoCategoria
                                  select new RelatorioProdutoViewModel
                {
                    NomeProduto   = p.NomeProduto,
                    NomeCategoria = c.NomeCategoria,
                    Marca         = p.MarcaProduto,
                };
                return(View(resultQuery.Distinct()));
            }
        }
Пример #13
0
        public ActionResult RelatorioLote(FiltrosViewModel filtro)
        {
            CategoriaDAO categoriaDAO   = new CategoriaDAO();
            var          listaCategoria = categoriaDAO.GetAll();
            LoteDAO      loteDAO        = new LoteDAO();
            var          listaLote      = loteDAO.GetAll();
            ProdutoDAO   produtoDAO     = new ProdutoDAO();
            var          listaProduto   = produtoDAO.GetAll();
            EstoqueDAO   estoqueDao     = new EstoqueDAO();

            //todos
            if (filtro.SelectItemLoteId != null && filtro.SelectItemCategoriaId != null && filtro.SelectItemProdutoId != null)
            {
                var resultQuery = from l in listaLote
                                  join p in listaProduto
                                  on l.Produto_CodigoProduto equals p.CodigoProduto
                                  join c in listaCategoria on
                                  p.Categoria_CodigoCategoria equals c.CodigoCategoria
                                  where l.Produto_CodigoProduto == filtro.SelectItemProdutoId &&
                                  p.CodigoProduto == filtro.SelectItemProdutoId &&
                                  p.Categoria_CodigoCategoria == filtro.SelectItemCategoriaId
                                  select new RelatorioLoteViewModel
                {
                    DescricaoLote     = l.DescricaoLote,
                    NomeProduto       = p.NomeProduto,
                    NomeCategoria     = c.NomeCategoria,
                    ValidadeLote      = l.ValidadeLote,
                    QuantidadeProduto = l.QuantidadeProduto,
                    LocalEstoque      = estoqueDao.GetById(l.Estoque_CodigoEstoque).DescricaoEstoque,
                };
                return(View(resultQuery.Distinct()));
            }
            //seleciona produto e categoria aaaaa
            else if (filtro.SelectItemLoteId == null && filtro.SelectItemCategoriaId != null && filtro.SelectItemProdutoId != null)
            {
                var resultQuery = from l in listaLote
                                  join p in listaProduto
                                  on l.Produto_CodigoProduto equals p.CodigoProduto
                                  join c in listaCategoria on
                                  p.Categoria_CodigoCategoria equals c.CodigoCategoria
                                  where p.CodigoProduto == filtro.SelectItemProdutoId &&
                                  c.CodigoCategoria == filtro.SelectItemCategoriaId
                                  select new RelatorioLoteViewModel
                {
                    DescricaoLote     = l.DescricaoLote,
                    NomeProduto       = p.NomeProduto,
                    NomeCategoria     = c.NomeCategoria,
                    ValidadeLote      = l.ValidadeLote,
                    QuantidadeProduto = l.QuantidadeProduto,
                    LocalEstoque      = estoqueDao.GetById(l.Estoque_CodigoEstoque).DescricaoEstoque,
                };
                return(View(resultQuery.Distinct()));
            }
            //seleciona produto e lote
            else if (filtro.SelectItemLoteId != null && filtro.SelectItemCategoriaId == null && filtro.SelectItemProdutoId != null)
            {
                var resultQuery = from l in listaLote
                                  join p in listaProduto
                                  on l.Produto_CodigoProduto equals p.CodigoProduto
                                  join c in listaCategoria on
                                  p.Categoria_CodigoCategoria equals c.CodigoCategoria
                                  where p.CodigoProduto == filtro.SelectItemProdutoId &&
                                  l.CodigoLote == filtro.SelectItemLoteId
                                  select new RelatorioLoteViewModel
                {
                    DescricaoLote     = l.DescricaoLote,
                    NomeProduto       = p.NomeProduto,
                    NomeCategoria     = c.NomeCategoria,
                    ValidadeLote      = l.ValidadeLote,
                    QuantidadeProduto = l.QuantidadeProduto,
                    LocalEstoque      = estoqueDao.GetById(l.Estoque_CodigoEstoque).DescricaoEstoque,
                };
                return(View(resultQuery.Distinct()));
            }
            //lote e categoria
            else if (filtro.SelectItemLoteId != null && filtro.SelectItemCategoriaId != null && filtro.SelectItemProdutoId == null)
            {
                var resultQuery = from l in listaLote
                                  join p in listaProduto
                                  on l.Produto_CodigoProduto equals p.CodigoProduto
                                  join c in listaCategoria on
                                  p.Categoria_CodigoCategoria equals c.CodigoCategoria
                                  where l.CodigoLote == filtro.SelectItemLoteId &&
                                  c.CodigoCategoria == filtro.SelectItemCategoriaId
                                  select new RelatorioLoteViewModel
                {
                    DescricaoLote     = l.DescricaoLote,
                    NomeProduto       = p.NomeProduto,
                    NomeCategoria     = c.NomeCategoria,
                    ValidadeLote      = l.ValidadeLote,
                    QuantidadeProduto = l.QuantidadeProduto,
                    LocalEstoque      = estoqueDao.GetById(l.Estoque_CodigoEstoque).DescricaoEstoque,
                };
                return(View(resultQuery.Distinct()));
            }
            //produto
            else if (filtro.SelectItemLoteId == null && filtro.SelectItemCategoriaId == null && filtro.SelectItemProdutoId != null)
            {
                var resultQuery = from l in listaLote
                                  join p in listaProduto
                                  on l.Produto_CodigoProduto equals p.CodigoProduto
                                  join c in listaCategoria on
                                  p.Categoria_CodigoCategoria equals c.CodigoCategoria
                                  where p.CodigoProduto == filtro.SelectItemProdutoId
                                  select new RelatorioLoteViewModel
                {
                    DescricaoLote     = l.DescricaoLote,
                    NomeProduto       = p.NomeProduto,
                    NomeCategoria     = c.NomeCategoria,
                    ValidadeLote      = l.ValidadeLote,
                    QuantidadeProduto = l.QuantidadeProduto,
                    LocalEstoque      = estoqueDao.GetById(l.Estoque_CodigoEstoque).DescricaoEstoque,
                };
                return(View(resultQuery.Distinct()));
            }
            //lote
            else if (filtro.SelectItemLoteId != null && filtro.SelectItemCategoriaId == null && filtro.SelectItemProdutoId == null)
            {
                var resultQuery = from l in listaLote
                                  join p in listaProduto
                                  on l.Produto_CodigoProduto equals p.CodigoProduto
                                  join c in listaCategoria on
                                  p.Categoria_CodigoCategoria equals c.CodigoCategoria
                                  where l.CodigoLote == filtro.SelectItemLoteId
                                  select new RelatorioLoteViewModel
                {
                    DescricaoLote     = l.DescricaoLote,
                    NomeProduto       = p.NomeProduto,
                    NomeCategoria     = c.NomeCategoria,
                    ValidadeLote      = l.ValidadeLote,
                    QuantidadeProduto = l.QuantidadeProduto,
                    LocalEstoque      = estoqueDao.GetById(l.Estoque_CodigoEstoque).DescricaoEstoque,
                };
                return(View(resultQuery.Distinct()));
            }

            //categoria
            else if (filtro.SelectItemLoteId == null && filtro.SelectItemCategoriaId != null && filtro.SelectItemProdutoId == null)
            {
                var resultQuery = from l in listaLote
                                  join p in listaProduto
                                  on l.Produto_CodigoProduto equals p.CodigoProduto
                                  join c in listaCategoria on
                                  p.Categoria_CodigoCategoria equals c.CodigoCategoria
                                  where c.CodigoCategoria == filtro.SelectItemCategoriaId
                                  select new RelatorioLoteViewModel
                {
                    DescricaoLote     = l.DescricaoLote,
                    NomeProduto       = p.NomeProduto,
                    NomeCategoria     = c.NomeCategoria,
                    ValidadeLote      = l.ValidadeLote,
                    QuantidadeProduto = l.QuantidadeProduto,
                    LocalEstoque      = estoqueDao.GetById(l.Estoque_CodigoEstoque).DescricaoEstoque,
                };
                return(View(resultQuery.Distinct()));
            }

            else
            {
                var resultQuery = from l in listaLote
                                  join p in listaProduto
                                  on l.Produto_CodigoProduto equals p.CodigoProduto
                                  join c in listaCategoria on
                                  p.Categoria_CodigoCategoria equals c.CodigoCategoria

                                  select new RelatorioLoteViewModel
                {
                    DescricaoLote     = l.DescricaoLote,
                    NomeProduto       = p.NomeProduto,
                    NomeCategoria     = c.NomeCategoria,
                    ValidadeLote      = l.ValidadeLote,
                    QuantidadeProduto = l.QuantidadeProduto,
                    LocalEstoque      = estoqueDao.GetById(l.Estoque_CodigoEstoque).DescricaoEstoque,
                };
                return(View(resultQuery.Distinct()));
            }
        }
Пример #14
0
        public LoteViewModel VerificaSituacaoLote()
        {
            var loteDAO      = new LoteDAO();
            var baixaDAO     = new BaixaDAO();
            var listabaixa   = baixaDAO.GetAll();
            var loteAtual    = loteDAO.GetAll();
            var produtoDAO   = new ProdutoDAO();
            var listaProduto = produtoDAO.GetAll();
            var baixaTotal   = 0;

            HashSet <string> lista = new HashSet <string>();
            var texto = "";

            foreach (var aux in loteAtual)
            {
                var lotemesatual  = loteDAO.GetAll().Where(x => x.ValidadeLote.Month == DateTime.Now.Month && x.Produto_CodigoProduto == aux.Produto_CodigoProduto).Sum(x => x.QuantidadeProduto);
                var baixaprodmes1 = baixaDAO.GetAll().Where(x => x.DataBaixa.Month == (DateTime.Now.Month - 1) && x.Produto_CodigoProduto == aux.Produto_CodigoProduto).Sum(x => x.QuantidadeBaixa);
                var baixaprodmes2 = baixaDAO.GetAll().Where(x => x.DataBaixa.Month == (DateTime.Now.Month - 2) && x.Produto_CodigoProduto == aux.Produto_CodigoProduto).Sum(x => x.QuantidadeBaixa);
                var baixaprodmes3 = baixaDAO.GetAll().Where(x => x.DataBaixa.Month == (DateTime.Now.Month - 3) && x.Produto_CodigoProduto == aux.Produto_CodigoProduto).Sum(x => x.QuantidadeBaixa);
                var nomeproduto   = produtoDAO.GetById(aux.Produto_CodigoProduto);

                var diasrestantes = aux.ValidadeLote.Day - DateTime.Now.Day;


                if (baixaprodmes1 > 0 && baixaprodmes2 > 0 && baixaprodmes3 > 0) // 3 meses
                {
                    baixaTotal = ((baixaprodmes1 + baixaprodmes2 + baixaprodmes3) / 3);
                }
                else if (baixaprodmes1 == 0 && baixaprodmes2 > 0 && baixaprodmes3 > 0) // 2 e 3 meses
                {
                    baixaTotal = (baixaprodmes2 + baixaprodmes3) / 2;
                }
                else if (baixaprodmes2 == 0 && baixaprodmes1 > 0 && baixaprodmes3 > 0) //1 e 3 meses
                {
                    baixaTotal = (baixaprodmes1 + baixaprodmes3) / 2;
                }
                else if (baixaprodmes3 == 0 && baixaprodmes1 > 0 && baixaprodmes2 > 0) // 1 e 2
                {
                    baixaTotal = (baixaprodmes1 + baixaprodmes2) / 2;
                }
                else if (baixaprodmes2 == 0 && baixaprodmes3 == 0 && baixaprodmes1 > 0)
                {
                    baixaTotal = baixaprodmes1;
                }
                else if (baixaprodmes1 == 0 && baixaprodmes3 == 0 && baixaprodmes2 > 0)
                {
                    baixaTotal = baixaprodmes2;
                }
                else if (baixaprodmes2 == 0 && baixaprodmes1 == 0 && baixaprodmes3 > 0)
                {
                    baixaTotal = baixaprodmes3;
                }
                else
                {
                    baixaTotal = 0;
                }
                //Verificação do warning de baixas
                if (lotemesatual > baixaTotal && baixaTotal > 0) //&& diasrestantes < 16)
                {
                    var diferençaresultado   = lotemesatual - baixaTotal;
                    var resultadoporcentagem = (float)((diferençaresultado * 100) / lotemesatual);
                    texto = "Ops, você não conseguira vender: " + resultadoporcentagem + " % do seu estoque de " + nomeproduto.NomeProduto + ", faça uma promoção!";
                    lista.Add(texto);
                }
                else
                {
                    ViewBag.Mensagem = "";
                }
            }
            var model = new LoteViewModel()
            {
                ListaAlerta = lista,
            };

            return(model);
        }