Vb.net Billing Software Source - Code
' Connection string for MS Access (change path accordingly) Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\BillingDB.accdb" Dim currentBillID As Integer = -1
Public Sub New(billID As Integer) InitializeComponent() Me.billID = billID LoadBillData() End Sub
Private Sub btnNewBill_Click(sender As Object, e As EventArgs) Handles btnNewBill.Click ResetBill() End Sub
Private Sub ResetBill() txtCustomerName.Clear() txtMobile.Clear() txtGSTIN.Clear() dgvItems.Rows.Clear() nudQuantity.Value = 1 lblSubtotal.Text = "0.00" lblTax.Text = "0.00" lblDiscount.Text = "0.00" lblGrandTotal.Text = "0.00" currentBillID = -1 btnPrint.Enabled = False End Sub End Class Imports System.Drawing.Printing Public Class frmPrintPreview Private billID As Integer Private billData As DataTable Private itemsData As DataTable vb.net billing software source code
' Save Customer Dim custID As Integer = SaveCustomer(txtCustomerName.Text, txtMobile.Text, txtGSTIN.Text)
Private Sub SaveBillItem(billID As Integer, productID As Integer, qty As Integer, price As Decimal, total As Decimal) Dim query As String = "INSERT INTO BillItems (BillID, ProductID, Quantity, Price, Total) VALUES (@bid, @pid, @qty, @price, @total)" Using conn As New OleDbConnection(connString) Dim cmd As New OleDbCommand(query, conn) cmd.Parameters.AddWithValue("@bid", billID) cmd.Parameters.AddWithValue("@pid", productID) cmd.Parameters.AddWithValue("@qty", qty) cmd.Parameters.AddWithValue("@price", price) cmd.Parameters.AddWithValue("@total", total) conn.Open() cmd.ExecuteNonQuery() End Using End Sub
ProductID (AutoNumber, PK) ProductName (Text) HSN (Text) Price (Currency) ' Connection string for MS Access (change path
MessageBox.Show("Bill saved successfully! Bill No: " & billID) currentBillID = billID btnPrint.Enabled = True End Sub
ItemID (AutoNumber, PK) BillID (Number) ProductID (Number) Quantity (Number) Price (Currency) Total (Currency) Note : This is a working minimal example. Add error handling, data validation, and DB connection string as needed. 1. Main Form – frmBilling.vb Imports System.Data.OleDb Public Class frmBilling
Private Sub btnPrint_Click(sender As Object, e As EventArgs) Handles btnPrint.Click PrintDocument1.Print() End Sub txtGSTIN.Text) Private Sub SaveBillItem(billID As Integer
lblSubtotal.Text = subtotal.ToString("N2") lblTax.Text = taxAmount.ToString("N2") lblDiscount.Text = discount.ToString("N2") lblGrandTotal.Text = grandTotal.ToString("N2") End Sub
Private Sub LoadBillData() ' Fetch Bill Header and Items using billID from DB ' (Implement using OleDbDataAdapter) ' Then bind to PrintDocument End Sub
Private Function GetProductPrice(productID As Integer) As Decimal Dim query As String = "SELECT Price FROM Products WHERE ProductID = @pid" Using conn As New OleDbConnection(connString) Dim cmd As New OleDbCommand(query, conn) cmd.Parameters.AddWithValue("@pid", productID) conn.Open() Return CDec(cmd.ExecuteScalar()) End Using End Function
e.Graphics.DrawString("INVOICE", New Font("Arial", 16, FontStyle.Bold), Brushes.Black, e.MarginBounds.Left, y) y += 40 e.Graphics.DrawString("Bill No: " & billID, font, Brushes.Black, e.MarginBounds.Left, y) y += 20 ' Draw more lines – customer details, items grid, totals... End Sub
Private Sub LoadProductsIntoCombo() Dim query As String = "SELECT ProductID, ProductName FROM Products" Using conn As New OleDbConnection(connString) Dim da As New OleDbDataAdapter(query, conn) Dim dt As New DataTable() da.Fill(dt) cboProduct.DataSource = dt cboProduct.DisplayMember = "ProductName" cboProduct.ValueMember = "ProductID" End Using End Sub