public bool InsertServico(Models.VendasOS 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", "56" ); string sqlServico = "INSERT INTO tbservicosvenda ( codvenda, codservico, codexecutante, qtservico, vlservico, unidade ) 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} )"; 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.ServicosOS) { var servico = string.Format(sqlServico, codVenda, item.codServico, item.codExecutante, this.FormatDecimal(item.qtServico), this.FormatDecimal(item.vlServico), item.unidade); command.CommandText = servico; command.ExecuteNonQuery(); } foreach (var item in venda.ParcelasVendaServicos) { 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(); } var updateOS = "UPDATE tbordemservicos set situacao = 'F' WHERE codordemservico = " + venda.codigo; command.CommandText = updateOS; 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 ActionResult VendaOS(int id) { var daoOS = new DAOOrdemServico(); var os = daoOS.GetOrdemServico(id); var listServicos = new List <Models.VendasOS.ServicosVM>(); var listProdutos = new List <Models.VendasOS.ProdutosVM>(); var model = new Models.VendasOS { Funcionario = new Select.Funcionarios.Select { id = os.Funcionario.id, text = os.Funcionario.text }, Cliente = new Select.Clientes.Select { id = os.Cliente.id, text = os.Cliente.text }, CondicaoPagamento = new Select.CondicaoPagamento.Select { id = os.CondicaoPagamento.id, text = os.CondicaoPagamento.text, desconto = os.CondicaoPagamento.desconto, multa = os.CondicaoPagamento.multa, txJuros = os.CondicaoPagamento.txJuros } }; model.codOrdemServico = id; model.codigo = id; if (os.ServicosOS != null && os.ServicosOS.Any()) { foreach (var item in os.ServicosOS) { var servico = new Models.VendasOS.ServicosVM { codServico = item.codServico, nomeServico = item.nomeServico, codExecutante = item.codExecutante, nomeExecutante = item.nomeExecutante, qtServico = item.qtServico, unidade = item.unidade, vlServico = item.vlServico }; listServicos.Add(servico); } model.ServicosOS = listServicos; } if (os.ProdutosOS != null && os.ProdutosOS.Any()) { foreach (var item in os.ProdutosOS) { var produto = new Models.VendasOS.ProdutosVM { codProduto = item.codProduto, nomeProduto = item.nomeProduto, qtProduto = item.qtProduto.GetValueOrDefault(), txDesconto = 0, unidade = item.unidade, vlTotal = item.qtProduto.GetValueOrDefault() * item.vlProduto.GetValueOrDefault(), vlVenda = item.vlProduto.GetValueOrDefault() }; listProdutos.Add(produto); } model.ProdutosVenda = listProdutos; model.CondicaoPagamentoDois = new Select.CondicaoPagamento.Select { id = os.CondicaoPagamento.id, text = os.CondicaoPagamento.text, desconto = os.CondicaoPagamento.desconto, multa = os.CondicaoPagamento.multa, txJuros = os.CondicaoPagamento.txJuros }; } return(View(model)); }