private DetalleEntidadMostrar CrearObjetoDetalle()
        {
            DetalleEntidadMostrar detalle = new DetalleEntidadMostrar();

            detalle.Id       = productoActual.Id;
            detalle.Nombre   = productoActual.Nombre;
            detalle.Precio   = productoActual.Precio;
            detalle.Cantidad = Convert.ToInt32(txtVentaCantidad.Text);
            return(detalle);
        }
        private static DetalleEntidadMostrar TraducirDetalleEntidad(SqlDataReader reader)
        {
            DetalleEntidadMostrar ms = new DetalleEntidadMostrar();

            ms.Id       = Convert.ToInt32(reader["Id_Ven_Per"]);
            ms.Nombre   = Convert.ToString(reader["Nom_Pro"] + " " + reader["Des_Pro"]);
            ms.Precio   = Convert.ToDouble(reader["Pre_Pro"]);
            ms.Cantidad = Convert.ToInt32(reader["Can_Pro_Ven"]);
            return(ms);
        }
        private void AgregarProductosVenta()
        {
            bool productoYaExiste         = false;
            DetalleEntidadMostrar detalle = CrearObjetoDetalle();
            int cant = productoActual.Cantidad;

            if (cant < detalle.Cantidad || cant == 0)
            {
                MessageBox.Show("No dispone de la cantidad especificada.");
            }
            else
            {
                for (int i = 0; i < dgvDetallesCompra.RowCount; i++)
                {
                    if (productoActual.Id == int.Parse(dgvDetallesCompra.Rows[i].Cells["Id"].Value.ToString()))
                    {
                        var cantidadAnterior = Convert.ToInt32(
                            dgvDetallesCompra.Rows[i].Cells["Cantidad"].Value);
                        if (cant < (cantidadAnterior + detalle.Cantidad))
                        {
                            MessageBox.Show("No dispone de la cantidad especificada");
                            productoYaExiste = true;
                            break;
                        }
                        else
                        {
                            dgvDetallesCompra.Rows[i].Cells["Cantidad"].Value =
                                cantidadAnterior + detalle.Cantidad;
                            dgvDetallesCompra.Rows[i].Cells["Precio_Total"].Value =
                                Convert.ToDouble(dgvDetallesCompra.Rows[i].Cells["Precio"].Value) *
                                Convert.ToInt32(dgvDetallesCompra.Rows[i].Cells["Cantidad"].Value);
                            productoYaExiste = true;
                            LimpiarCamposProductos();
                            txtVentaCantidad.ReadOnly = true;
                            button1.Enabled           = false;
                            ventaRealizada            = true;
                            CalcularMontosVenta();
                        }
                    }
                }
                if (!productoYaExiste)
                {
                    ventaRealizada = true;
                    listaProductos.Add(detalle);
                    dgvDetallesCompra.DataSource = null;
                    dgvDetallesCompra.DataSource = listaProductos;
                    LimpiarCamposProductos();
                    button1.Enabled           = false;
                    txtVentaCantidad.ReadOnly = true;
                    productoActual            = null;
                    EstablecerFilasEditablesDataGridView_DetalleVenta();
                    CalcularMontosVenta();
                }
            }
        }