'-------------------------------------------------------------------------------------------
' BOOKMANAGER CLASS
'This module contains the capability to compute sales totals, sales tax, and amount due for
'each transaction. It also maintains a running total of daily sales figures (actual # of books sold
'and total amt of $$ collected, and total sales tax collected.
'The class has three properties: Price, Quantity, & Taxrate
'
'-------------------------------------------------------------------------------------------
Public Class BookManager
Private bookPrice As Decimal 'property for the price of the book
Private myquantity As Integer 'property for quantity of books purchased
Private storeTaxRate As Decimal 'the tax rate is passed from btnCalculate_click
Private totalTax As Decimal 'hold the actual formatted value of the tax
#Region "Properties"
'---here we manage the price they will send/get from our class
' ***Properties are PUBLIC by default so you can leave off "Public" when declaring them***
'''
''' Sets or gets the Price of the book as a decimal
'''
Property Price() As Decimal
Get
Return bookPrice
End Get
Set(ByVal value As Decimal)
bookPrice = value
End Set
End Property
'---here we manage the quantity they will send/get from our class
'''
''' Sets or gets the quantity of the books sold as an integer.
'''
Property Quantity() As Integer
Get
Return myquantity
End Get
Set(ByVal Value As Integer)
If Value >= 0 Then
myquantity = Value
End If
End Set
End Property
'''
''' Sets or gets the store tax rate as a decimal
'''
Property TaxRate() As Decimal
Get
Return storeTaxRate
End Get
Set(ByVal Value As Decimal)
storeTaxRate = Value
End Set
End Property
#End Region
#Region "Methods"
'''
''' This method computes the amount of sales tax as a decimal.
'''
Public Function ComputeTax() As Decimal
'---calculate the sales tax based on the numbers they pass to us
Dim Tax As Decimal
Tax = FormatNumber(quantity * bookPrice * taxRate, 2)
totalTax = Tax 'save this so I can use it again in the ComputeTotalSale Function
Return Tax 'send this back to the calling procedure(btnCalculate_click)
End Function
'''
''' This method computes the total sale using the price, quantity, and salestax properties and returns a decimal.
'''
Public Function ComputeTotalSale() As Decimal
'---now compute the total sale
Dim Total As Decimal
Total = FormatNumber((bookPrice * Quantity) + totalTax, 2)
Return Total
'---you can also do it like this if you want:
'Return (bookPrice * quantity) + totalTax
End Function
'''
''' This method computes the sub total of the sale using the price and quantity properties and returns a decimal.
'''
Public Function ComputeSubTotal() As Decimal
Dim SubTotal As Decimal
SubTotal = FormatNumber(Quantity * bookPrice, 2)
Return SubTotal
End Function
#End Region
End Class
***************Here I use the class to manage running totals in the store
Private Sub btnCalculate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalculate.Click
If txtQuantity.Text = "" Or txtPrice.Text = "" Then
MsgBox("Please complete the form....", MsgBoxStyle.Exclamation, "Book Store Message")
Exit Sub
End If
'---they are ready to check out
'---assign stuff from text boxes to MybookStore so it can do its thing
Try
'---pass my class the stuff in the text box
MyBookStore.Price = txtPrice.Text
MyBookStore.Quantity = txtQuantity.Text
MyBookStore.TaxRate = SALESTAXRATE
'---compute this purchase
txtTax.Text = MyBookStore.ComputeTax.ToString
txtsubTotal.Text = MyBookStore.ComputeSubTotal.ToString
txtTotalDue.Text = MyBookStore.ComputeTotalSale.ToString
'---update daily totals
dailyNumSales += CInt(txtQuantity.Text)
dailySales += CDec(txtTotalDue.Text)
dailySalesTax += CDec(txtTax.Text)
'---now put totals in the labels
lblGrandNumSales.Text = dailyNumSales.ToString
lblGrandTotalSales.Text = FormatNumber(dailySales.ToString, 2)
lblGrandTotalTax.Text = FormatNumber(dailySalesTax.ToString, 2)
Catch
MsgBox("An error occured while completing this transaction." & Err.Description, MsgBoxStyle.Critical, "Broken Book Transaction")
PrepareMyForm()
End Try
End Sub