Public Class Form1 Dim sngOrdered, sngInStock, sngReadyToShip, sngBackOrdered As Single Dim sngNewOrdered, sngPassInStock, sngPassReadyToShip, sngPassBackOrdered As Single Dim decShippingCharges As Decimal Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click Me.Close() End Sub Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click ResetSpools() ResetDelivery() End Sub Sub ResetSpools() txtOrdered.Clear() chkRush.Checked = False End Sub Sub ResetDelivery() lblShip.Text = "" lblBO.Text = "" lblShipping.Text = "" lblTotalDue.Text = "" End Sub Private Sub txtOrdered_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtOrdered.Validating 'Validate the input into the Length textbox If IsNumeric(txtOrdered.Text) = False Then 'sngOrdered = CSng(txtOrdered.Text) MessageBox.Show("Entry Must Be a Positive Number", "Error") txtOrdered.Clear() txtOrdered.Focus() ElseIf txtOrdered.Text < 1 Then MessageBox.Show("Entry Cannot Be less than 1", "Error") txtOrdered.Clear() txtOrdered.Focus() Exit Sub End If End Sub Function GetInStock(ByVal sngInStock As Single) As Single sngInStock = InputBox("Enter the Number of Spools Currently In Stock", "Spools In Stock") If IsNumeric(sngInStock) = True Then 'Entry is a number - Check if it is =>0 If sngInStock < 0 Or IsNumeric(sngInStock) = False Then 'Number is Negative or Text MessageBox.Show("Number Entered is Negative or Text", "Error") sngInStock = InputBox("Enter the Number of Spools Currently In Stock", "Spools In Stock") Else End If End If Return sngInStock End Function Function ReadyToShip(ByVal sngReadyToShip As Single) As Single If sngPassInStock >= sngOrdered Then 'All spools ordered are in stock sngReadyToShip = sngOrdered Else sngReadyToShip = sngPassInStock ' Not Enough Spools - Can only ship the number in stock End If Return sngReadyToShip End Function Function BackOrdered(ByVal sngBackOrdered As Single) As Single If sngOrdered >= sngPassReadyToShip Then 'There are more ordered than in stock sngBackOrdered = sngOrdered - sngPassReadyToShip Return sngBackOrdered Else sngBackOrdered = 0 ' There are enough spools in stock Return sngBackOrdered End If End Function Function ShippingCharges(ByVal decShippingCharges As Decimal) As Decimal If chkRush.Checked = True Then 'Rush Shipping Charges Apply decShippingCharges = CDec(txtOrdered.Text) * 15 Else 'Normal Shipping Charges Apply decShippingCharges = CDec(txtOrdered.Text) * 10 End If Return decShippingCharges End Function Private Sub btnCalculate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalculate.Click sngOrdered = CSng(txtOrdered.Text) 'Get spools ordered from form sngPassInStock = GetInStock(sngInStock) sngPassReadyToShip = ReadyToShip(sngReadyToShip) sngPassBackOrdered = BackOrdered(sngBackOrdered) decShippingCharges = ShippingCharges(decShippingCharges) lblShip.Text = sngPassReadyToShip lblBO.Text = sngPassBackOrdered lblShipping.Text = FormatCurrency(decShippingCharges) lblTotalDue.Text = FormatCurrency(decShippingCharges + (txtOrdered.Text * 100)) End Sub End Class