sistema de ventas e inventario en visual basic

Comparte

sistema de ventas e inventario en visual basic

sistema de ventas e inventario en visual basic. El proyecto se basa en un concepto de gestión de herramientas y equipos agrícolas. Hablando del proyecto, antes de ingresar al menú principal, el usuario debe pasar por el sistema de inicio de sesión para obtener acceso. Después de iniciar sesión en el sistema, él / ella puede administrar el stock, volver, agregar un nuevo artículo, agregar clientes, administrar usuarios y muchos más.

🛒 Sistema de Ventas e Inventario en Visual Basic [Con Código Fuente]

✅ Objetivo

Crear un sistema básico que permita:

  • Registrar productos.

  • Consultar y modificar inventario.

  • Realizar ventas.

  • Controlar stock automáticamente.


🧱 Tecnologías Usadas

  • Visual Basic .NET (Windows Forms)

  • Base de datos: Microsoft Access (.accdb) o SQL Server (opcional)

  • ADO.NET para la conexión


🎯 Estructura de la Base de Datos (Access)

 

 
-- Tabla: Productos
CREATE TABLE Productos (
    IDProducto AUTOINCREMENT PRIMARY KEY,
    NombreProducto TEXT(100),
    PrecioUnitario DOUBLE,
    Stock INT
);

-- Tabla: Ventas
CREATE TABLE Ventas (
    IDVenta AUTOINCREMENT PRIMARY KEY,
    FechaVenta DATETIME,
    Total DOUBLE
);

-- Tabla: DetalleVenta
CREATE TABLE DetalleVenta (
    IDDetalle AUTOINCREMENT PRIMARY KEY,
    IDVenta INT,
    IDProducto INT,
    Cantidad INT,
    Subtotal DOUBLE
);

🖥️ Código Fuente Visual Basic

1. Conexión a la Base de Datos

Imports System.Data.OleDb

Public Class Conexion
    Public Shared conexion As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=ventas.accdb")

    Public Shared Sub Abrir()
        If conexion.State = ConnectionState.Closed Then
            conexion.Open()
        End If
    End Sub

    Public Shared Sub Cerrar()
        If conexion.State = ConnectionState.Open Then
            conexion.Close()
        End If
    End Sub
End Class

2. Registrar un Producto

Public Sub RegistrarProducto(nombre As String, precio As Double, stock As Integer)
    Conexion.Abrir()
    Dim cmd As New OleDbCommand("INSERT INTO Productos (NombreProducto, PrecioUnitario, Stock) VALUES (?, ?, ?)", Conexion.conexion)
    cmd.Parameters.AddWithValue("?", nombre)
    cmd.Parameters.AddWithValue("?", precio)
    cmd.Parameters.AddWithValue("?", stock)
    cmd.ExecuteNonQuery()
    Conexion.Cerrar()
    MessageBox.Show("Producto registrado con éxito.")
End Sub

3. Mostrar Productos en un DataGridView

Public Sub RegistrarVenta(productos As List(Of Tuple(Of Integer, Integer))) ' (IDProducto, Cantidad)
    Conexion.Abrir()

    Dim cmdVenta As New OleDbCommand("INSERT INTO Ventas (FechaVenta, Total) VALUES (?, ?)", Conexion.conexion)
    Dim fecha = DateTime.Now
    Dim total As Double = 0

    ' Calculamos total
    For Each item In productos
        Dim idProd = item.Item1
        Dim cantidad = item.Item2
        Dim cmdPrecio As New OleDbCommand("SELECT PrecioUnitario FROM Productos WHERE IDProducto = ?", Conexion.conexion)
        cmdPrecio.Parameters.AddWithValue("?", idProd)
        Dim precio As Double = cmdPrecio.ExecuteScalar()
        total += cantidad * precio
    Next

    cmdVenta.Parameters.AddWithValue("?", fecha)
    cmdVenta.Parameters.AddWithValue("?", total)
    cmdVenta.ExecuteNonQuery()

    ' Obtener IDVenta
    Dim cmdID As New OleDbCommand("SELECT MAX(IDVenta) FROM Ventas", Conexion.conexion)
    Dim idVenta As Integer = cmdID.ExecuteScalar()

    ' Registrar Detalles
    For Each item In productos
        Dim idProd = item.Item1
        Dim cantidad = item.Item2

        Dim cmdPrecio As New OleDbCommand("SELECT PrecioUnitario FROM Productos WHERE IDProducto = ?", Conexion.conexion)
        cmdPrecio.Parameters.AddWithValue("?", idProd)
        Dim precio As Double = cmdPrecio.ExecuteScalar()
        Dim subtotal = cantidad * precio

        Dim cmdDetalle As New OleDbCommand("INSERT INTO DetalleVenta (IDVenta, IDProducto, Cantidad, Subtotal) VALUES (?, ?, ?, ?)", Conexion.conexion)
        cmdDetalle.Parameters.AddWithValue("?", idVenta)
        cmdDetalle.Parameters.AddWithValue("?", idProd)
        cmdDetalle.Parameters.AddWithValue("?", cantidad)
        cmdDetalle.Parameters.AddWithValue("?", subtotal)
        cmdDetalle.ExecuteNonQuery()

        ' Actualizar stock
        Dim cmdStock As New OleDbCommand("UPDATE Productos SET Stock = Stock - ? WHERE IDProducto = ?", Conexion.conexion)
        cmdStock.Parameters.AddWithValue("?", cantidad)
        cmdStock.Parameters.AddWithValue("?", idProd)
        cmdStock.ExecuteNonQuery()
    Next

    Conexion.Cerrar()
    MessageBox.Show("Venta registrada con éxito.")
End Sub

✅ Características Implementadas

Registro y visualización de productos.

Control automático de inventario.

Registro de ventas y detalle de productos vendidos.

Almacenamiento persistente con Access.





codigo fuente gratis