private void btnAgregar_Click(object sender, EventArgs e)//evento que se dispara cuando das clic al boton agregar
        {
            try
            {
                if (txtCodigo.Text != "" && txtNombre.Text != "" && txtPrecioDetalle.Text != "" && txtPrecioMayor.Text != "" && txtNumExistencia.Text != "")                                                                                                   //verifica que se introduzca la informacion necesaria
                {
                    ProductoTableAdapter adapter = new ProductoTableAdapter();                                                                                                                                                                                 //objeto para usar los querys de tblProducto
                    ProductoDataTable    data    = adapter.BuscarProductoPorCodigo(txtCodigo.Text);                                                                                                                                                            //objeto para almacenar informacion de tblProducto, en este caso buscada por el codigo de barra ingresado

                    if (data.Count == 0)                                                                                                                                                                                                                       //verifica que no haya ya un producto ingresado con ese codigo de barra
                    {
                        decimal descuento   = Convert.ToDecimal(txtDescuento.Text);                                                                                                                                                                            //convierte los numeros ingresados en el textbox descuento en decimal para ingresarlo posteriormente a la base de datos
                        int     idCategoria = Convert.ToInt32(cboCategoria.SelectedValue);                                                                                                                                                                     //guarda la categoria que se seleccionó para el producto
                        adapter.InsertarP(txtNombre.Text.Trim(), txtCodigo.Text.Trim(), Convert.ToDecimal(txtPrecioDetalle.Text), Convert.ToDecimal(txtPrecioMayor.Text), Convert.ToDecimal(txtNumExistencia.Text), idCategoria, descuento, cbxITBIS.Checked); //se inserta el producto en tblProducto
                        log.Info($"Se agregó el producto con el código [{txtCodigo.Text}] al sistema por el usuario {usuario.Nombre} {usuario.Apellidos}");                                                                                                    //se registra que se ingresó el producto
                        MessageBox.Show($"Se agregó al sistema el producto ingresado con el código: {txtCodigo.Text}", "Agregar producto", MessageBoxButtons.OK, MessageBoxIcon.Information);                                                                  //notifica al usuario con un mensaje que se ingresó el producto
                        Limpiar();                                                                                                                                                                                                                             //se limpian todos los textbox
                    }
                    else                                                                                                                                                                                                                                       //si ya hay un producto con este codigo de barra
                    {
                        if ((MessageBox.Show($"Ya hay un producto ingresado con este Código: {txtCodigo.Text}, ¿Desea limpiar todos los campos?", "Error", MessageBoxButtons.YesNo) == DialogResult.Yes))                                                      //le pregunta al usuario si desea limpiar todos los campos. si responde si pasa lo siguiente
                        {
                            Limpiar();                                                                                                                                                                                                                         //se limpian todos los textbox
                        }
                        else                                                                                                                                                                                                                                   //si responde que no
                        {
                            txtCodigo.Focus();                                                                                                                                                                                                                 //coloca al usuario en el textbox codigo para que lo modifique
                        }
                        log.Info($"Se intentó agregar el producto {txtCodigo.Text} al sistema por el usuario {usuario.Nombre} {usuario.Apellidos} pero ya existe uno con este mismo código");                                                                  //registra que se intentó agregar un producto para ya habia uno con este codigo
                    }
                }//si falta alguna informacion
                else
                {
                    string mensaje = "Falta(n) por llenar lo(s) siguiente(s) campo(s): ";          //string para guardar que info hace falta
                    if (txtCodigo.Text == "")                                                      //si no se ingresó el codigo de barra en su respectivo textbo
                    {
                        mensaje += "\nCódigo de Barras";                                           //notifica que falta el codigo de barras
                    }
                    if (txtNombre.Text == "")                                                      //si no se ingresó el nombre en su respectivo textbo
                    {
                        mensaje += "\nNombre";                                                     //notifica que falta el nombre
                    }
                    if (txtPrecioDetalle.Text == "")                                               //si no se ingresó el precio al detalle en su respectivo textbo
                    {
                        mensaje += "\nPrecio al Detalle";                                          //notifica que falta el precio al detalle
                    }
                    if (txtPrecioMayor.Text == "")                                                 //si no se ingresó el precio mayor en su respectivo textbo
                    {
                        mensaje += "\nPrecio al Mayor";                                            //notifica que falta el precio al por mayor
                    }
                    if (txtNumExistencia.Text == "")                                               //si no se ingresó el numero de existencias en su respectivo textbo
                    {
                        mensaje += "\nNúmero de Existencia";                                       //notifica que falta el numero de existencia
                    }
                    MessageBox.Show(mensaje, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); //notifica al usuario el mensaje de lo que falta
                }
            }
            catch (Exception error)
            {
                log.Error($"Error: {error.Message}", error);
                MessageBox.Show($"Error: {error.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }