示例#1
0
        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.");
            }
        }
示例#2
0
 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.");
     }
 }
示例#3
0
        // 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);
        }
示例#4
0
        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.");
            }
        }
示例#5
0
        // 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);
        }
示例#6
0
        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.");
            }
        }
示例#7
0
        public string Adicionar(Maquinarios m)
        {
            MaquinariosModel mm = new MaquinariosModel();

            return(mm.Adicionar(m));
        }
示例#8
0
        // 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);
        }
示例#9
0
        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!");
                    }
                }
            }
        }