Vb.net Billing Software Source Code Apr 2026

Private Sub frmBilling_Load(sender As Object, e As EventArgs) Handles MyBase.Load LoadProductsIntoCombo() ResetBill() End Sub

Private Function SaveCustomer(name As String, mobile As String, gstin As String) As Integer Dim query As String = "INSERT INTO Customers (Name, Mobile, GSTIN) VALUES (@name, @mob, @gst); SELECT SCOPE_IDENTITY()" Using conn As New OleDbConnection(connString) Dim cmd As New OleDbCommand(query, conn) cmd.Parameters.AddWithValue("@name", name) cmd.Parameters.AddWithValue("@mob", mobile) cmd.Parameters.AddWithValue("@gst", gstin) conn.Open() Return CInt(cmd.ExecuteScalar()) End Using End Function

Private Sub PrintDocument1_PrintPage(sender As Object, e As PrintPageEventArgs) Handles PrintDocument1.PrintPage Dim font As New Font("Arial", 10) Dim y As Single = e.MarginBounds.Top vb.net billing software source code

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

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 Private Sub frmBilling_Load(sender As Object

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

BillID (AutoNumber, PK) BillDate (Date/Time) CustomerID (Number) Subtotal (Currency) TaxAmount (Currency) DiscountAmount (Currency) GrandTotal (Currency) mobile As String

' 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

Private Function SaveBillHeader(custID As Integer, subtotal As Decimal, tax As Decimal, discount As Decimal, grand As Decimal) As Integer Dim query As String = "INSERT INTO Bills (BillDate, CustomerID, Subtotal, TaxAmount, DiscountAmount, GrandTotal) VALUES (@date, @cid, @sub, @tax, @dis, @grand); SELECT SCOPE_IDENTITY()" Using conn As New OleDbConnection(connString) Dim cmd As New OleDbCommand(query, conn) cmd.Parameters.AddWithValue("@date", DateTime.Now) cmd.Parameters.AddWithValue("@cid", custID) cmd.Parameters.AddWithValue("@sub", subtotal) cmd.Parameters.AddWithValue("@tax", tax) cmd.Parameters.AddWithValue("@dis", discount) cmd.Parameters.AddWithValue("@grand", grand) conn.Open() Return CInt(cmd.ExecuteScalar()) End Using End Function

' Save Bill Header Dim billID As Integer = SaveBillHeader(custID, CDec(lblSubtotal.Text), CDec(lblTax.Text), CDec(lblDiscount.Text), CDec(lblGrandTotal.Text))

' Save Bill Items For Each row As DataGridViewRow In dgvItems.Rows If Not row.IsNewRow Then SaveBillItem(billID, CInt(row.Cells("colProductID").Value), CInt(row.Cells("colQty").Value), CDec(row.Cells("colPrice").Value), CDec(row.Cells("colTotal").Value)) End If Next