public string Concluir(OrdemProducao o) { OrdemProducaoModel opm = new OrdemProducaoModel(); OrdemProducao op = opm.OrdemProducao.Single(c => c.ordemProducaoID.Equals(o.ordemProducaoID)); if (op.dtConclusao == null) { op.dtConclusao = DateTime.Now; } else { return("Não é possível concluir uma OP que já foi concluída."); } try { opm.SaveChanges(); Maquinarios m = new Maquinarios(); m.ConcluirOP(op.maquinarioID, op.dtPrevisao); return("OP concluída."); } catch (Exception e) { return("OP não concluída."); } }
public string Adicionar(Maquinarios m) { try { MaquinariosModel mm = new MaquinariosModel(); mm.Maquinarios.Add(m); mm.SaveChanges(); return("Maquinario incluído"); } catch { return("Não foi possível incluir o maquinário."); } }
// Este método retorna a menor data entre os maquinários do mesmo tipo public DateTime?MenorData(int produtoID) { ProdutosMaquinarios produtosMaquinarios = new ProdutosMaquinarios(); List <ProdutosMaquinarios> lpm = produtosMaquinarios.Pesquisar(produtoID); DateTime?min = null; // Verifica nos máquinarios que podem produzir aquele material, qual a menor data possível para produção for (int k = 0; k < lpm.Count; k++) { Maquinarios m = new Maquinarios(); DateTime? minThis = null; List <Maquinarios> lm = Pesquisar(0, "", lpm[0].tipoMaquinario); for (int l = 0; l < lm.Count; l++) { if (lm[l].statusMaquinario == 0) { continue; } if (minThis == null) { minThis = lm[l].dtDesocupacao; } else if (minThis != null && lm[l].dtDesocupacao != null) { if (DateTime.Compare(Convert.ToDateTime(minThis), Convert.ToDateTime(lm[l].dtDesocupacao)) > 0) { minThis = lm[l].dtDesocupacao; } } } if (min == null) { min = minThis; } else if (min != null && minThis != null) { if (DateTime.Compare(Convert.ToDateTime(min), Convert.ToDateTime(minThis)) > 0) { min = minThis; } } } return(min); }
public string Deletar(int maquinarioID) { try { MaquinariosModel mm = new MaquinariosModel(); Maquinarios maquinario = mm.Maquinarios.Single(m => m.maquinarioID.Equals(maquinarioID)); mm.Maquinarios.Remove(maquinario); mm.SaveChanges(); return("Maquinário deletado."); } catch (Exception e) { return("Não foi possível deletar."); } }
// Este método encontra o melhor maquinario no momento para determinado produto public int maquinarioApropriado(int produtoID) { List <Maquinarios> lm = new List <Maquinarios>(); ProdutosModel pm = new ProdutosModel(); List <ProdutosMaquinarios> lpm = pm.PesquisarPM(produtoID); for (int i = 0; i < lpm.Count; i++) { Maquinarios m = new Maquinarios(); List <Maquinarios> lmm = m.Pesquisar(0, "", lpm[i].tipoMaquinario); for (int j = 0; j < lmm.Count; j++) { lm.Add(lmm[j]); } } DateTime?menorData = lm[0].dtDesocupacao; int menorMaquinario = lm[0].maquinarioID; for (int i = 0; i < lm.Count; i++) { if (lm[i].dtDesocupacao == null) { return(lm[i].maquinarioID); } else { if (DateTime.Compare(Convert.ToDateTime(menorData), Convert.ToDateTime(lm[i].dtDesocupacao)) > 0) { menorData = lm[i].dtDesocupacao; menorMaquinario = lm[i].maquinarioID; } } } return(menorMaquinario); }
public string Alterar(Maquinarios m) { try { MaquinariosModel mm = new MaquinariosModel(); Maquinarios maquinario = mm.Maquinarios.Single(c => c.maquinarioID.Equals(m.maquinarioID)); maquinario.nome = (m.nome == null ? maquinario.nome : m.nome); maquinario.descricao = (m.descricao == null ? maquinario.descricao : m.descricao); maquinario.dtDesocupacao = (m.dtDesocupacao == null ? maquinario.dtDesocupacao : m.dtDesocupacao); maquinario.dtOcupacao = (m.dtOcupacao == null ? maquinario.dtOcupacao : m.dtOcupacao); maquinario.statusMaquinario = (m.statusMaquinario == null ? maquinario.statusMaquinario : m.statusMaquinario); maquinario.tipoMaquinario = (m.tipoMaquinario == null ? maquinario.tipoMaquinario : m.tipoMaquinario); mm.SaveChanges(); return("Maquinário alterado."); } catch (Exception e) { return("Não foi possível alterar o maquinário."); } }
public string Adicionar(Maquinarios m) { MaquinariosModel mm = new MaquinariosModel(); return(mm.Adicionar(m)); }
// Este método verifica a quantidade de dias necessários para produção dos itens; public string VerificaQuntidade(int produtoID, int qntdPedido) { string retornoUsuario = ""; bool temCompra = false; string compra = ""; string producao = ""; produtos = new string[0][]; VerificaNecessidade(produtoID, qntdPedido, 1, null); // Este 'for' verifica se é necessário comprar ou produzir o atual item do pedido for (int j = produtos.Length - 1; j >= 0; j--) { if (produtos[j][2] == "Ok" && produtos[j][3] == "1") { produtosOk += produtos[j][0] + ","; } if (produtos[j][2] == "Comprar" && produtos[j][3] == "1") { retornoUsuario += "Não temos o produto " + produtos[j][6] + ", será necessário realizar sua compra\r\n"; } if (produtos[j][2] == "Comprar" && produtos[j][3] != "1") { compra += produtos[j][6] + ","; temCompra = true; compraGeral += compra; } // Caso seja necessário produzir algum item, verifica a quantidade de dias para sua produção if (produtos[j][2] == "Produzir") { int segurancaCompra = 0; if (temCompra) { segurancaCompra = 7; } Maquinarios m = new Maquinarios(); if (produtos[j][3] != "1") { producao += produtos[j][6] + ","; } producaoGeral += producao; DateTime?min = m.MenorData(Convert.ToInt32(produtos[j][0])); int totalDias = 0; if (min != null) { totalDias = (Convert.ToDateTime(min).Subtract(DateTime.Now)).Days; } leadTime = leadTime + Convert.ToInt32(produtos[j][5]) + (totalDias < 0 ? 0 : totalDias) + 1 + segurancaCompra; } } // Concatena mensagens para ususário if (compra.Length != 0 || producao.Length != 0) { retornoUsuario += "Para produzir o produto " + produtos[0][6] + " será necessário:"; if (compra.Length != 0) { retornoUsuario += "\r\nComprar os seguintes materiais: " + compra.Substring(0, compra.Length - 1) + "."; } if (producao.Length != 0) { retornoUsuario += "\r\nProduzir os seguintes materiais: " + producao.Substring(0, producao.Length - 1) + "."; } } else { pedidoOk = true; } if (leadTime > 0) { retornoUsuario += "\r\nO processo de produção poderá demorar " + leadTime + " dias."; if (temCompra) { retornoUsuario += " Este prazo pode sofrer alterações de acordo com a data de entrega dos produtos pendentes para compra."; } } return(retornoUsuario); }
public string EmitirOP(int pedidoID) { OrdemProducao ordemProducao = new OrdemProducao(); List <OrdemProducao> lop = ordemProducao.Pesquisar(0, 0, pedidoID); if (lop.Count > 0) { return("Este pedido já possui Ordem de Produção, portanto não é possível emitir novamente."); } else { string produzir = ""; Produtos p = new Produtos(); Pedidos pedidos = new Pedidos(); List <PedidosProdutos> lpp = pedidos.PesquisaProdutos(pedidoID); for (int i = 0; i < lpp.Count; i++) { produzir += p.VerificaQuntidade(lpp[i].produtoID, lpp[i].qntPedido); } if (p.compraGeral != null) { return("Infelizmente não é possivel emitir ordem de produção, ainda é necessário comprar os seguintes itens: " + p.compraGeral); } else { if (p.producaoGeral != null) { string[] a = p.producaoGeral.Split(','); try { for (int k = 0; k < p.produtos.Length; k++) { if (p.produtos[k][2] == "Produzir") { Maquinarios m = new Maquinarios(); // Insere OP OrdemProducao op = new OrdemProducao(); op.produtoID = Convert.ToInt32(p.produtos[k][0]); op.quantidade = Convert.ToInt32(p.produtos[k][1]); op.dtOrdemProd = DateTime.Now; op.dtPrevisao = DateTime.Now.AddDays(Convert.ToInt32(p.produtos[k][5])); op.pedidoID = lpp[0].pedidoID; op.maquinarioID = p.maquinarioApropriado(Convert.ToInt32(p.produtos[k][0])); op.Adicionar(op); // Altera maquinario m.dtDesocupacao = op.dtPrevisao; m.dtOcupacao = DateTime.Today; m.statusMaquinario = 1; m.maquinarioID = op.maquinarioID; m.Alterar(m); } } return("OP emitida"); } catch (Exception) { return("Não foi possivel emitir a OP"); } } else { return("Os itens deste pedido não precisam de OP!"); } } } }