Private WithEvents pd As New Printing.PrintDocument Private invoiceContent As String Private Sub PrintInvoice(ByVal invNo As String) ' Build invoice text Dim sb As New System.Text.StringBuilder() sb.AppendLine(" MY BILLING SOFTWARE ") sb.AppendLine("--------------------------") sb.AppendLine($"Invoice No: invNo") sb.AppendLine($"Date: DateTime.Now") sb.AppendLine("--------------------------") sb.AppendLine("Item Qty Price Total") For Each row As DataRow In cartTable.Rows sb.AppendLine($"row("ProductName") row("Quantity") row("Price") row("Total")") Next sb.AppendLine("--------------------------") sb.AppendLine($"Grand Total: lblGrandTotal.Text") sb.AppendLine("--------------------------") sb.AppendLine(" Thank you! ")
Private Sub btnGenerateInvoice_Click(sender As Object, e As EventArgs) Handles btnGenerateInvoice.Click If cartTable.Rows.Count = 0 Then MessageBox.Show("Cart is empty!") Return End If vbnet+billing+software+source+code
Public Function ExecuteQuery(ByVal query As String) As DataTable dt = New DataTable() Try OpenConnection() da = New SqlDataAdapter(query, conn) da.Fill(dt) Catch ex As Exception MessageBox.Show("Error: " & ex.Message) Finally CloseConnection() End Try Return dt End Function Private WithEvents pd As New Printing
' Check if already in cart Dim existingRow() As DataRow = cartTable.Select($"ProductID = productID") If existingRow.Length > 0 Then existingRow(0)("Quantity") += 1 Dim qty As Integer = Convert.ToInt32(existingRow(0)("Quantity")) Dim totalBeforeGST As Decimal = qty * price Dim gstAmt As Decimal = totalBeforeGST * (gstPercent / 100) existingRow(0)("GST_Amount") = gstAmt existingRow(0)("Total") = totalBeforeGST + gstAmt Else Dim gstAmt As Decimal = price * (gstPercent / 100) Dim totalWithGST As Decimal = price + gstAmt cartTable.Rows.Add(productID, pName, 1, price, gstPercent, gstAmt, totalWithGST) End If CalculateTotals() txtProductCode.Clear() txtProductCode.Focus() Else MessageBox.Show("Product not found!") End If End If End Sub Public Sub OpenConnection() ' Change Data Source according
Public Sub ExecuteNonQuery(ByVal query As String) Try OpenConnection() cmd = New SqlCommand(query, conn) cmd.ExecuteNonQuery() Catch ex As Exception MessageBox.Show("Error: " & ex.Message) Finally CloseConnection() End Try End Sub End Module Secure authentication using salt-hash (simplified here for demo).
MessageBox.Show($"Invoice Generated: invoiceNo") PrintInvoice(invoiceNo) ' Clear cart and reset cartTable.Clear() CalculateTotals() End Sub End Class Add a PrintDocument control and its PrintPage event.
Public Sub OpenConnection() ' Change Data Source according to your SQL Server instance conn = New SqlConnection("Data Source=.\SQLEXPRESS;Initial Catalog=BillingDB;Integrated Security=True") If conn.State = ConnectionState.Closed Then conn.Open() End If End Sub