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); } }
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(); } }
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(); } }
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); } }