public List <EstoqueProduto> ListarEstoqueProduto(string strNomeCampo, string strTipoCampo, string strValor, string strOrdem) { try { AbrirConexao(); string strSQL = "select * from [VW_ESTOQUE]"; if (strValor != "") { strSQL = strSQL + " Where " + MontaFiltro(strNomeCampo, strTipoCampo, strValor); } if (strOrdem != "") { strSQL = strSQL + " Order By " + strOrdem; } Cmd = new SqlCommand(strSQL, Con); Dr = Cmd.ExecuteReader(); List <EstoqueProduto> lista = new List <EstoqueProduto>(); Habil_TipoDAL rx = new Habil_TipoDAL(); Habil_Tipo px = new Habil_Tipo(); while (Dr.Read()) { EstoqueProduto p = new EstoqueProduto(); p.CodigoIndice = Convert.ToInt32(Dr["CD_INDEX"]); p.CodigoEmpresa = Convert.ToInt32(Dr["CD_EMPRESA"]); p.CodigoIndiceLocalizacao = Convert.ToInt32(Dr["CD_INDEX_LOCALIZACAO"]); p.CodigoLocalizacao = Convert.ToString(Dr["CD_LOCALIZACAO"]); p.CodigoProduto = Convert.ToInt32(Dr["CD_PRODUTO"]); p.CodigoLote = Convert.ToInt32(Dr["CD_LOTE"]); p.Quantidade = Convert.ToDecimal(Dr["QUANTIDADE"]); p.CodigoSituacao = Convert.ToInt32(Dr["CD_SITUACAO"]); p.NomeEmpresa = Convert.ToString(Dr["NM_PESSOA"]); p.NomeProduto = Convert.ToString(Dr["NM_PRODUTO"]); p.DescricaoSituacao = Convert.ToString(Dr["DS_SITUACAO"]); lista.Add(p); } return(lista); } catch (Exception ex) { throw new Exception("Erro ao Listar Estoques: " + ex.Message.ToString()); } finally { FecharConexao(); } }
public void EstoqueIndiceProduto(int intCodEmpresa, int intCodProduto, int intCodLocalizacao, int intCodLote, ref decimal refQtd) { try { AbrirConexao(); strSQL = "select QUANTIDADE from [VW_ESTOQUE] WHERE CD_EMPRESA = @v1 AND CD_PRODUTO = @v2 AND CD_INDEX_LOCALIZACAO = @v3 AND CD_LOTE = @v4"; Cmd = new SqlCommand(strSQL, Con); Cmd.Parameters.AddWithValue("@v1", intCodEmpresa); Cmd.Parameters.AddWithValue("@v2", intCodProduto); Cmd.Parameters.AddWithValue("@v3", intCodLocalizacao); Cmd.Parameters.AddWithValue("@v4", intCodLote); Dr = Cmd.ExecuteReader(); EstoqueProduto p; while (Dr.Read()) { p = new EstoqueProduto(); refQtd = Convert.ToDecimal(Dr["QUANTIDADE"]); } } catch (Exception ex) { throw new Exception("Erro ao Listar Estoque : " + ex.Message.ToString()); } finally { FecharConexao(); } }
public List <EstoqueProduto> ListarEstoque2(int strNomeEmpresa, int strNomeProtuto) { try { AbrirConexao(); string strSQL = "Select CD_LOTE from [VW_ESTOQUE] Where CD_EMPRESA = @V1 AND CD_PRODUTO = @v2"; Cmd = new SqlCommand(strSQL, Con); Cmd.Parameters.AddWithValue("@v1", strNomeEmpresa); Cmd.Parameters.AddWithValue("@v2", strNomeProtuto); Dr = Cmd.ExecuteReader(); List <EstoqueProduto> lista = new List <EstoqueProduto>(); while (Dr.Read()) { EstoqueProduto p = new EstoqueProduto(); p.CodigoLote = Convert.ToInt32(Dr["CD_LOTE"]); lista.Add(p); } return(lista); } catch (Exception ex) { throw new Exception("Erro ao Listar Estoque : " + ex.Message.ToString()); } finally { FecharConexao(); } }
public void Atualizar(EstoqueProduto p) { try { AbrirConexao(); strSQL = "update [ESTOQUE] set [CD_EMPRESA] = @v1, [CD_LOCALIZACAO] = @v2, [CD_PRODUTO] = @v3, [CD_LOTE] = @v4, [QUANTIDADE] = @v5, [CD_SITUACAO] = @v6 Where [CD_INDEX] = @v7"; Cmd = new SqlCommand(strSQL, Con); Cmd.Parameters.AddWithValue("@v7", p.CodigoIndice); Cmd.Parameters.AddWithValue("@v1", p.CodigoEmpresa); Cmd.Parameters.AddWithValue("@v2", p.CodigoIndiceLocalizacao); Cmd.Parameters.AddWithValue("@v3", p.CodigoProduto); Cmd.Parameters.AddWithValue("@v4", p.CodigoLote); Cmd.Parameters.AddWithValue("@v5", p.Quantidade); Cmd.Parameters.AddWithValue("@v6", p.CodigoSituacao); p.CodigoIndice = Convert.ToInt32(Cmd.ExecuteScalar()); Cmd.ExecuteNonQuery(); } catch (Exception ex) { throw new Exception("Erro ao atualizar o Estoque: " + ex.Message.ToString()); } finally { FecharConexao(); } }
static void Main(string[] args) { ViewMethods vm = new ViewMethods(); EstoqueProduto ep = new EstoqueProduto(); ListaVendedore lv = new ListaVendedore(); Vendedor vendedor1 = new Vendedor("Jhonata", "Simonetto"); Produto p1 = new Produto("Apple", 100.00m, 10); lv.AdicionarVendedor(vendedor1); ep.AdicionarEstoque(p1); vm.VenderProduto(5, 10, p1, vendedor1); Console.WriteLine("Tecle:" + "\n1 Para cadastrar Produto//" + "\n2 Para Cadastrar vendedor//" + "\n3 Listar todos produtos//" + "\n4 Listar todos vendedors//" + "\n5 Para realizar venda de um produto ja cadastrado//"); string opcao = Convert.ToString(Console.ReadLine()); //add method while and trim to clean if (opcao == "1") { Console.WriteLine("Digite o nome do Produto: "); string nomeProduto = Console.ReadLine(); Console.WriteLine("Digite o valor do Produto: "); decimal valorProduto = Convert.ToDecimal(Console.ReadLine()); Console.WriteLine("Digite a quantidade em estoque: "); int quantidadeProduto = Convert.ToInt32(Console.ReadLine()); Produto p = new Produto(nomeProduto, valorProduto, quantidadeProduto); ep.AdicionarEstoque(p); Console.ReadKey(); } else if (opcao == "2") { Console.WriteLine("Digite o primeiro nome do Vendedor: "); string nomeVendedor = Console.ReadLine(); Console.WriteLine("Digite o ultimo nome do Vendedor: "); string sobrenomeVendedor = Console.ReadLine(); Vendedor v = new Vendedor(nomeVendedor, sobrenomeVendedor); lv.AdicionarVendedor(v); Console.ReadKey(); } else if (opcao == "3") { Console.WriteLine(ep.ToString()); Console.ReadKey(); } else if (opcao == "4") { Console.WriteLine(lv.ToString()); Console.ReadKey(); } //Console.ReadKey(); }
public bool AdicionarProduto(EstoqueProduto dados) { var db = _Connection(); bool retorno; using (var con = new SqlConnection(db)) { try { var query = @"UPDATE Produtos SET Estoque = @idEstoque WHERE Id = @idProduto"; con.Open(); var retornoConsulta = con.Execute(query, dados); if (retornoConsulta >= 1) { retorno = true; } else { retorno = false; } } catch (Exception ex) { throw ex; } finally { con.Close(); } } return(retorno); }
static void Main(string[] args) { EstoqueProduto produto = new EstoqueProduto("TV", 500.00, 5); produto.NomeDoProduto = "Notebook"; Console.WriteLine(produto.NomeDoProduto); /*Console.WriteLine("Entre com os dados do produto:"); * Console.Write("Nome: "); * string nomeDoProduto = Console.ReadLine(); * Console.Write("Preco: "); * double precoDoProduto = double.Parse(Console.ReadLine()); * * EstoqueProduto dados = new EstoqueProduto(nomeDoProduto, precoDoProduto); * * Console.WriteLine($"Dados do produto: {dados}"); * * Console.Write("Digite o número de produtos a ser adicionado ao estoque: "); * int quantidade = int.Parse(Console.ReadLine()); * dados.AdicionarProduto(quantidade); * Console.WriteLine($"Dados Atualizados: {dados}"); * * Console.Write("Digite o número de produtos a ser removido ao estoque: "); * quantidade = int.Parse(Console.ReadLine()); * dados.RemoverProduto(quantidade); * Console.WriteLine($"Dados atualizados: {dados}");*/ }
public List <EstoqueProduto> RetornarListaEstoque() { var listaProdutosEstoque = (from p in _context.Produto join pe in _context.ProdutoEstoque on p.Id equals pe.ProdutoId orderby p.Nome select new { p.Id, p.Nome, pe.EstoqueId }).ToList(); List <EstoqueProduto> lista = new List <EstoqueProduto>(); EstoqueProduto item; foreach (var ls in listaProdutosEstoque) { item = new EstoqueProduto(); item.Id = Convert.ToInt32(ls.Id); item.Nome = ls.Nome.ToString(); var qtde = _context.Estoque.FirstOrDefault(m => m.Id == ls.EstoqueId).Quantidade; item.Quantidade = qtde; lista.Add(item); } return(lista); }
public ActionResult DeleteConfirmed(int id) { EstoqueProduto estoqueProduto = db.EstoqueProduto.Find(id); db.EstoqueProduto.Remove(estoqueProduto); db.SaveChanges(); return(RedirectToAction("Index")); }
public void ObterQuantidadeTotal(int intCodEmpresa, int intCodProduto, int intCodLocalizacao, int intCodLote, ref decimal refQtdTotal) { try { AbrirConexao(); strSQL = "select ISNULL(SUM(QUANTIDADE),0) AS QUANTIDADE from VW_ESTOQUE WHERE CD_SITUACAO = 128"; strSQL = strSQL + "AND CD_EMPRESA = @v1"; if (intCodProduto != 0) { strSQL = strSQL + " AND CD_PRODUTO = @v2"; } if (intCodLocalizacao != 0) { strSQL = strSQL + " AND CD_INDEX_LOCALIZACAO = @v3"; } if (intCodLote != 0) { strSQL = strSQL + " AND CD_LOTE = @v4"; } Cmd = new SqlCommand(strSQL, Con); Cmd.Parameters.AddWithValue("@v1", intCodEmpresa); if (intCodProduto != 0) { Cmd.Parameters.AddWithValue("@v2", intCodProduto); } if (intCodLocalizacao != 0) { Cmd.Parameters.AddWithValue("@v3", intCodLocalizacao); } if (intCodLote != 0) { Cmd.Parameters.AddWithValue("@v4", intCodLote); } Dr = Cmd.ExecuteReader(); EstoqueProduto p = null; if (Dr.Read()) { p = new EstoqueProduto(); refQtdTotal = Convert.ToDecimal(Dr["QUANTIDADE"]); } return; } catch (Exception ex) { throw new Exception("Erro ao Pesquisar Estoque: " + ex.Message.ToString()); } finally { FecharConexao(); } }
public bool Create([Bind(Include = "ID,ProdutoID,QtdeTotalEstoque,CustoTotalEstoque")] EstoqueProduto estoqueProduto) { if (ModelState.IsValid) { db.EstoqueProdutos.Add(estoqueProduto); db.SaveChanges(); return(true); } return(false); }
public bool RemoverItem(EstoqueProduto dados) { if (dados.IdEstoque >= 1) { dados.IdEstoque = 0; } var result = _estoque.RemoverProduto(dados); return(result); }
public IActionResult Put(int id, [FromBody] EstoqueProduto estoqueProduto) { try { _repo.Editar(estoqueProduto); return(Ok(_repo.SelecionarTudo())); } catch (System.Exception) { return(StatusCode(500)); } }
private void GravarEstoqueProduto(ItemOrdemDeCompra item) { var ep = new EstoqueProduto(); ep.IdProduto = item.IdProduto.Value; ep.IdOrdemCompra = this.Id; ep.DataMovimentacao = DateTime.Now; ep.IdHistorico = 3; //Ordem de Compra ep.ValorUnitario = item.ValorUnitario; db.EstoqueProduto.Add(ep); db.SaveChanges(); }
public ActionResult Edit([Bind(Include = "Id,IdProduto,IdOrdemCompra,IdOrdemServico,DataMovimentacao,IdHistorico,ValorUnitario")] EstoqueProduto estoqueProduto) { if (ModelState.IsValid) { db.Entry(estoqueProduto).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.IdHistorico = new SelectList(db.HistoricoEstoque, "Id", "Descricao", estoqueProduto.IdHistorico); ViewBag.IdOrdemCompra = new SelectList(db.OrdemCompra, "Id", "DescricaoCurta", estoqueProduto.IdOrdemCompra); ViewBag.IdProduto = new SelectList(db.Produto, "Id", "Descricao", estoqueProduto.IdProduto); return(View(estoqueProduto)); }
// GET: EstoqueProduto/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } EstoqueProduto estoqueProduto = db.EstoqueProduto.Find(id); if (estoqueProduto == null) { return(HttpNotFound()); } return(View(estoqueProduto)); }
public bool Edit([Bind(Include = "ID,ProdutoID,QtdeTotalEstoque,CustoTotalEstoque")] EstoqueProduto estoqueProduto) { EstoqueProduto estoqueProdutoEditar = db.EstoqueProdutos.Find(estoqueProduto.ID); estoqueProdutoEditar.QtdeTotalEstoque = estoqueProduto.QtdeTotalEstoque; estoqueProdutoEditar.CustoTotalEstoque = estoqueProduto.CustoTotalEstoque; if (ModelState.IsValid) { db.Entry(estoqueProdutoEditar).State = EntityState.Modified; db.SaveChanges(); return(true); } return(false); }
public ActionResult <EstoqueProduto> GetEstoqueProduto([FromHeader] string ibge, int produto, int unidade, int produtor, string lote) { try { ibge = _config.GetConnectionString(Connection.GetConnection(ibge)); EstoqueProduto item = _produtoRepository.GetEstoqueImunobiologicoByParams(ibge, produto, unidade, produtor, lote); return(Ok(item)); } catch (Exception ex) { var response = TrataErro.GetResponse(ex.Message, true); return(StatusCode((int)HttpStatusCode.InternalServerError, response)); } }
public PartialViewResult QuantidadeEstoqueP(int?id) { EstoqueProduto ep = new EstoqueProduto(); ApplicationDbContext ex = new ApplicationDbContext(); if (ex.EstoqueProdutos.Where(x => x.ProdutoId == id).FirstOrDefault() != null) { ViewBag.Quantidade = ex.EstoqueProdutos.Where(x => x.ProdutoId == id).Sum(x => x.Quantidade); } else { ViewBag.Quantidade = 0; } return(PartialView()); }
public void Devolver(List <DevolucaoVenda> devolucaoVenda) { Parallel.ForEach(devolucaoVenda, async t => { EstoqueProduto estoqueProduto = await _estoqueProdutoService.GetEstoqueProdutoByProdutoIdAsync(t.ProdutoId); VendaProduto vendaProd = new VendaProduto(); vendaProd = (t.VendaProduto is null) ? await _vendaProdutoService.GetByIdAsync(t.VendaProdutoId) : t.VendaProduto; estoqueProduto.QuantidadeProduto = estoqueProduto.QuantidadeProduto + vendaProd.QuantidadeVedida; EntradaProdutoEstoque entradaProdutoEstoque = new EntradaProdutoEstoque(t.ProdutoId, estoqueProduto.EstoqueId); _entradaProdutoEstoqueService.AddAsync(entradaProdutoEstoque); AddAsync(t); }); }
public void Devolver(List <DevolucaoCompra> devolucaoCompra) { Parallel.ForEach(devolucaoCompra, async t => { EstoqueProduto estoqueProduto = await _estoqueProdutoService.GetEstoqueProdutoByProdutoIdAsync(t.ProdutoId); CompraProduto compProd = new CompraProduto(); compProd = (t.CompraProduto is null) ? await _compraProdutoService.GetByIdAsync(t.CompraProdutoId) : t.CompraProduto; estoqueProduto.QuantidadeProduto = estoqueProduto.QuantidadeProduto - compProd.QuantidadeComprada; SaidaProdutoEstoque saidaProdutoEstoque = new SaidaProdutoEstoque(t.ProdutoId, estoqueProduto.EstoqueId, compProd.QuantidadeComprada); _saidaProdutoEstoqueService.AddAsync(saidaProdutoEstoque); AddAsync(t); }); }
public async void Enviado(VendaProduto vendaProduto, Guid estoqueId) { EstoqueProduto estoqueProdutoService = await _estoqueProdutoService.GetEstoqueProdutoByProdutoIdAsync(vendaProduto.ProdutoId); if (estoqueProdutoService is null) { throw (new Exception("Por favor, cadastre o produto nesse estoque, depois realize a operação de envio!")); } estoqueProdutoService.QuantidadeProduto = estoqueProdutoService.QuantidadeProduto - vendaProduto.QuantidadeVedida; VendaProduto vendaProdutoAntiga = await this.GetByIdAsync(vendaProduto.Id); vendaProdutoAntiga.Enviado = true; SaidaProdutoEstoque entradaProdutoEstoque = new SaidaProdutoEstoque(vendaProduto.ProdutoId, estoqueId, vendaProduto.QuantidadeVedida); _saidaProdutoEstoqueService.Add(entradaProdutoEstoque); }
// GET: EstoqueProduto/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } EstoqueProduto estoqueProduto = db.EstoqueProduto.Find(id); if (estoqueProduto == null) { return(HttpNotFound()); } ViewBag.IdHistorico = new SelectList(db.HistoricoEstoque, "Id", "Descricao", estoqueProduto.IdHistorico); ViewBag.IdOrdemCompra = new SelectList(db.OrdemCompra, "Id", "DescricaoCurta", estoqueProduto.IdOrdemCompra); ViewBag.IdProduto = new SelectList(db.Produto, "Id", "Descricao", estoqueProduto.IdProduto); return(View(estoqueProduto)); }
public async void Recebido(CompraProduto compraProduto, Guid estoqueId) { EstoqueProduto estoqueProdutoService = await _estoqueProdutoService.GetEstoqueProdutoByProdutoIdAsync(compraProduto.ProdutoId); if (estoqueProdutoService is null) { throw (new Exception("Por favor, cadastre o produto nesse estoque, depois realize a operação de recebimento!")); } estoqueProdutoService.QuantidadeProduto += compraProduto.QuantidadeComprada; CompraProduto compraProdutoAntiga = await this.GetByIdAsync(compraProduto.Id); compraProdutoAntiga.IsRecebido = true; EntradaProdutoEstoque entradaProdutoEstoque = new EntradaProdutoEstoque(compraProduto.ProdutoId, estoqueId); _entradaProdutoEstoqueService.Add(entradaProdutoEstoque); }
public void Inserir(EstoqueProduto p) { try { AbrirConexao(); strSQL = "insert into [ESTOQUE] (CD_EMPRESA, CD_LOCALIZACAO, CD_PRODUTO, CD_LOTE, QUANTIDADE, CD_SITUACAO )" + " values (@v1, @v2, @v3, @v4, @v5, @v6)"; Cmd = new SqlCommand(strSQL, Con); Cmd.Parameters.AddWithValue("@v1", p.CodigoEmpresa); Cmd.Parameters.AddWithValue("@v2", p.CodigoIndiceLocalizacao); Cmd.Parameters.AddWithValue("@v3", p.CodigoProduto); Cmd.Parameters.AddWithValue("@v4", p.CodigoLote); Cmd.Parameters.AddWithValue("@v5", p.Quantidade); Cmd.Parameters.AddWithValue("@v6", p.CodigoSituacao); p.CodigoIndice = Convert.ToInt32(Cmd.ExecuteScalar()); } catch (SqlException ex) { if (ex.Errors.Count > 0) // Assume the interesting stuff is in the first error { switch (ex.Errors[0].Number) { case 2601: // Primary key violation throw new DuplicateNameException("Inclusão não Permitida!!! Chave já consta no Banco de Dados. Mensagem :" + ex.Message.ToString(), ex); case 2627: // Primary key violation throw new DuplicateNameException("Inclusão não Permitida!!! Chave já consta no Banco de Dados. Mensagem :" + ex.Message.ToString(), ex); default: throw new Exception("Erro ao Incluir Estoque: " + ex.Message.ToString()); } } } catch (Exception ex) { throw new Exception("Erro ao gravar PIS: " + ex.Message.ToString()); } finally { FecharConexao(); } }
public EstoqueProduto PesquisarEstoqueParaInventario(decimal decIndice) { try { AbrirConexao(); strSQL = "Select * from [VW_ESTOQUE] Where CD_INDEX = @v1"; Cmd = new SqlCommand(strSQL, Con); Cmd.Parameters.AddWithValue("@v1", decIndice); Dr = Cmd.ExecuteReader(); EstoqueProduto p = null; if (Dr.Read()) { p = new EstoqueProduto(); p.CodigoIndice = Convert.ToInt32(Dr["CD_INDEX"]); p.CodigoEmpresa = Convert.ToInt32(Dr["CD_EMPRESA"]); p.CodigoIndiceLocalizacao = Convert.ToInt32(Dr["CD_INDEX_LOCALIZACAO"]); p.CodigoLocalizacao = Convert.ToString(Dr["CD_LOCALIZACAO"]); p.CodigoProduto = Convert.ToInt32(Dr["CD_PRODUTO"]); p.CodigoLote = Convert.ToInt32(Dr["CD_LOTE"]); p.Quantidade = Convert.ToDecimal(Dr["QUANTIDADE"]); p.CodigoSituacao = Convert.ToInt32(Dr["CD_SITUACAO"]); p.NomeEmpresa = Convert.ToString(Dr["CD_PESSOA"]); p.NomeProduto = Convert.ToString(Dr["NM_PRODUTO"]); p.DescricaoSituacao = Convert.ToString(Dr["DS_SITUACAO"]); } return(p); } catch (Exception ex) { throw new Exception("Erro ao Pesquisar Estoque: " + ex.Message.ToString()); } finally { FecharConexao(); } }
public EstoqueProduto LerEstoque(int empresa, string localizacao, int produto, int lote) { try { AbrirConexao(); strSQL = "Select * from [VW_ESTOQUE] Where CD_EMPRESA = @V1 AND CD_INDEX_LOCALIZACAO = @v2 AND CD_PRODUTO = @v3 AND CD_LOTE = @v4"; Cmd = new SqlCommand(strSQL, Con); Cmd.Parameters.AddWithValue("@v1", empresa); Cmd.Parameters.AddWithValue("@v2", localizacao); Cmd.Parameters.AddWithValue("@v3", produto); Cmd.Parameters.AddWithValue("@v4", lote); Dr = Cmd.ExecuteReader(); EstoqueProduto p = null; if (Dr.Read()) { p = new EstoqueProduto(); p.CodigoEmpresa = Convert.ToInt32(Dr["CD_EMPRESA"]); p.CodigoLocalizacao = Convert.ToString(Dr["CD_LOCALIZACAO"]); p.CodigoProduto = Convert.ToInt32(Dr["CD_PRODUTO"]); p.CodigoLote = Convert.ToInt32(Dr["CD_LOTE"]); } return(p); } catch (Exception ex) { throw new Exception("Erro ao Pesquisar Estoque: " + ex.Message.ToString()); } finally { FecharConexao(); } }
public ActionResult Create([Bind(Include = "ID,DataProducao,ValorVendaUnitario,ProdutoID,QtdeInicial,QtdeDisponivel,CustoMedio,CustoTotalInicial,Validade,_Produto")] LoteProduto loteProduto) { if (ModelState.IsValid) { // Verificando se há insumos necessários suficientes em estoque bool insumosDisponiveis = true; Produto produto = db.Produtos.Find(loteProduto.ProdutoID); foreach (InsumoComposicaoProduto item in produto._ComposicaoProduto) { double qtdeInsumo = item.QtdeInsumo * loteProduto.QtdeInicial; double qtdeEstoqueInsumo = db.EstoqueInsumos.Where(m => m.InsumoID.Equals(item.InsumoID)).Sum(m => m.QtdeTotalEstoque); if (qtdeInsumo > qtdeEstoqueInsumo) { insumosDisponiveis = false; } } if (insumosDisponiveis) { // Cria loteProduto no banco, depois vai ser alterado para incluir atributos faltantes sobre o custo loteProduto.QtdeDisponivel = loteProduto.QtdeInicial; db.LotesProdutos.Add(loteProduto); db.SaveChanges(); double custoTotalLoteProduto = 0; List <LoteInsumoProducao> lotesComposicaoProduto = new List <LoteInsumoProducao>(); // Percorre composição de Produto para encontrar os insumos necessário foreach (InsumoComposicaoProduto item in loteProduto._Produto._ComposicaoProduto) { EstoqueInsumo estoqueInsumo = db.EstoqueInsumos.Where(e => e.InsumoID == item.InsumoID).FirstOrDefault(); double qtdeInsumo = item.QtdeInsumo * loteProduto.QtdeInicial; while (qtdeInsumo > 0) { // Procura o Lote de Insumo que tenha estoque para e que esteja com a validade mais próxima LoteInsumo loteDisponivel = db.LotesInsumos. Where(l => l.InsumoID == item.InsumoID && l.QtdeDisponivel > 0). OrderBy(l => l.Validade).FirstOrDefault(); if ((loteDisponivel.QtdeDisponivel - qtdeInsumo) >= 0) { loteDisponivel.QtdeDisponivel -= qtdeInsumo; LotesInsumosController lic = new LotesInsumosController(); lic.Edit(loteDisponivel); LoteInsumoProducao loteInsumoProducao = new LoteInsumoProducao() { QtdeInsumo = qtdeInsumo, CustoTotalInsumo = qtdeInsumo * loteDisponivel.CustoMedio, LoteInsumoID = loteDisponivel.ID, LoteProdutoID = loteProduto.ID }; MovimentacaoEstoqueInsumo movimentacaoEstoqueInsumo = new MovimentacaoEstoqueInsumo() { DataMovimentacao = loteProduto.DataProducao, Qtde = -qtdeInsumo, ValorMovimentacao = loteDisponivel.CustoMedio * qtdeInsumo, LoteInsumoID = loteDisponivel.ID }; MovimentacoesEstoqueInsumosController meic = new MovimentacoesEstoqueInsumosController(); meic.Create(movimentacaoEstoqueInsumo); estoqueInsumo.QtdeTotalEstoque -= loteInsumoProducao.QtdeInsumo; estoqueInsumo.CustoTotalEstoque -= loteInsumoProducao.CustoTotalInsumo; EstoqueInsumosController eic = new EstoqueInsumosController(); eic.Edit(estoqueInsumo); lotesComposicaoProduto.Add(loteInsumoProducao); qtdeInsumo = 0; custoTotalLoteProduto += loteInsumoProducao.CustoTotalInsumo; } else { LoteInsumoProducao loteInsumoProducao = new LoteInsumoProducao() { QtdeInsumo = loteDisponivel.QtdeDisponivel, CustoTotalInsumo = loteDisponivel.QtdeDisponivel * loteDisponivel.CustoMedio, LoteInsumoID = loteDisponivel.ID, LoteProdutoID = loteProduto.ID }; MovimentacaoEstoqueInsumo movimentacaoEstoqueInsumo = new MovimentacaoEstoqueInsumo() { DataMovimentacao = loteProduto.DataProducao, Qtde = -loteDisponivel.QtdeDisponivel, ValorMovimentacao = loteDisponivel.CustoMedio * loteDisponivel.QtdeDisponivel, LoteInsumoID = loteDisponivel.ID }; MovimentacoesEstoqueInsumosController meic = new MovimentacoesEstoqueInsumosController(); meic.Create(movimentacaoEstoqueInsumo); estoqueInsumo.QtdeTotalEstoque -= loteInsumoProducao.QtdeInsumo; estoqueInsumo.CustoTotalEstoque -= loteInsumoProducao.CustoTotalInsumo; EstoqueInsumosController eic = new EstoqueInsumosController(); eic.Edit(estoqueInsumo); lotesComposicaoProduto.Add(loteInsumoProducao); qtdeInsumo -= loteDisponivel.QtdeDisponivel; custoTotalLoteProduto += loteInsumoProducao.CustoTotalInsumo; loteDisponivel.QtdeDisponivel = 0; LotesInsumosController lic = new LotesInsumosController(); lic.Edit(loteDisponivel); } } } loteProduto.CustoTotalInicial = custoTotalLoteProduto; loteProduto.CustoMedio = custoTotalLoteProduto / loteProduto.QtdeInicial; db.Entry(loteProduto).State = EntityState.Modified; db.LotesInsumosProducao.AddRange(lotesComposicaoProduto); db.SaveChanges(); MovimentacaoEstoqueProduto movimentacaoEstoqueProduto = new MovimentacaoEstoqueProduto() { DataMovimentacao = loteProduto.DataProducao, Qtde = loteProduto.QtdeInicial, ValorMovimentacao = loteProduto.CustoTotalInicial, LoteProdutoID = loteProduto.ID }; MovimentacoesEstoqueProdutosController mepc = new MovimentacoesEstoqueProdutosController(); if (mepc.Create(movimentacaoEstoqueProduto)) { EstoqueProdutosController epc = new EstoqueProdutosController(); var x = db.EstoqueProdutos.Where(e => e.ProdutoID == loteProduto.ProdutoID).FirstOrDefault(); if (x != null) { EstoqueProduto estoqueProduto = x; estoqueProduto.QtdeTotalEstoque += loteProduto.QtdeInicial; estoqueProduto.CustoTotalEstoque += loteProduto.CustoTotalInicial; epc.Edit(estoqueProduto); } else { EstoqueProduto estoqueProduto = new EstoqueProduto() { QtdeTotalEstoque = loteProduto.QtdeInicial, CustoTotalEstoque = loteProduto.CustoTotalInicial, ProdutoID = loteProduto.ProdutoID }; if (!epc.Create(estoqueProduto)) { return(View()); } } return(RedirectToAction("Index")); } } } ViewBag.ProdutoID = new SelectList(db.Produtos, "ProdutoID", "Nome", loteProduto.ProdutoID); return(View(loteProduto)); }
public bool AdicionaItem(EstoqueProduto dados) { var result = _estoque.AdicionarProduto(dados); return(result); }