private void btAceptar_Click(object sender, EventArgs e) { try { // Si no se introdujo el código de cliente. solicitarlo if (ctCliente.Text.Length == 0) { btBuscar.PerformClick(); } // Realizar pedido si hay stock if (Convert.ToInt32(ctCantidad.Text) <= dsProductos.productos[productosBindingSource.Position].Stock) { TransactionScope tr = new TransactionScope(); using (tr) { dsProductos.productosRow producto = dsProductos.productos[productosBindingSource.Position]; LogicaNegocio.RealizarPedido(ctCliente.Text, producto, Convert.ToInt32(ctCantidad.Text)); dsProductos.productos[productosBindingSource.Position].Stock -= Convert.ToInt32(ctCantidad.Text); productosTableAdapter.Update(dsProductos.productos); tr.Complete(); } Close(); } else { MessageBox.Show("La cantidad supera el stock"); } } catch (SystemException ex) { MessageBox.Show(ex.Message); } }
public static void RealizarPedido(string cliente, dsProductos.productosRow producto, int cantidad) { // Agregar un pedido dsPedidosTableAdapters.pedidosTableAdapter adaptador = new dsPedidosTableAdapters.pedidosTableAdapter(); dsPedidos datos = new dsPedidos(); adaptador.Fill(datos.pedidos); // Añadir el pedido a la tabla pedidos desde "datos" int pedido = datos.pedidos.Count + 1; string clave = producto.Clave; float coste = producto.PVP * cantidad; DateTime fecha = DateTime.Now; bool servido = false; datos.pedidos.AddpedidosRow(pedido, cliente, clave, cantidad, coste, fecha, servido); // Actualizar la base de datos desde "datos" adaptador.Update(datos); }