protected void btnGuardar_Click(object sender, EventArgs e) { PresupuestoEntidad presupuesto = new PresupuestoEntidad(); List<DetallePresupuestoEntidad> listaDetalle = new List<DetallePresupuestoEntidad>(); List<MatrizEntidad> listaMatrices = (List<MatrizEntidad>)Session["carritoPresupuesto"]; decimal total = (decimal)Session["totalPresupuesto"]; presupuesto.cliente = int.Parse(ddlClientes.SelectedValue); presupuesto.numero = int.Parse(txtnumeroPresupuesto.Text); presupuesto.fecha = DateTime.Parse(txtFechaPresupuesto.Text); presupuesto.fechaEntrega = DateTime.Parse(FechaEntrega.Text); presupuesto.periodoVigencia = DateTime.Parse(FechaVencimiento.Text); presupuesto.total = total; foreach (var matriz in listaMatrices) { DetallePresupuestoEntidad detalle = new DetallePresupuestoEntidad(); string nombreMatriz = matriz.nombreArchivo; detalle.idMatriz = MatrizGestor.buscarIdMatriz(nombreMatriz); detalle.cantidad = matriz.cantidad; detalle.precio = matriz.precio; detalle.subtotal = matriz.subTotal; listaDetalle.Add(detalle); } PresupuestoGestor.guardarPresupuesto(presupuesto, listaDetalle); resetearTodo(); }
public static void guardarPresupuesto(PresupuestoEntidad presupuesto, List<DetallePresupuestoEntidad> lista) { SqlConnection connection = new SqlConnection(); SqlCommand command = new SqlCommand(); SqlTransaction transaction = null; int idPresupuesto = 0; try { connection.ConnectionString = cadenaConeccion; connection.Open(); transaction = connection.BeginTransaction(); command.Transaction = transaction; connection.ConnectionString = cadenaConeccion; connection.Open(); transaction = connection.BeginTransaction(); string sql = "insert into Presupuesto (numero, idCliente, fecha, periodoVigencia, fechaEntrega, total) values (@numeroPresupuesto,@idCliente,@fecha, @periodoVigencia, @fechaEntrega, @total)"; command.Connection = connection; command.CommandText = sql; command.Parameters.AddWithValue("@numeroFactura", presupuesto.numero); command.Parameters.AddWithValue("@idCliente", presupuesto.cliente); command.Parameters.AddWithValue("@fecha", presupuesto.fecha); command.Parameters.AddWithValue("@periodoVigencia", presupuesto.periodoVigencia); command.Parameters.AddWithValue("@fechaEntrega", presupuesto.fechaEntrega); command.Parameters.AddWithValue("@total", presupuesto.total); command.ExecuteNonQuery(); command.Parameters.Clear(); sql = "SELECT @@IDENTITY as 'id'"; command.CommandText = sql; SqlDataReader dr = command.ExecuteReader(); while (dr.Read()) { idPresupuesto = int.Parse(dr["id"].ToString()); } dr.Close(); sql = "insert into DetallePresupuesto (numeroPresupuesto, idMatriz, cantidad, precio, subTotal) values (@numeroPresupuesto, @idMatriz, @cantidad, @precio, @subTotal)"; command.CommandText = sql; foreach (var detalle in lista) { command.Parameters.AddWithValue("@numeroPresupuestoura", detalle.numeroPresupuesto); command.Parameters.AddWithValue("@idMatriz", detalle.idMatriz); command.Parameters.AddWithValue("@cantidad", detalle.cantidad); command.Parameters.AddWithValue("@precio", detalle.precio); command.Parameters.AddWithValue("@subTotal", detalle.subtotal); command.ExecuteNonQuery(); command.Parameters.Clear(); } transaction.Commit(); } catch (SqlException ex) { transaction.Rollback(); } finally { if (connection.State == ConnectionState.Open) { connection.Close(); } } }