Public Class Form1 ' **** DECLARED CONSTANTS FOR WORKING WITH SECTION ARRAY AND MOTOR DESCRIPTION BUILDING **** Private Const FINISHED_GOOD As Integer = 0 Private Const SERVOLOC_SERIES As Integer = 1 Private Const FRAME_SIZE As Integer = 2 Private Const STACK_LENGTH As Integer = 3 Private Const MOTOR_KE As Integer = 4 Private Const VOLTAGE As Integer = 5 Private Const MOUNTING_OPTION As Integer = 6 Private Const FEEDBACK As Integer = 7 Private Const TERMINATION As Integer = 8 Private Const BRAKE_OPTION As Integer = 9 Private Const OTHER_OPTIONS As Integer = 10 ' **** SECTION ARRAY FOR MOTOR DESCRIPTIONS **** Dim section(10) As String ' **** PRICING ARRAY FOR DETERMINING PRICES FOR VARIOUS PRICE GROUPS **** Dim pricing(11) As Single ' **** OTHER VARIABLES **** Dim list As Single Dim cost As Single Dim counter As Integer Dim price As Single Dim normalpart As Boolean Dim s As String Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'TODO: This line of code loads data into the 'dsIntrol.TestQuote' table. You can move, or remove it, as needed. Me.taTestQuote.Fill(Me.dsIntrol.TestQuote) 'TODO: This line of code loads data into the 'dsIntrol.pricelist' table. You can move, or remove it, as needed. Me.taPricelist.Fill(Me.dsIntrol.pricelist) btnadd.Enabled = False grpQuote.Enabled = False grpQuoteDetail.Enabled = False 'btnnew.Enabled = False lblquote.Text = "$0.00" btnmake.Enabled = False cleartextboxes() calcpricing() calcprice() btnprint.Enabled = False btnPrint2.Enabled = False DateTimePicker1.Value = DateTime.Now() btnmotordesc.Enabled = False End Sub Private Sub SaveToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveToolStripButton.Click Try Me.Validate() bspricelist.EndEdit() daPricelist.Update(dsIntrol.pricelist) Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.Message) End Try End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Me.taPricelist.Fill(Me.dsIntrol.pricelist) End Sub Private Function GetRow() As dsIntrol.pricelistRow Dim drv As DataRowView drv = bspricelist.Current GetRow = drv.Row End Function Private Sub cleartextboxes() txtuser1.Text = "" txtuser2.Text = "" txtuser3.Text = "" txtoem1.Text = "" txtoem2.Text = "" txtoem3.Text = "" txtreseller1.Text = "" txtreseller2.Text = "" txtreseller3.Text = "" txtdistributor1.Text = "" txtdistributor2.Text = "" txtdistributor3.Text = "" End Sub Private Sub calcprice() Try If cbxcustomer.Text = "User" Then If numqty.Value < 5 Then price = pricing(0) * numqty.Value ElseIf numqty.Value < 25 Then price = pricing(1) * numqty.Value Else price = pricing(2) * numqty.Value End If ElseIf cbxcustomer.Text = "OEM" Then If numqty.Value < 5 Then price = pricing(3) * numqty.Value ElseIf numqty.Value < 25 Then price = pricing(4) * numqty.Value Else price = pricing(5) * numqty.Value End If ElseIf cbxcustomer.Text = "Reseller" Then If numqty.Value < 5 Then price = pricing(6) * numqty.Value ElseIf numqty.Value < 25 Then price = pricing(7) * numqty.Value Else price = pricing(8) * numqty.Value End If ElseIf cbxcustomer.Text = "Distributor" Then If numqty.Value < 5 Then price = pricing(9) * numqty.Value ElseIf numqty.Value < 25 Then price = pricing(10) * numqty.Value Else price = pricing(11) * numqty.Value End If End If lblquote.Text = "$" & price & ".00" Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.Message) End Try End Sub Private Sub calcpricing() Try If txtlistprice.Text <> Nothing And txtcost.Text <> Nothing Then If chkmotor.Checked = False Then 'grab the list value list = CSng(txtlistprice.Text) pricing(0) = list pricing(1) = RoundingRoutine(list, 0.95) pricing(2) = RoundingRoutine(list, 0.9) pricing(3) = RoundingRoutine(list, 0.9) pricing(4) = RoundingRoutine(list, 0.85) pricing(5) = RoundingRoutine(list, 0.8) pricing(6) = RoundingRoutine(list, 0.82) pricing(7) = RoundingRoutine(list, 0.8) pricing(8) = RoundingRoutine(list, 0.75) pricing(9) = RoundingRoutine(list, 0.65) pricing(10) = RoundingRoutine(list, 0.6) pricing(11) = 0.0 'populate the boxes normalpart = True populateboxes() Else If chkaccessory.Checked = True Then 'start accessory pricing normalpart = False list = CSng(txtlistprice.Text) pricing(0) = list pricing(1) = RoundingRoutine(list, 0.95) pricing(2) = RoundingRoutine(list, 0.95) pricing(3) = RoundingRoutine(list, 0.91) pricing(4) = RoundingRoutine(list, 0.89) pricing(5) = RoundingRoutine(list, 0.89) pricing(6) = RoundingRoutine(list, 0.91) pricing(7) = RoundingRoutine(list, 0.89) pricing(8) = RoundingRoutine(list, 0.89) pricing(9) = RoundingRoutine(list, 0.83) pricing(10) = RoundingRoutine(list, 0.8) pricing(11) = RoundingRoutine(list, 0.8) populateboxes() Else 'start motor pricing normalpart = False list = CSng(txtlistprice.Text) pricing(0) = list pricing(1) = roundingroutine(list, 0.95) pricing(2) = roundingroutine(list, 0.95) pricing(3) = roundingroutine(list, 0.9) pricing(4) = roundingroutine(list, 0.85) pricing(5) = roundingroutine(list, 0.85) pricing(6) = roundingroutine(list, 0.9) pricing(7) = roundingroutine(list, 0.85) pricing(8) = roundingroutine(list, 0.95) pricing(9) = roundingroutine(list, 0.8) pricing(10) = roundingroutine(list, 0.75) pricing(11) = roundingroutine(list, 0.75) populateboxes() End If End If End If Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.Message) End Try End Sub Private Sub buildmotordescription() Dim firsthash As Integer = 0 Dim secondhash As Integer = 0 Dim prodnum As String Dim tempchar As String = "" Dim length As Integer Dim special As Boolean = False Dim description As String = "" Dim enter As String = vbCrLf prodnum = IntrolProductNumberTextBox.Text Try '**** FIND THE FIRST HASH **** tempchar = prodnum.IndexOf("-") firsthash = tempchar tempchar = 0 '**** FIND THE SECOND HASH **** tempchar = prodnum.Substring(prodnum.IndexOf("-") + 1).IndexOf("-") secondhash = (tempchar + firsthash) + 1 length = Len(prodnum) If (length - secondhash) > 7 Then special = True End If ' **** POPULATE THE ARRAY WITH THE FIRST SECTION OF MOTOR DATA **** section(STACK_LENGTH) = prodnum.Substring(firsthash - 1, 1) section(FINISHED_GOOD) = prodnum.Substring(0, 1) section(SERVOLOC_SERIES) = prodnum.Substring(1, 2) If firsthash > 6 Then section(FRAME_SIZE) = prodnum.Substring(3, 3) Else section(FRAME_SIZE) = prodnum.Substring(3, 2) End If ' **** POPULATE THE ARRAY WITH THE SECOND SECTION OF MOTOR DATA **** section(MOUNTING_OPTION) = prodnum.Substring(secondhash - 1, 1) section(VOLTAGE) = prodnum.Substring(secondhash - 2, 1) If (secondhash - firsthash) > 5 Then section(MOTOR_KE) = prodnum.Substring(firsthash + 1, 3) Else section(MOTOR_KE) = prodnum.Substring(firsthash + 1, 2) End If ' **** POPULATE THE ARRAY WITH THE THIRD SECTION OF MOTOR DATA **** section(FEEDBACK) = prodnum.Substring(secondhash + 1, 4) section(TERMINATION) = prodnum.Substring(secondhash + 5, 1) section(BRAKE_OPTION) = prodnum.Substring(secondhash + 6, 1) If special = True Then section(OTHER_OPTIONS) = prodnum.Substring(secondhash + 7, 1) End If ' **** START ASSEMBLING DESCRIPTION **** ' **** CONVERT FRAME SIZE **** Select Case section(FRAME_SIZE) Case "50" section(FRAME_SIZE) = "2" Case "80" section(FRAME_SIZE) = "3" Case "97" section(FRAME_SIZE) = "4" Case "130" section(FRAME_SIZE) = "6" Case "180" section(FRAME_SIZE) = "8" End Select ' **** CONVERT STACK LENGTH **** If section(FRAME_SIZE) = 8 Then Select Case section(STACK_LENGTH) Case "B" section(STACK_LENGTH) = "1" Case "C" section(STACK_LENGTH) = "1.5" Case "D" section(STACK_LENGTH) = "1.75" Case "G" section(STACK_LENGTH) = "2" Case "J" section(STACK_LENGTH) = "4" Case "K" section(STACK_LENGTH) = "Large 8-inch special magnet" End Select Else Select Case section(STACK_LENGTH) Case "A" section(STACK_LENGTH) = "1" Case "B" section(STACK_LENGTH) = "2" Case "C" section(STACK_LENGTH) = "3" Case "D" section(STACK_LENGTH) = "4" 'Case "S" ' section(STACK_LENGTH) = "Special" End Select End If ' **** CONVERT VOLTAGE **** Select Case section(VOLTAGE) Case "G" section(VOLTAGE) = "24" Case "H" section(VOLTAGE) = "48" Case "I" section(VOLTAGE) = "115" Case "J" section(VOLTAGE) = "230" Case "K" section(VOLTAGE) = "450" 'Case "S" ' section(VOLTAGE) = "Special" End Select ' **** CONVERT MOUNTING OPTION **** Select Case section(MOUNTING_OPTION) Case "E" section(MOUNTING_OPTION) = "English" Case "M" section(MOUNTING_OPTION) = "Metric" 'Case "S" ' section(MOUNTING_OPTION) = "Special" End Select ' **** CONVERT FEEDBACK **** Select Case section(FEEDBACK) Case "1000" section(FEEDBACK) = "1000 PPR communicating encoder feedback" Case "1024" section(FEEDBACK) = "1024 PPR communicating encoder feedback" Case "2000" section(FEEDBACK) = "2000 PPR communicating encoder feedback" Case "2048" section(FEEDBACK) = "2048 PPR communicating encoder feedback" Case "HRES" section(FEEDBACK) = "Hi-Gain Resolver" End Select ' **** CONVERT TERMINATION **** Select Case section(TERMINATION) Case "M" section(TERMINATION) = "MS connector" Case "N" section(TERMINATION) = "NPT connector" Case "P" section(TERMINATION) = "Pigtail connector" Case "S" section(TERMINATION) = "Special connector" Case "1" section(TERMINATION) = "18-inch single cord exit w/Conexall connector" Case "2" section(TERMINATION) = "wire exit through back plate" Case "3" section(TERMINATION) = "side front facing wire exit" Case "4" section(TERMINATION) = "side rear facing wire exit" Case "E" section(TERMINATION) = "Emerson MG style connector" Case "D" section(TERMINATION) = "Emerson DXM" End Select ' **** CONVERT BRAKE_OPTION **** Select Case section(BRAKE_OPTION) Case "B" section(BRAKE_OPTION) = "24" Case "N" section(BRAKE_OPTION) = "No Brake" End Select ' ***** START BUILDING DESCRIPTION **** description = "Introl " & prodnum.Substring(1, length - 1) & ", " & section(FRAME_SIZE) & " inch brushless servo motor, " & section(STACK_LENGTH) & " stack length with " & section(FEEDBACK) & " and " & section(TERMINATION) If section(BRAKE_OPTION) = "24" Then description = description + " with " & section(BRAKE_OPTION) & "VDC spring applied brake." Else description = description + "." End If DescriptionTextBox.Text = description Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.Message) End Try End Sub Private Sub populateboxes() txtuser1.Text = CStr("$" & pricing(0) & ".00") txtuser2.Text = CStr("$" & pricing(1) & ".00") txtuser3.Text = CStr("$" & pricing(2) & ".00") txtoem1.Text = CStr("$" & pricing(3) & ".00") txtoem2.Text = CStr("$" & pricing(4) & ".00") txtoem3.Text = CStr("$" & pricing(5) & ".00") txtreseller1.Text = CStr("$" & pricing(6) & ".00") txtreseller2.Text = CStr("$" & pricing(7) & ".00") txtreseller3.Text = CStr("$" & pricing(8) & ".00") txtdistributor1.Text = CStr("$" & pricing(9) & ".00") txtdistributor2.Text = CStr("$" & pricing(10) & ".00") txtdistributor3.Text = CStr("$" & pricing(11) & ".00") If normalpart = True Then txtdistributor3.Text = "Call for Pricing" End If End Sub Private Sub txtlistprice_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtlistprice.TextChanged cleartextboxes() calcpricing() calcprice() End Sub Private Sub AccessoryCheckBox_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkaccessory.CheckedChanged 'this ensures if Accessory checkbox is checked, the motor checkbox will also set to checked since accessories are 'accessories to motors and follow the motor logic structure in the pricing procedure. chkmotor.Checked = True End Sub Private Sub numqty_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles numqty.ValueChanged 'this recalculates a item-line quantity pricing for different users when the user changes the quanity 'the pricing calculation is fired again to reupdate the quote price. calcprice() End Sub Private Sub cbxcustomer_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbxcustomer.SelectedIndexChanged 'this recalculates a item-line quantity pricing for different users when the user changes the status of a customer 'type the pricing calculation is fired again to reupdate the quote price. calcprice() End Sub Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click Try Me.taPricelist.FillByProductNumber(Me.dsIntrol.pricelist, ToolStripTextBox1.Text) Catch ex As System.Exception System.Windows.Forms.MessageBox.Show(ex.Message) End Try End Sub Private Sub ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton2.Click Try Me.taPricelist.FillByMotorNumber(Me.dsIntrol.pricelist, ToolStripTextBox1.Text) Catch ex As System.Exception System.Windows.Forms.MessageBox.Show(ex.Message) End Try End Sub Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton3.Click Try Me.taPricelist.FillByDescription(Me.dsIntrol.pricelist, ToolStripTextBox1.Text) Catch ex As System.Exception System.Windows.Forms.MessageBox.Show(ex.Message) End Try End Sub Private Sub ToolStripButton4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton4.Click Try Me.taPricelist.Fill(Me.dsIntrol.pricelist) Catch ex As System.Exception System.Windows.Forms.MessageBox.Show(ex.Message) End Try End Sub Private Sub btnnew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnnew.Click 'TODO: This line of code loads data into the 'dsIntrol.Customers' table. You can move, or remove it, as needed. Me.taCustomers.Fill(Me.dsIntrol.Customers) Dim highquote As Long btnmake.Enabled = True btnnew.Enabled = False grpQuote.Enabled = True cnIntrol.Open() highquote = cmdGetQuoteNum.ExecuteScalar txtquotenum.Text = (highquote + 1).ToString cnIntrol.Close() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click My.Forms.Form2.ShowDialog() End Sub Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnmake.Click TextBox19.Text = CType(txtquotenum.Text, String) btnadd.Enabled = True grpQuote.Enabled = False grpQuoteDetail.Enabled = True Me.taTestQuote.Fill(Me.dsIntrol.TestQuote) Dim drnewquote As DataRow drnewquote = dsIntrol.TestQuote.NewRow() drnewquote.Item("Customer") = cbxtradingname.Text drnewquote.Item("Address1") = TextBox3.Text + " " + TextBox4.Text drnewquote.Item("Address2") = TextBox4.Text drnewquote.Item("Address3") = TextBox5.Text + ", " + TextBox6.Text + " " + TextBox7.Text + " " + TextBox8.Text drnewquote.Item("City") = TextBox5.Text drnewquote.Item("State") = TextBox6.Text drnewquote.Item("Zip") = TextBox7.Text drnewquote.Item("Country") = TextBox8.Text drnewquote.Item("Quotenumber") = txtquotenum.Text drnewquote.Item("Quotedate") = DateTimePicker1.Text drnewquote.Item("Quoterep") = TextBox9.Text drnewquote.Item("Quoteshipdate") = TextBox2.Text drnewquote.Item("Quoteshipmethod") = ComboBox2.Text drnewquote.Item("Quotefob") = ComboBox3.Text drnewquote.Item("Quoteterms") = ComboBox1.Text dsIntrol.TestQuote.Rows.Add(drnewquote) Try Me.Validate() bsTestQuote.EndEdit() taTestQuote.Update(dsIntrol.TestQuote) Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.Message) End Try 'TODO: This line of code loads data into the 'dsIntrol.TestQuoteDetail' table. You can move, or remove it, as needed. 'Me.taTestQuoteDetail.Fill(Me.daTestQuoteDetail) Me.taTestQuoteDetail.FillBy(Me.dsIntrol.TestQuoteDetail, TextBox19.Text) End Sub Private Sub btnadd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnadd.Click Try btnprint.Enabled = False btnPrint2.Enabled = False grpQuoteDetail.Enabled = True Dim drnew As DataRow drnew = dsIntrol.TestQuoteDetail.NewRow() drnew.Item("Partnumber") = IntrolProductNumberTextBox.Text.ToString() drnew.Item("Quotenumber") = TextBox19.Text.ToString() drnew.Item("Price") = CType(CType(price.ToString + ".0000", Short) / CType(numqty.Text.ToString, Short), String) + ".0000" drnew.Item("Quantity") = numqty.Text.ToString() drnew.Item("Description") = DescriptionTextBox.Text.ToString() drnew.Item("ExtPrice") = price.ToString() + ".0000" dsIntrol.TestQuoteDetail.Rows.Add(drnew) Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.Message) End Try End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Try Me.Validate() bsTestQuoteDetail.EndEdit() daTestQuoteDetail.Update(dsIntrol.TestQuoteDetail) 'taTestQuoteDetail.Update(dsIntrol.TestQuoteDetail) btnprint.Enabled = True btnPrint2.Enabled = True Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.Message) End Try End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnprint.Click quotenumber = TextBox19.Text My.Forms.Form3.ShowDialog() End Sub Private Sub Button4_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint2.Click quotenumber = TextBox19.Text My.Forms.Form4.ShowDialog() End Sub Private Sub TestQuoteDetailDataGridView_CellBeginEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles TestQuoteDetailDataGridView.CellBeginEdit btnprint.Enabled = False btnPrint2.Enabled = False End Sub Private Sub TestQuoteDetailDataGridView_RowsRemoved(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowsRemovedEventArgs) Handles TestQuoteDetailDataGridView.RowsRemoved btnprint.Enabled = False btnPrint2.Enabled = False End Sub Private Sub TestQuoteDetailDataGridView_RowStateChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowStateChangedEventArgs) Handles TestQuoteDetailDataGridView.RowStateChanged btnprint.Enabled = False btnPrint2.Enabled = False End Sub Private Sub chkmotor_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles chkmotor.CheckedChanged If chkmotor.Checked = True Then btnmotordesc.Enabled = True Else btnmotordesc.Enabled = False End If End Sub Private Sub btnmotordesc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnmotordesc.Click buildmotordescription() End Sub End Class