Exemplo n.º 1
0
        public List <tb_orcamento_itens> ValidarOrcamentoEstoque()
        {
            using (var dc = new manutEntities())
            {
                using (var transaction = dc.Database.BeginTransaction())
                {
                    var item = new List <tb_orcamento_itens>();

                    var autonumeroOrcamento = Convert.ToInt64(HttpContext.Current.Request.Form["autonumeroOrcamento"].ToString());
                    var margem = Convert.ToDecimal(HttpContext.Current.Request.Form["margem"].ToString());

                    var p = dc.tb_orcamento_itens.Where(a => a.autonumeroOrcamento == autonumeroOrcamento && a.cancelado != "S").ToList();

                    if (p != null)
                    {
                        foreach (var valueItem in p)
                        {
                            var quantidade                = Convert.ToDecimal(valueItem.quantidadePF);
                            var autonumeroCliente         = Convert.ToInt64(valueItem.autonumeroCliente);
                            var autonumeroPlanilhaFechada = Convert.ToInt64(valueItem.autonumeroPlanilhaFechada);


                            if (valueItem.quantidadePF > 0)
                            {
                                // Testar se Cliente tem Planilha Fechada - Dar Entrada Estoque -----------------------------------------------
                                var planilhaFechada = dc.tb_planilhafechada.FirstOrDefault(a => a.autonumero == autonumeroPlanilhaFechada);
                                if (planilhaFechada != null)
                                {
                                    var estoque = planilhaFechada.estoque - quantidade;
                                    if (estoque < 0)
                                    {
                                        valueItem.quantidade = planilhaFechada.estoque; // Passar o Estoque da Planilha para o SITE
                                        item.Add(valueItem);
                                    }
                                }
                                else
                                {
                                    item.Add(valueItem);
                                }
                            }

                            // FIM - Testar se Cliente tem Planilha Fechada - Dar Entrada Estoque -----------------------------------------------
                        }

                        var valorPF        = 0m;
                        var valorOrcamento = 0m;
                        foreach (var valueItem in p)
                        {
                            valorPF        = Convert.ToDecimal(valueItem.totalPF) + valorPF;
                            valorOrcamento = Convert.ToDecimal(valueItem.total) + valorOrcamento;
                        }

                        var dif2        = valorPF - valorOrcamento;
                        var valorMargem = valorOrcamento * (margem / 100);

                        if (dif2 < 0)
                        {
                            dif2 = dif2 * -1;
                        }

                        if (valorMargem < dif2)
                        {
                            var i = new tb_orcamento_itens();

                            i.autonumero                = 0;
                            i.autonumeroCliente         = 0;
                            i.autonumeroInsumoServico   = 0;
                            i.autonumeroOrcamento       = 0;
                            i.autonumeroPlanilhaFechada = 0;
                            i.cancelado             = "N";
                            i.codigoInsumoServico   = "";
                            i.codigoOrcamento       = null;
                            i.codigoPlanilhaFechada = "";
                            i.data            = null;
                            i.memoriaCalculo  = "";
                            i.nome            = "Diferença Entre o Valor do Orçamento e a Planilha Maior Que a Margem Permitida ";
                            i.nomeCliente     = "";
                            i.nomeFonte       = "";
                            i.nomeFontePF     = "";
                            i.nomePF          = "Diferença Entre o Valor do Orçamento e a Planilha Maior Que a Margem Permitida ";
                            i.precoUnitario   = 0;
                            i.precoUnitarioPF = 0;
                            i.quantidade      = 0;
                            i.quantidadePF    = 0;
                            i.servico         = null;
                            i.total           = 0;
                            i.totalPF         = 0;
                            i.unidade         = "";
                            i.itemPF          = 0;
                            i.unidadePF       = "";

                            item.Add(i);
                        }

                        var p1 = (from a in dc.tb_orcamento_itens
                                  where a.autonumeroOrcamento == autonumeroOrcamento && a.cancelado != "S"
                                  group a by a.autonumeroPlanilhaFechada into g
                                  select new
                        {
                            autonumeroPlanilhaFechada = g.Key,
                            quantidadePF = g.Sum(a => a.quantidadePF)
                        }
                                  ).ToList();

                        foreach (var valueItem in p1)
                        {
                            var quantidade = Convert.ToDecimal(valueItem.quantidadePF);
                            var autonumeroPlanilhaFechada = Convert.ToInt64(valueItem.autonumeroPlanilhaFechada);

                            if (valueItem.quantidadePF > 0)
                            {
                                // Testar se Cliente tem Planilha Fechada - Dar Entrada Estoque -----------------------------------------------
                                var planilhaFechada = dc.tb_planilhafechada.FirstOrDefault(a => a.autonumero == autonumeroPlanilhaFechada);
                                if (planilhaFechada != null)
                                {
                                    var estoque = planilhaFechada.estoque - quantidade;
                                    if (estoque < 0)
                                    {
                                        var i = new tb_orcamento_itens();

                                        i.autonumero                = 0;
                                        i.autonumeroCliente         = 0;
                                        i.autonumeroInsumoServico   = 0;
                                        i.autonumeroOrcamento       = 0;
                                        i.autonumeroPlanilhaFechada = 0;
                                        i.cancelado             = "N";
                                        i.codigoInsumoServico   = "";
                                        i.codigoOrcamento       = null;
                                        i.codigoPlanilhaFechada = planilhaFechada.codigo;
                                        i.data            = null;
                                        i.memoriaCalculo  = "";
                                        i.nome            = "Item com mais de uma referência CodigoPlanilha Fechada : " + planilhaFechada.codigo;
                                        i.nomeCliente     = "";
                                        i.nomeFonte       = "";
                                        i.nomeFontePF     = "";
                                        i.nomePF          = "Item com mais de uma referência CodigoPlanilha Fechada : " + planilhaFechada.codigo;
                                        i.precoUnitario   = 0;
                                        i.precoUnitarioPF = 0;
                                        i.quantidade      = planilhaFechada.estoque;
                                        i.quantidadePF    = quantidade;
                                        i.servico         = null;
                                        i.total           = 0;
                                        i.totalPF         = 0;
                                        i.unidade         = "";
                                        i.itemPF          = (int)planilhaFechada.item;
                                        i.unidadePF       = "";

                                        item.Add(i);
                                    }
                                }
                            }

                            // FIM - Testar se Cliente tem Planilha Fechada - Dar Entrada Estoque -----------------------------------------------
                        }


                        return(item);
                    }
                    else
                    {
                        throw new ArgumentException("Execption - tb_orcamento_itens = Null");
                    }
                }
            }
        }
Exemplo n.º 2
0
        public string IncluirItensOrcamento()
        {
            var c = 1;

            using (var dc = new manutEntities())
            {
                using (var transaction = dc.Database.BeginTransaction())
                {
                    try
                    {
                        var autonumeroOrcamento       = Convert.ToInt64(HttpContext.Current.Request.Form["autonumeroOrcamento"].ToString());
                        var codigoOrcamento           = HttpContext.Current.Request.Form["codigoOrcamento"].ToString();
                        var autonumeroInsumoServico   = Convert.ToInt64(HttpContext.Current.Request.Form["autonumeroInsumoServico"].ToString());
                        var codigoInsumoServico       = HttpContext.Current.Request.Form["codigoInsumoServico"].ToString();
                        var autonumeroPlanilhaFechada = Convert.ToInt64(HttpContext.Current.Request.Form["autonumeroPlanilhaFechada"].ToString());
                        var codigoPlanilhaFechada     = HttpContext.Current.Request.Form["codigoPlanilhaFechada"].ToString();
                        var nomePF = HttpContext.Current.Request.Form["nomePF"].ToString();

                        var unidade           = HttpContext.Current.Request.Form["unidade"].ToString();
                        var nome              = HttpContext.Current.Request.Form["nome"].ToString();
                        var nomeFonte         = HttpContext.Current.Request.Form["nomeFonte"].ToString();
                        var nomeFontePF       = HttpContext.Current.Request.Form["nomeFontePF"].ToString();
                        var quantidade        = Convert.ToDecimal(HttpContext.Current.Request.Form["quantidade"].ToString());
                        var precoUnitario     = Convert.ToDecimal(HttpContext.Current.Request.Form["precoUnitario"].ToString());
                        var total             = Convert.ToDecimal(HttpContext.Current.Request.Form["total"].ToString());
                        var servico           = HttpContext.Current.Request.Form["servico"].ToString();
                        var autonumeroCliente = Convert.ToInt32(HttpContext.Current.Request.Form["autonumeroCliente"].ToString());
                        var nomeCliente       = HttpContext.Current.Request.Form["nomeCliente"].ToString();
                        var memoriaCalculo    = HttpContext.Current.Request.Form["memoriaCalculo"].ToString();

                        var quantidadePF    = Convert.ToDecimal(HttpContext.Current.Request.Form["quantidadePF"].ToString());
                        var precoUnitarioPF = Convert.ToDecimal(HttpContext.Current.Request.Form["precoUnitarioPF"].ToString());
                        var totalPF         = Convert.ToDecimal(HttpContext.Current.Request.Form["totalPF"].ToString());
                        var itemPF          = Convert.ToInt32(HttpContext.Current.Request.Form["itemPF"].ToString());
                        var unidadePF       = HttpContext.Current.Request.Form["unidadePF"].ToString();

                        var dataIncluir = DateTime.Now;
                        if (HttpContext.Current.Request.Form.AllKeys.Contains("dataLimite"))
                        {
                            if (DataClienteController.IsDate(HttpContext.Current.Request.Form["dataLimite"].ToString()))
                            {
                                var dataLimite = Convert.ToDateTime(HttpContext.Current.Request.Form["dataLimite"].ToString());
                                if (dataIncluir > dataLimite)
                                {
                                    dataIncluir = dataLimite;
                                }
                            }
                        }

                        var Os = new tb_orcamento_itens
                        {
                            autonumeroOrcamento       = autonumeroOrcamento,
                            codigoOrcamento           = codigoOrcamento,
                            autonumeroInsumoServico   = autonumeroInsumoServico,
                            codigoInsumoServico       = codigoInsumoServico,
                            autonumeroPlanilhaFechada = autonumeroPlanilhaFechada,
                            unidade               = unidade,
                            nome                  = nome,
                            nomeFonte             = nomeFonte,
                            nomeFontePF           = nomeFontePF,
                            quantidade            = quantidade,
                            precoUnitario         = precoUnitario,
                            total                 = total,
                            servico               = servico,
                            codigoPlanilhaFechada = codigoPlanilhaFechada,
                            nomePF                = nomePF,
                            quantidadePF          = quantidadePF,
                            precoUnitarioPF       = precoUnitarioPF,
                            totalPF               = totalPF,

                            cancelado         = "N",
                            data              = dataIncluir,
                            autonumeroCliente = autonumeroCliente,
                            nomeCliente       = nomeCliente,

                            memoriaCalculo = memoriaCalculo,
                            itemPF         = itemPF,
                            unidadePF      = unidadePF
                        };

                        dc.tb_orcamento_itens.Add(Os);
                        dc.SaveChanges();

                        decimal totalItens = 0m;
                        var     auto       = Convert.ToInt32(Os.autonumero);

                        var p = dc.tb_orcamento_itens.Where(a => a.autonumeroOrcamento == autonumeroOrcamento && a.cancelado != "S").ToList();

                        if (p != null)
                        {
                            foreach (var value in p)
                            {
                                totalItens = Convert.ToDecimal(value.total) + totalItens;
                            }
                            var k = dc.tb_orcamento.FirstOrDefault(a => a.autonumero == autonumeroOrcamento && a.cancelado != "S");
                            if (k != null)
                            {
                                k.valor = totalItens;

                                dc.tb_orcamento.AddOrUpdate(k);
                                dc.SaveChanges();
                            }
                            else
                            {
                                throw new ArgumentException("Execption - Calcular valor itens");
                            }
                        }
                        else
                        {
                            throw new ArgumentException("Execption - tb_orcamento_itens = Null");
                        }

                        transaction.Commit();
                        return(totalItens.ToString("########0.00"));
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        return(ex.Message.ToString());
                    }
                }
            }
        }