public EstruturaVenda DeleteProduto(int idVenda, int idProduto)
        {
            EstruturaVenda estruturaVenda = new EstruturaVenda();

            try
            {
                if (idVenda == 0)
                {
                    //Retornar produto que contenha o id especificado

                    throw new Exception("Venda selecionado não existe");
                }

                string ListaVendasSession = HttpContext.Session.GetString("Vendas");
                if (string.IsNullOrEmpty(ListaVendasSession))
                {
                    throw new Exception("Não há vendas Registradas");
                }
                else
                {
                    estruturaVenda.Vendas = JsonConvert.DeserializeObject <List <Models.Vendas> >(ListaVendasSession);
                }

                Models.Vendas venda = estruturaVenda.Vendas.Where(x => x.idVenda == idVenda).SingleOrDefault();

                Models.Produto produtoRemovido = venda.produtos.Where(x => x.idProduct == idProduto).SingleOrDefault();

                if (venda == null)
                {
                    throw new Exception("venda selecionada não existe");
                }

                if (produtoRemovido == null)
                {
                    throw new Exception("produto selecionado não existe");
                }

                venda.valorTotal = venda.valorTotal - produtoRemovido.price * produtoRemovido.quantidade;

                venda.produtos.Remove(produtoRemovido);

                string listaVendas = JsonConvert.SerializeObject(estruturaVenda.Vendas);

                HttpContext.Session.SetString("Vendas", listaVendas);

                return(estruturaVenda);
            }
            catch (Exception ex)
            {
                estruturaVenda.isError       = true;
                estruturaVenda.descricaoErro = ex.Message;

                return(estruturaVenda);
            }
        }
示例#2
0
        public bool InsertProduto(Models.Vendas venda)
        {
            try
            {
                var sql = string.Format("INSERT INTO tbvendas ( situacao, dtvenda, codvendedor, codcliente, codcondicao, codordemservico, modelo) VALUES ( '{0}', {1}, {2}, {3}, {4}, {5}, '{6}' ); SELECT SCOPE_IDENTITY()",
                                        "N",
                                        this.FormatDateTime(DateTime.Now),
                                        venda.Funcionario.id,
                                        venda.Cliente.id,
                                        venda.CondicaoPagamento.id,
                                        venda.codOrdemServico != null ? venda.codOrdemServico.ToString() : "null",
                                        venda.modelo
                                        );
                string sqlProduto        = "INSERT INTO tbprodutosvenda ( codvenda, codproduto, unidade, qtproduto, vlproduto, txdesconto ) VALUES ( {0}, {1}, '{2}', {3}, {4}, {5} )";
                string sqlParcela        = "INSERT INTO tbcontasreceber ( codvenda, codforma, nrparcela, vlparcela, dtvencimento, situacao, codcliente, juros, multa, desconto ) VALUES ({0}, {1}, {2}, {3}, {4}, '{5}', {6}, {7}, {8}, {9} )";
                string sqlProdutoEstoque = "UPDATE tbprodutos set qtestoque -= {0} WHERE tbprodutos.codproduto = {1}";
                using (con)
                {
                    OpenConnection();

                    SqlTransaction sqlTrans = con.BeginTransaction();
                    SqlCommand     command  = con.CreateCommand();
                    command.Transaction = sqlTrans;
                    try
                    {
                        command.CommandText = sql;
                        var codVenda = Convert.ToInt32(command.ExecuteScalar());

                        foreach (var item in venda.ProdutosVenda)
                        {
                            var produto = string.Format(sqlProduto, codVenda, item.codProduto, this.FormatString(item.unidade), this.FormatDecimal(item.qtProduto), this.FormatDecimal(item.vlVenda), this.FormatDecimal(item.txDesconto));
                            command.CommandText = produto;
                            command.ExecuteNonQuery();

                            //VERIFICAR SE EXISTE A QUANTIDADE DO ITEM EM ESTOQUE ANTES DE VENDER

                            var prodEstoque = string.Format(sqlProdutoEstoque, this.FormatDecimal(item.qtProduto), item.codProduto);
                            command.CommandText = prodEstoque;
                            command.ExecuteNonQuery();
                        }
                        foreach (var item in venda.ParcelasVenda)
                        {
                            var parcela = string.Format(sqlParcela, codVenda, item.idFormaPagamento, item.nrParcela, this.FormatDecimal(item.vlParcela), this.FormatDate(item.dtVencimento), "P", venda.Cliente.id, this.FormatDecimal(venda.CondicaoPagamento.txJuros), this.FormatDecimal(venda.CondicaoPagamento.multa), this.FormatDecimal(venda.CondicaoPagamento.desconto));
                            command.CommandText = parcela;
                            command.ExecuteNonQuery();
                        }
                        sqlTrans.Commit();
                    }
                    catch (Exception ex)
                    {
                        sqlTrans.Rollback();
                        throw new Exception(ex.Message);
                    }
                    finally
                    {
                        con.Close();
                    }
                }
                return(true);
            }
            catch (Exception error)
            {
                throw new Exception(error.Message);
            }
            finally
            {
                CloseConnection();
            }
        }
示例#3
0
        public Vendas GetVenda(int codVenda, string modelo)
        {
            try
            {
                var model = new Models.Vendas();
                OpenConnection();
                var sql          = this.Search(codVenda, null, modelo);
                var sqlProdutos  = this.SearchProdutos(codVenda);
                var sqlServicos  = this.SearchServicos(codVenda);
                var sqlParcelas  = this.SearchParcelas(codVenda);
                var listProdutos = new List <Vendas.ProdutosVM>();
                var listServicos = new List <Vendas.ServicosVM>();
                var listParcelas = new List <Shared.ParcelasVM>();

                if (modelo == "65")
                {
                    SqlQuery = new SqlCommand(sql + sqlProdutos + sqlParcelas, con);
                }
                if (modelo == "56")
                {
                    SqlQuery = new SqlCommand(sql + sqlServicos + sqlParcelas, con);
                }

                //SqlQuery = new SqlCommand(sql + sqlProdutos + sqlServicos + sqlParcelas, con);
                reader = SqlQuery.ExecuteReader();
                while (reader.Read())
                {
                    model.codigo            = Convert.ToInt32(reader["Venda_ID"]);
                    model.situacao          = Convert.ToString(reader["Venda_Situacao"]);
                    model.dtVenda           = Convert.ToDateTime(reader["Venda_Data"]);
                    model.CondicaoPagamento = new Select.CondicaoPagamento.Select
                    {
                        id   = Convert.ToInt32(reader["CondicaoPagamento_ID"]),
                        text = Convert.ToString(reader["CondicaoPagamento_Nome"])
                    };
                    model.Cliente = new Select.Clientes.Select
                    {
                        id   = Convert.ToInt32(reader["Cliente_ID"]),
                        text = Convert.ToString(reader["Cliente_Nome"])
                    };
                    model.Funcionario = new Select.Funcionarios.Select
                    {
                        id   = Convert.ToInt32(reader["Vendedor_ID"]),
                        text = Convert.ToString(reader["Vendedor_Nome"])
                    };
                    model.modelo = Convert.ToString(reader["Venda_Modelo"]);
                }
                ;
                if (model.modelo == "65")
                {
                    if (reader.NextResult())
                    {
                        while (reader.Read())
                        {
                            var produto = new Vendas.ProdutosVM
                            {
                                codProduto  = Convert.ToInt32(reader["Produto_ID"]),
                                nomeProduto = Convert.ToString(reader["Produto_Nome"]),
                                unidade     = Convert.ToString(reader["Produto_Unidade"]),
                                qtProduto   = Convert.ToDecimal(reader["Produto_Quantidade"]),
                                vlVenda     = Convert.ToDecimal(reader["Produto_Valor"]),
                                txDesconto  = Convert.ToDecimal(reader["Produto_TaxaDesconto"])
                            };
                            if (produto.txDesconto != null && produto.txDesconto != 0)
                            {
                                decimal txDesc;
                                txDesc          = (produto.vlVenda * produto.txDesconto.GetValueOrDefault()) / 100;
                                produto.vlVenda = produto.vlVenda - txDesc;
                            }
                            produto.vlTotal = produto.vlVenda * produto.qtProduto;
                            listProdutos.Add(produto);
                        }
                    }
                }
                else
                {
                    if (reader.NextResult())
                    {
                        while (reader.Read())
                        {
                            var servico = new Vendas.ServicosVM
                            {
                                codExecutante  = Convert.ToInt16(reader["Executente_ID"]),
                                nomeExecutante = Convert.ToString(reader["Executante_Nome"]),
                                codServico     = Convert.ToInt32(reader["Servico_ID"]),
                                nomeServico    = Convert.ToString(reader["Servico_Nome"]),
                                qtServico      = Convert.ToDecimal(reader["Servico_Quantidade"]),
                                unidade        = Convert.ToString(reader["Servico_Unidade"]),
                                vlServico      = Convert.ToDecimal(reader["Servico_Valor"])
                            };
                            servico.total = servico.qtServico * servico.vlServico;
                            listServicos.Add(servico);
                        }
                    }
                }
                if (reader.NextResult())
                {
                    while (reader.Read())
                    {
                        var parcela = new Shared.ParcelasVM
                        {
                            idFormaPagamento = Convert.ToInt32(reader["FormaPagamento_ID"]),
                            nmFormaPagamento = Convert.ToString(reader["FormaPagamento_Nome"]),
                            nrParcela        = Convert.ToDouble(reader["ContaReceber_NrParcela"]),
                            vlParcela        = Convert.ToDecimal(reader["ContaReceber_Valor"]),
                            dtVencimento     = Convert.ToDateTime(reader["ContaReceber_DataVencimento"]),
                            situacao         = Util.FormatFlag.Situacao(Convert.ToString(reader["ContaReceber_Situacao"])),
                        };
                        listParcelas.Add(parcela);
                    }
                }
                model.ProdutosVenda = listProdutos;
                model.ServicosVenda = listServicos;
                model.ParcelasVenda = listParcelas;
                return(model);
            }
            catch (Exception error)
            {
                throw new Exception(error.Message);
            }
            finally
            {
                CloseConnection();
            }
        }
示例#4
0
        public ActionResult VendaOS(int id, Sistema.Models.VendasOS model)
        {
            model.codigo          = id;
            model.codOrdemServico = id;
            if (model.Funcionario.id == null)
            {
                ModelState.AddModelError("Funcionario.id", "Informe o vendedor");
            }
            if (model.Cliente.id == null)
            {
                ModelState.AddModelError("Cliente.id", "Informe o cliente");
            }
            if (model.ProdutosVenda != null && model.ProdutosVenda.Any() && model.CondicaoPagamentoDois.id != null && (model.ParcelasVendaProdutos == null || !model.ParcelasVendaProdutos.Any()))
            {
                ModelState.AddModelError("CondicaoPagamentoDois.id", "Informe as parcelas dos produtos");
            }
            if (ModelState.IsValid)
            {
                try
                {
                    var DAOVendas        = new DAOVendas();
                    var produtosVenda    = new List <Models.Vendas.ProdutosVM>();
                    var parcelasProdutos = new List <Models.Shared.ParcelasVM>();

                    //VENDA SERVIÇO
                    DAOVendas.InsertServico(model);

                    //VENDA PRODUTO
                    if (model.ProdutosVenda != null && model.ProdutosVenda.Any())
                    {
                        var vendaProduto = new Models.Vendas
                        {
                            Funcionario = new Select.Funcionarios.Select
                            {
                                id            = model.Funcionario.id,
                                nmFuncionario = model.Funcionario.text,
                            },
                            Cliente = new Select.Clientes.Select
                            {
                                id   = model.Cliente.id,
                                text = model.Cliente.text,
                            },
                            CondicaoPagamento = new Select.CondicaoPagamento.Select
                            {
                                id       = model.CondicaoPagamentoDois.id,
                                text     = model.CondicaoPagamentoDois.text,
                                desconto = model.CondicaoPagamentoDois.desconto,
                                multa    = model.CondicaoPagamentoDois.multa,
                                txJuros  = model.CondicaoPagamentoDois.txJuros
                            },
                            modelo          = "65",
                            codOrdemServico = model.codOrdemServico,
                        };
                        foreach (var item in model.ProdutosVenda)
                        {
                            var prod = new Models.Vendas.ProdutosVM
                            {
                                codProduto  = item.codProduto,
                                nomeProduto = item.nomeProduto,
                                qtProduto   = item.qtProduto,
                                txDesconto  = item.txDesconto,
                                unidade     = item.unidade,
                                vlVenda     = item.vlVenda,
                            };
                            produtosVenda.Add(prod);
                        }
                        vendaProduto.ProdutosVenda = produtosVenda;
                        foreach (var item in model.ParcelasVendaProdutos)
                        {
                            var par = new Models.Shared.ParcelasVM
                            {
                                idFormaPagamento = item.idFormaPagamento,
                                nmFormaPagamento = item.nmFormaPagamento,
                                nrParcela        = item.nrParcela,
                                vlParcela        = item.vlParcela,
                                dtPagamento      = item.dtPagamento,
                                dtVencimento     = item.dtVencimento,
                                situacao         = item.situacao,
                            };
                            parcelasProdutos.Add(par);
                        }
                        vendaProduto.ParcelasVenda = parcelasProdutos;

                        DAOVendas.InsertProduto(vendaProduto);
                    }
                    this.AddFlashMessage("Ordem de Serviço finalizada com sucesso");
                    return(RedirectToAction("Index", "OrdemServico"));
                }
                catch (Exception ex)
                {
                    this.AddFlashMessage(ex.Message, FlashMessage.ERROR);
                    return(View(model));
                }
            }
            else
            {
                return(View(model));
            }
        }
        public EstruturaVenda InserirProduto([FromBody] EstruturaEntradaCriarVenda entrada, int idVenda)
        {
            EstruturaVenda estruturaVenda = new EstruturaVenda();

            try
            {
                BaseVendas baseProdutos = new BaseVendas();

                if (entrada == null)
                {
                    throw new Exception("o produto a ser inserido não pode ser nulo");
                }


                if (idVenda == 0)
                {
                    throw new Exception("Favor selecionar uma venda!");
                }

                string ListaVendasSession = HttpContext.Session.GetString("Vendas");
                if (string.IsNullOrEmpty(ListaVendasSession))
                {
                    throw new Exception("Não há vendas Registradas");
                }
                else
                {
                    estruturaVenda.Vendas = JsonConvert.DeserializeObject <List <Models.Vendas> >(ListaVendasSession);
                }

                Models.Vendas VendaAlterada = estruturaVenda.Vendas.Where(x => x.idVenda == idVenda).SingleOrDefault();

                if (VendaAlterada == null)
                {
                    throw new Exception("A venda selecionada não existe");
                }

                foreach (var item in entrada.EntradaCriarVenda)
                {
                    EstruturaProduto estruturaProduto = APIListarProdutoPorID(item.idProduto);

                    Models.Produto produto = new Models.Produto();

                    produto.idProduct   = item.idProduto;
                    produto.productName = estruturaProduto.Produtos[0].productName;
                    produto.description = estruturaProduto.Produtos[0].description;
                    produto.cathegory   = estruturaProduto.Produtos[0].cathegory;
                    produto.price       = estruturaProduto.Produtos[0].price;
                    produto.quantidade  = item.quantidadeProdutos;

                    VendaAlterada.produtos.Add(produto);

                    VendaAlterada.valorTotal = VendaAlterada.valorTotal + estruturaProduto.Produtos[0].price * item.quantidadeProdutos;
                }

                string listaVendas = JsonConvert.SerializeObject(estruturaVenda.Vendas);

                HttpContext.Session.SetString("Vendas", listaVendas);

                return(estruturaVenda);
            }
            catch (Exception ex)
            {
                estruturaVenda.isError       = true;
                estruturaVenda.descricaoErro = ex.Message;

                return(estruturaVenda);
            }
        }
        public EstruturaVenda Post(EstruturaEntradaCriarVenda entrada)
        {
            EstruturaVenda estruturaVenda = new EstruturaVenda();

            string ListaVendasSession = HttpContext.Session.GetString("Vendas");

            if (!string.IsNullOrEmpty(ListaVendasSession))
            {
                estruturaVenda.Vendas = JsonConvert.DeserializeObject <List <Models.Vendas> >(ListaVendasSession);
            }

            List <Models.Vendas> listVendas = new List <Models.Vendas>();

            try
            {
                if (entrada == null)
                {
                    //Erro
                    throw new Exception("A venda a ser criada não pode ser nula");
                }
                //Realizar outras validações

                Models.Vendas venda = new Models.Vendas();
                venda.produtos = new List <Models.Produto>();

                foreach (var item in entrada.EntradaCriarVenda)
                {
                    EstruturaProduto estruturaProduto = APIListarProdutoPorID(item.idProduto);

                    Models.Produto produto = new Models.Produto();

                    produto.idProduct   = item.idProduto;
                    produto.productName = estruturaProduto.Produtos[0].productName;
                    produto.description = estruturaProduto.Produtos[0].description;
                    produto.cathegory   = estruturaProduto.Produtos[0].cathegory;
                    produto.price       = estruturaProduto.Produtos[0].price;
                    produto.quantidade  = item.quantidadeProdutos;

                    venda.produtos.Add(produto);

                    venda.valorTotal = venda.valorTotal + estruturaProduto.Produtos[0].price * item.quantidadeProdutos;

                    if (!string.IsNullOrEmpty(ListaVendasSession))
                    {
                        List <Models.Vendas> Vendas = JsonConvert.DeserializeObject <List <Models.Vendas> >(ListaVendasSession);

                        venda.idVenda = 0;

                        foreach (var sale in Vendas)
                        {
                            if (sale.idVenda > venda.idVenda)
                            {
                                venda.idVenda = sale.idVenda;
                            }
                        }

                        venda.idVenda++;
                    }
                    else
                    {
                        venda.idVenda = 1;
                    }
                }

                estruturaVenda.Vendas.Add(venda);

                string listaVendas = JsonConvert.SerializeObject(estruturaVenda.Vendas);

                HttpContext.Session.SetString("Vendas", listaVendas);

                return(estruturaVenda);
            }
            catch (Exception ex)
            {
                estruturaVenda.isError       = true;
                estruturaVenda.descricaoErro = ex.Message;

                return(estruturaVenda);
            }
        }