You are on page 1of 9

Realizar pedido

Elaboramos el siguiente diseño para hacer un pedido

Arrastramos la entidad productos del origen de datos

La ventana inicial mostrara ahora la rejilla para mostrar los datos del producto.

Entrar al menú de tareas del datagridview y desactivar las operaciones de agregar, editar y eliminar filas, y quite la
columna stock.
Propiedades: AutoSizeColumnsMode el valor AllCells; a SelectionMode, el valor FullRowSelect; a MultiSelect, el valor
false para que solo se pueda seleccionar una fila cada vez; y a su propiedad Anchor, el valor Top, Left, Right.
Finalmente, oculte la barra de navegación y elimine el método productosBindingNavigatorSaveItem_Click.
Elaboramos el siguiente diseño para buscar un cliente

Arrastramos la entidad clientes del origen de datos

La ventana inicial, ahora muestra la rejilla para mostrar los datos del cliente.

Entrar al menú de tareas del datagridview y desactivar las operaciones de agregar, editar y eliminar filas, y quitar las
columnas Direccion, Telefono y Correo_e.
Propiedades: AutoSizeColumnsMode el valor Fill; a MultiSelect, el valor false; y a su propiedad Anchor, el valor Top,
Left, Right.
Ahora queda escribir el código del controlador del botón Buscar de la ventana Buscar Cliente.

Mostrar el DataSet dsCliente en el diseñador


Se aprecia en el diseñador que el dsCliente tiene nuevos métodos FillBy1, GetDataBy1 (@cadena)

Ahora en el botón Buscar de la ventana Buscar Cliente programaremos lo siguiente.


private void button1_Click(object sender, EventArgs e)
{
clientesTableAdapter.FillBy1(dsCliente.clientes, textBox1.Text + "%");
}

Luego en el botón … de la ventana Hacer Pedido programaremos lo siguiente.


private void button1_Click(object sender, EventArgs e)
{
BuscarCliente formBuscar = new BuscarCliente();
formBuscar.ShowDialog();
}

En el botón Aceptar de la ventana Buscar Cliente programaremos lo siguiente.


private void button2_Click(object sender, EventArgs e)
{
codigoCliente = dsCliente.clientes[clientesBindingSource.Position].Cliente;
Close();
}

Agregamos al boton … de la ventana Hacer Pedido agregamos la siguiente linea de codigo.


private void button1_Click(object sender, EventArgs e)
{
BuscarCliente formBuscar = new BuscarCliente();
formBuscar.ShowDialog();
textBox1.Text = formBuscar.codigoCliente;
}

Ahora en el botón Aceptar de la ventana Hacer Pedido programamos lo siguiente.


private void button2_Click(object sender, EventArgs e)
{
// Si no se introdujo el código de cliente, solicitarlo
if (textBox1.Text.Length == 0) button1.PerformClick();
if (textBox1.Text.Length == 0) return;
// Realizar pedido si hay stock
if (Convert.ToInt32(textBox2.Text) <= dsProducto.productos[productosBindingSource.Position].Stock)
{
dsProducto.productosRow producto = dsProducto.productos[productosBindingSource.Position];
LogicaNegocio.RealizarPedido(textBox1.Text, producto, Convert.ToInt32(textBox2.Text));
dsProducto.productos[productosBindingSource.Position].Stock -= Convert.ToInt32(textBox2.Text);
productosTableAdapter.Update(dsProducto.productos);
Close();
}
else
MessageBox.Show("La cantidad supera el stock");
}

Por ultimo implementamos la clase lógica LogicaNegocio.


class LogicaNegocio
{
public static void RealizarPedido(string cliente, dsProducto.productosRow producto, int cantidad)
{
dsPedidoTableAdapters.pedidosTableAdapter adaptador = new
dsPedidoTableAdapters.pedidosTableAdapter();
dsPedido datos = new dsPedido();
adaptador.Fill(datos.pedidos);
// Añadir el pedido a la tabla pedidos desde "datos"
int pedido = datos.pedidos.Count;
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);
}
}

You might also like