Vb.net Billing Software Source Code -
-- Invoice Master Table (One invoice per record) CREATE TABLE tbl_Invoice_Master ( InvoiceNo INT PRIMARY KEY IDENTITY(1,1), InvoiceDate DATETIME DEFAULT GETDATE(), CustomerID INT FOREIGN KEY REFERENCES tbl_Customers(CustomerID), SubTotal DECIMAL(18,2), TaxAmount DECIMAL(18,2), GrandTotal DECIMAL(18,2) );
Private Sub CalculateTotal() Dim subTotal As Decimal = 0 For Each row As DataGridViewRow In dgvCart.Rows subTotal += Convert.ToDecimal(row.Cells("Total").Value) Next vb.net billing software source code
'Loop through DataGridView rows and print them For Each row As DataGridViewRow In dgvCart.Rows Dim line As String = row.Cells("ProductName").Value & " x " & row.Cells("Quantity").Value & " = " & row.Cells("Total").Value e.Graphics.DrawString(line, font, Brushes.Black, leftMargin, yPos) yPos += 20 Next -- Invoice Master Table (One invoice per record)
Public Function getConnection() As SqlConnection Return New SqlConnection(connString) End Function Private Sub SaveInvoice() Using conn As SqlConnection =
Public Function ExecuteNonQuery(ByVal query As String) As Integer Using conn As SqlConnection = getConnection() conn.Open() Using cmd As New SqlCommand(query, conn) Return cmd.ExecuteNonQuery() End Using End Using End Function End Module In frm_Billing.vb , a DataGridView acts as the cart. The user scans a barcode or selects a product, and it is added to the cart.
If you are searching for "," you are likely looking to do one of three things: build a custom solution for your business, learn how billing logic works under the hood, or modify an open-source project to fit specific needs.
Private Sub SaveInvoice() Using conn As SqlConnection = getConnection() conn.Open() Dim transaction As SqlTransaction = conn.BeginTransaction() Try '1. Insert into tbl_Invoice_Master Dim masterQuery As String = "INSERT INTO tbl_Invoice_Master (InvoiceDate, CustomerID, SubTotal, TaxAmount, GrandTotal) " & "VALUES (@date, @custID, @sub, @tax, @grand); SELECT SCOPE_IDENTITY();" Dim newInvoiceNo As Integer = 0 Using cmdMaster As New SqlCommand(masterQuery, conn, transaction) cmdMaster.Parameters.AddWithValue("@date", DateTime.Now) cmdMaster.Parameters.AddWithValue("@custID", GetCurrentCustomerID()) 'Function to get selected customer ID cmdMaster.Parameters.AddWithValue("@sub", lblSubTotal.Text) cmdMaster.Parameters.AddWithValue("@tax", lblTax.Text) cmdMaster.Parameters.AddWithValue("@grand", lblGrandTotal.Text) newInvoiceNo = Convert.ToInt32(cmdMaster.ExecuteScalar()) End Using '2. Insert into tbl_Invoice_Details for each row in cart Dim detailsQuery As String = "INSERT INTO tbl_Invoice_Details (InvoiceNo, ProductID, Quantity, Rate, Total) " & "VALUES (@invNo, @prodID, @qty, @rate, @total)" For Each row As DataGridViewRow In dgvCart.Rows Using cmdDetails As New SqlCommand(detailsQuery, conn, transaction) cmdDetails.Parameters.AddWithValue("@invNo", newInvoiceNo) cmdDetails.Parameters.AddWithValue("@prodID", row.Cells("ProductID").Value) cmdDetails.Parameters.AddWithValue("@qty", row.Cells("Quantity").Value) cmdDetails.Parameters.AddWithValue("@rate", row.Cells("Rate").Value) cmdDetails.Parameters.AddWithValue("@total", row.Cells("Total").Value) cmdDetails.ExecuteNonQuery() '3. Update stock in tbl_Products Dim stockQuery As String = "UPDATE tbl_Products SET StockQuantity = StockQuantity - @qty WHERE ProductID = @prodID" Using cmdStock As New SqlCommand(stockQuery, conn, transaction) cmdStock.Parameters.AddWithValue("@qty", row.Cells("Quantity").Value) cmdStock.Parameters.AddWithValue("@prodID", row.Cells("ProductID").Value) cmdStock.ExecuteNonQuery() End Using End Using Next transaction.Commit() MessageBox.Show("Invoice saved successfully. Invoice No: " & newInvoiceNo) ClearCart() Catch ex As Exception transaction.Rollback() MessageBox.Show("Failed to save invoice: " & ex.Message) End Try End Using End Sub The final piece is printing. Using the PrintDocument component from the toolbox: