Productos

Para realizar la parte de agregar productos a nuestro punto de venta las caracteristicas que va a tener son las siguientes:
Para iniciar esta parte de productos en nuestro formulario frmMenu o archivo Form2.cs agregamos un botón que se nombre btnProductos y en texto escribimos Productos
punto de venta
Antes comenzar a codificar agregamos otro Windows Forms y los nombramos AgregarProducto.cs a nuestro formulario lo nombramos frmAgregarProducto y en el texto escribimos Agregar Producto
punto de venta
Nos vamos al formulario del menú y hacemos doble clic en el botón de Productos y el método que se genera escribimos el siguiente código:
 
         private void BtnProductos_Click(object sender, EventArgs e)
        {
            this.Hide();
            frmAgregarProducto agregarProducto = new frmAgregarProducto();
            agregarProducto.Show();

        }
         

Quedando el archivo Menu.cs de manera parcial de la siguiente forma:
 
namespace GatoAbarrotero
{
    public partial class frmMenu : Form
    {
        public frmMenu()
        {
            InitializeComponent();
        }

        private void BtnProductos_Click(object sender, EventArgs e)
        {
            this.Hide();
            frmAgregarProducto agregarProducto = new frmAgregarProducto();
            agregarProducto.Show();

        }
    }
}
         
         
         
         

Agregar Producto

Nos posicionamos en el formulario de Agregar ProductoNos vamos al Cuadro de Herramientas y en donde dice Menú y barras de heramientas seleccionamos MenuStrip
punto de venta
Una vez selecionado nuestro MenuStrip en el encabezado nombramos Opciones y las opciones que se le agregaran después del encabezado:
punto de venta
Agregamos un Label y en el texto ponemos Agregar Producto
punto de venta
Integramos 3 Label y en el texto escribimos lo siguiente:
  1. Código de Barras
  2. Nombre del Producto
  3. Precio
punto de venta
De lado derecho agegamos TextBox para cada opción y lo nombramos:
  1. txtCodigoBarras
  2. txtNombreProducto
  3. txtPrecio
punto de venta
Lo que sigue es agregar un Button y lo nombramos btnGuardarProducto y en texto escribimos Guardar Producto
punto de venta
Hacemos doble clic en btnGaurdarProducto y en el archivo AgregarProducto.cs escribmos el siguiente código:
 
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace GatoAbarrotero
{
    public partial class frmAgregarProducto : Form
    {
        MySqlConnection conexion = new MySqlConnection("server=localhost;User id=admin;password=adminlara;database=puntodeventadb");
        public frmAgregarProducto()
        {
            InitializeComponent();
        }

        private void BtnGuardarProducto_Click(object sender, EventArgs e)
        {
            try
            {
                conexion.Open();
                string insertarQuery = "INSERT INTO producto (idProducto,codigoBarras,nombre,precio) VALUES(null,?codigoBarras,?nombre,?precio)";
                MySqlCommand cmd = new MySqlCommand(insertarQuery, conexion);
                cmd.Parameters.Add("?codigoBarras", MySqlDbType.VarChar, 60).Value = txtCodigoBarras.Text;
                cmd.Parameters.Add("?nombre", MySqlDbType.VarChar, 60).Value = txtNombreProducto.Text;
                cmd.Parameters.Add("?precio", MySqlDbType.Decimal, 60).Value = txtPrecio.Text;
                cmd.ExecuteNonQuery();
                MessageBox.Show("Registro Exitoso");
                txtCodigoBarras.Text = " ";
                txtNombreProducto.Text = " ";
                txtPrecio.Text = " ";
                conexion.Close();
            }
            catch
            {

                MessageBox.Show("Inserción fallida");
            }

        }
    }
}
      
     

No olvidar que este archivo queda de manera parcial falta darle funcionalidad al ménu. Corremos nuestro ejemplo:
punto de venta
Agregamos un producto
punto de venta
Le damos en Guardar Producto
punto de venta
Presionamos aceptar
punto de venta
Nota: Les dejo de tarea las validaciones para no realizar registros en blanco.

Buscar Productos

Para iniciar con esta opción agregamos otro Windows Forms y lo nombamos BuscarProducto.cs al formulario lo nombramos frmVerProducto.
Nos vamos al formulario AgregarProducto y el menú hacemos doble clic en BuscarProducto y ahí escribimos el siguiente código.
 
         
          private void BuscarProductoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmVerProducto verProducto = new frmVerProducto();
            verProducto.Show();
        }
        
        
         

El archivo AgregarProducto.csNos queda de manera temporal de la siguiente forma:
  
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace GatoAbarrotero
{
    public partial class frmAgregarProducto : Form
    {
        MySqlConnection conexion = new MySqlConnection("server=localhost;User id=admin;password=adminlara;database=puntodeventadb");
        public frmAgregarProducto()
        {
            InitializeComponent();
        }

        private void BtnGuardarProducto_Click(object sender, EventArgs e)
        {
            try
            {
                conexion.Open();
                string insertarQuery = "INSERT INTO producto (idProducto,codigoBarras,nombre,precio) VALUES(null,?codigoBarras,?nombre,?precio)";
                MySqlCommand cmd = new MySqlCommand(insertarQuery, conexion);
                cmd.Parameters.Add("?codigoBarras", MySqlDbType.VarChar, 60).Value = txtCodigoBarras.Text;
                cmd.Parameters.Add("?nombre", MySqlDbType.VarChar, 60).Value = txtNombreProducto.Text;
                cmd.Parameters.Add("?precio", MySqlDbType.Decimal, 60).Value = txtPrecio.Text;
                cmd.ExecuteNonQuery();
                MessageBox.Show("Registro Exitoso");
                txtCodigoBarras.Text = " ";
                txtNombreProducto.Text = " ";
                txtPrecio.Text = " ";
                conexion.Close();
            }
            catch
            {

                MessageBox.Show("Inserción fallida");
            }

        }

        private void BuscarProductoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmVerProducto verProducto = new frmVerProducto();
            verProducto.Show();
        }
    }
}
         
         

Ahora volvamos al formulario BuscarProducto comenzemos por agregar un Label en el texto vamos a escribir Buscar Productos
punto de venta
Agregamos otro Label en el texto escribimos Nombre Producto
punto de venta
A lado derecho de Nombre Producto agregamos un TextBox y lo nombramos txtNombreProducto
punto de venta
En la parte de abajo agregamos un Button y lo nombramos btnBuscarProducto y en el texto escribimos Buscar Producto
punto de venta
Ahora nos vamos al Cuadro de herramientas y en Datos seleccionamos DataGridView
punto de venta
Lo dibujamos y deseleccionamos las opciones de: y lo nombramos dtgvProductos
punto de venta
Hacemos doble clic en el botón de Buscar Producto y escribimos el siguien código:
        
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace GatoAbarrotero
{

   
    public partial class frmVerProducto : Form
    {
        MySqlConnection conexion = new MySqlConnection("server=localhost;User id=admin;password=adminlara;database=puntodeventadb");
        public frmVerProducto()
        {
            InitializeComponent();
        }

        private void BtnBuscarProducto_Click(object sender, EventArgs e)
        {
            try
            {
                conexion.Open();
                string selectQuery = "SELECT * FROM producto WHERE nombre LIKE '%" + txtNombreProducto.Text + "%' ";
                MySqlCommand cmd = new MySqlCommand(selectQuery, conexion);
                MySqlDataAdapter selecionnar = new MySqlDataAdapter();
                selecionnar.SelectCommand = cmd;
                DataTable datosProducto = new DataTable();
                selecionnar.Fill(datosProducto);
                dtgvProductos.DataSource = datosProducto;
                conexion.Close();






            }
            catch
            {
                MessageBox.Show("Error al conectar");
            }
        }

    }
    }
        
        
 

Probamos:
punto de venta
Buscamos sin meter ningun texto en el textlabel, vemos que aparecen todos los productos aqui queda al criterio del programador en poner una validación para el texto en blanco porque da la casualidad que pasa si tienes mil productos o más.
punto de venta
Ahora buscamos como sidral
punto de venta

Eliminar Producto

Comenzamos agregando un Windows Forms y lo nombramos EliminarProducto.cs y al formulario lo nombramos frmEliminarProducto.Nos vamos al formulario AgregarProducto y el menú hacemos doble clic en EliminarProducto y ahí escribimos el siguiente código.
 
      private void EliminarProductoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Hide();
            frmEliminarProducto eliminarProdcuto = new frmEliminarProducto();
            eliminarProdcuto.Show();
        }   
    
    
    

El archivo AgregarProducto.csNos queda de manera temporal de la siguiente forma:
  
     using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace GatoAbarrotero
{
    public partial class frmAgregarProducto : Form
    {
        MySqlConnection conexion = new MySqlConnection("server=localhost;User id=admin;password=adminlara;database=puntodeventadb");
        public frmAgregarProducto()
        {
            InitializeComponent();
        }

        private void BtnGuardarProducto_Click(object sender, EventArgs e)
        {
            try
            {
                conexion.Open();
                string insertarQuery = "INSERT INTO producto (idProducto,codigoBarras,nombre,precio) VALUES(null,?codigoBarras,?nombre,?precio)";
                MySqlCommand cmd = new MySqlCommand(insertarQuery, conexion);
                cmd.Parameters.Add("?codigoBarras", MySqlDbType.VarChar, 60).Value = txtCodigoBarras.Text;
                cmd.Parameters.Add("?nombre", MySqlDbType.VarChar, 60).Value = txtNombreProducto.Text;
                cmd.Parameters.Add("?precio", MySqlDbType.Decimal, 60).Value = txtPrecio.Text;
                cmd.ExecuteNonQuery();
                MessageBox.Show("Registro Exitoso");
                txtCodigoBarras.Text = " ";
                txtNombreProducto.Text = " ";
                txtPrecio.Text = " ";
                conexion.Close();
            }
            catch
            {

                MessageBox.Show("Inserción fallida");
            }

        }

        private void BuscarProductoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmVerProducto verProducto = new frmVerProducto();
            verProducto.Show();
        }

        private void EliminarProductoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Hide();
            frmEliminarProducto eliminarProdcuto = new frmEliminarProducto();
            eliminarProdcuto.Show();
        }
    }
}
         
    

Ahora comezemos por el formulario EliminarProducto Escribimos un Label y en el texto escribmos Eliminar Productos
punto de venta
Agregamos otro Label en el texto escribimos Nombre Producto
punto de venta
A lado derecho de Nombre Producto agregamos un TextBox y lo nombramos txtNombreProducto
punto de venta
En la parte de abajo agregamos un Button y lo nombramos btnBuscarProducto y en el texto escribimos Buscar Producto
punto de venta
Agregamos otro Button y lo nombramos btnEliminarProducto y en el texto escribmos Eliminar Producto
punto de venta
Ahora nos vamos al Cuadro de herramientas y en Datos seleccionamos DataGridView
punto de venta
Lo dibujamos y deseleccionamos las opciones de: y lo nombramos dtgvProductos
punto de venta
Nos vamos al Cuadro de Herramientas y en donde dice Menú y barras de heramientas seleccionamos MenuStrip
punto de venta
Una vez selecionado nuestro MenuStrip en el encabezado nombramos Opciones y las opciones que se le agregaran después del encabezado:
punto de venta
Hacemos doble clic en el botón de Buscar Producto y escribimos el siguien código:
  using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace GatoAbarrotero
{
    public partial class frmEliminarProducto : Form
    {
        MySqlConnection conexion = new MySqlConnection("server=localhost;User id=admin;password=adminlara;database=puntodeventadb");
        public frmEliminarProducto()
        {
            InitializeComponent();
        }

        private void Label2_Click(object sender, EventArgs e)
        {

        }

        private void BtnBuscarProducto_Click(object sender, EventArgs e)
        {
            try
            {
                conexion.Open();
                string selectQuery = "SELECT * FROM producto WHERE nombre LIKE '%" + txtNombreProducto.Text + "%' ";
                MySqlCommand cmd = new MySqlCommand(selectQuery, conexion);
                MySqlDataAdapter selecionnar = new MySqlDataAdapter();
                selecionnar.SelectCommand = cmd;
                DataTable datosProducto = new DataTable();
                selecionnar.Fill(datosProducto);
                dtgvProductos.DataSource = datosProducto;
                conexion.Close();


                btnEliminarProducto.Enabled = true;



            }
            catch
            {
                MessageBox.Show("Error al conectar");
            }

        }

        private void FrmEliminarProducto_Load(object sender, EventArgs e)
        {
            btnEliminarProducto.Enabled = false;
        }
    }
}      
        
        
        

Hacemos doble click en botón Eliminar Productos y el formulario quedaría de la siguiente forma:
 
      using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace GatoAbarrotero
{
    public partial class frmEliminarProducto : Form
    {
        MySqlConnection conexion = new MySqlConnection("server=localhost;User id=admin;password=adminlara;database=puntodeventadb");
        public frmEliminarProducto()
        {
            InitializeComponent();
        }

        private void Label2_Click(object sender, EventArgs e)
        {

        }

        private void BtnBuscarProducto_Click(object sender, EventArgs e)
        {
            try
            {
                conexion.Open();
                string selectQuery = "SELECT * FROM producto WHERE nombre LIKE '%" + txtNombreProducto.Text + "%' ";
                MySqlCommand cmd = new MySqlCommand(selectQuery, conexion);
                MySqlDataAdapter selecionnar = new MySqlDataAdapter();
                selecionnar.SelectCommand = cmd;
                DataTable datosProducto = new DataTable();
                selecionnar.Fill(datosProducto);
                dtgvProductos.DataSource = datosProducto;
                conexion.Close();


                btnEliminarProducto.Enabled = true;



            }
            catch
            {
                MessageBox.Show("Error al conectar");
            }

        }

        private void FrmEliminarProducto_Load(object sender, EventArgs e)
        {
            btnEliminarProducto.Enabled = false;
        }
 
        private void BtnEliminarProducto_Click(object sender, EventArgs e)
        {
            if (dtgvProductos.CurrentRow == null)
            {
                MessageBox.Show("Selecionar fila");
                return;
            }
            int idProducto = Convert.ToInt32(dtgvProductos.CurrentRow.Cells["idProducto"].Value);
            try
            {
                conexion.Open();
                string eliminarQuery = "DELETE FROM producto WHERE idProducto = @idProducto ";
                MySqlCommand cmd = new MySqlCommand(eliminarQuery, conexion);
                cmd.Parameters.AddWithValue("@idProducto", idProducto);
                cmd.ExecuteNonQuery();
                MessageBox.Show("Eliminación Exitosa");
                dtgvProductos.Rows.Remove(dtgvProductos.CurrentRow);
                conexion.Close();
            }
            catch
            {

                MessageBox.Show("Eliminación fallida");
            }

        }
    }
}

      
      
       

Ahora habilitamos la opción de menú Agregar Producto haciendo click.
    
    
    using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace GatoAbarrotero
{
    public partial class frmEliminarProducto : Form
    {
        MySqlConnection conexion = new MySqlConnection("server=localhost;User id=admin;password=adminlara;database=puntodeventadb");
        public frmEliminarProducto()
        {
            InitializeComponent();
        }

        private void Label2_Click(object sender, EventArgs e)
        {

        }

        private void BtnBuscarProducto_Click(object sender, EventArgs e)
        {
            try
            {
                conexion.Open();
                string selectQuery = "SELECT * FROM producto WHERE nombre LIKE '%" + txtNombreProducto.Text + "%' ";
                MySqlCommand cmd = new MySqlCommand(selectQuery, conexion);
                MySqlDataAdapter selecionnar = new MySqlDataAdapter();
                selecionnar.SelectCommand = cmd;
                DataTable datosProducto = new DataTable();
                selecionnar.Fill(datosProducto);
                dtgvProductos.DataSource = datosProducto;
                conexion.Close();


                btnEliminarProducto.Enabled = true;



            }
            catch
            {
                MessageBox.Show("Error al conectar");
            }

        }

        private void FrmEliminarProducto_Load(object sender, EventArgs e)
        {
            btnEliminarProducto.Enabled = false;
        }

        private void BtnEliminarProducto_Click(object sender, EventArgs e)
        {
            if (dtgvProductos.CurrentRow == null)
            {
                MessageBox.Show("Selecionar fila");
                return;
            }
            int idProducto = Convert.ToInt32(dtgvProductos.CurrentRow.Cells["idProducto"].Value);
            try
            {
                conexion.Open();
                string eliminarQuery = "DELETE FROM producto WHERE idProducto = @idProducto ";
                MySqlCommand cmd = new MySqlCommand(eliminarQuery, conexion);
                cmd.Parameters.AddWithValue("@idProducto", idProducto);
                cmd.ExecuteNonQuery();
                MessageBox.Show("Eliminación Exitosa");
                dtgvProductos.Rows.Remove(dtgvProductos.CurrentRow);
                conexion.Close();
            }
            catch
            {

                MessageBox.Show("Eliminación fallida");
            }

        }
 
        private void AgregarProductoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Hide();
            frmAgregarProducto agregarProducto = new frmAgregarProducto();
            agregarProducto.Show();
        }
    }
}
     
   

Por último habilitamos la opción menú
    
    
    using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace GatoAbarrotero
{
    public partial class frmEliminarProducto : Form
    {
        MySqlConnection conexion = new MySqlConnection("server=localhost;User id=admin;password=adminlara;database=puntodeventadb");
        public frmEliminarProducto()
        {
            InitializeComponent();
        }

        private void Label2_Click(object sender, EventArgs e)
        {

        }

        private void BtnBuscarProducto_Click(object sender, EventArgs e)
        {
            try
            {
                conexion.Open();
                string selectQuery = "SELECT * FROM producto WHERE nombre LIKE '%" + txtNombreProducto.Text + "%' ";
                MySqlCommand cmd = new MySqlCommand(selectQuery, conexion);
                MySqlDataAdapter selecionnar = new MySqlDataAdapter();
                selecionnar.SelectCommand = cmd;
                DataTable datosProducto = new DataTable();
                selecionnar.Fill(datosProducto);
                dtgvProductos.DataSource = datosProducto;
                conexion.Close();


                btnEliminarProducto.Enabled = true;



            }
            catch
            {
                MessageBox.Show("Error al conectar");
            }

        }

        private void FrmEliminarProducto_Load(object sender, EventArgs e)
        {
            btnEliminarProducto.Enabled = false;
        }

        private void BtnEliminarProducto_Click(object sender, EventArgs e)
        {
            if (dtgvProductos.CurrentRow == null)
            {
                MessageBox.Show("Selecionar fila");
                return;
            }
            int idProducto = Convert.ToInt32(dtgvProductos.CurrentRow.Cells["idProducto"].Value);
            try
            {
                conexion.Open();
                string eliminarQuery = "DELETE FROM producto WHERE idProducto = @idProducto ";
                MySqlCommand cmd = new MySqlCommand(eliminarQuery, conexion);
                cmd.Parameters.AddWithValue("@idProducto", idProducto);
                cmd.ExecuteNonQuery();
                MessageBox.Show("Eliminación Exitosa");
                dtgvProductos.Rows.Remove(dtgvProductos.CurrentRow);
                conexion.Close();
            }
            catch
            {

                MessageBox.Show("Eliminación fallida");
            }

        }

        private void AgregarProductoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Hide();
            frmAgregarProducto agregarProducto = new frmAgregarProducto();
            agregarProducto.Show();
        }

        private void MenuToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Hide();
            frmMenu menu = new frmMenu();
            menu.Show();

        }
    }
}
    

Probamos:
punto de venta
Buscamos un producto y presionamos Buscar producto
punto de venta
Seleccionamos y presionamos Eliminar Producto
punto de venta
Presionamos Aceptar
punto de venta
El resultado final es este
punto de venta