//Click event for btn_Add_DeleteSelected private void btn_Add_DeleteSelected_Click(object sender, EventArgs e) { //No db loaded, leave function if (GuiPrefs.OpenDBPath == "") { return; } int numrecords = dgv_Add_InventoryView.Rows.Count; int skutodel = -1; int scrolling = dgv_Add_InventoryView.FirstDisplayedScrollingRowIndex; for (int i = 0; i < numrecords; i++) { if (dgv_Add_InventoryView.Rows[i].Selected) { skutodel = Convert.ToInt16(dgv_Add_InventoryView[0, i].Value); break; } } if (skutodel >= 0) //Record selected, confirm and delete. { string str_delconfirm = String.Format("You are about to permanently delete " + "the record with SKU# {0} from the database.\n\n" + "-= DO NOT USE THIS SCREEN TO DISPENSE GLASSES =-\n\nAre you sure " + "you want to delete this record?", skutodel); string str_caption = String.Format("Confirm Delete - SKU# {0}", skutodel); if (MessageBox.Show(str_delconfirm, str_caption, MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { Mydb.Delete((uint)skutodel, SSTable.Current); Mydb.GetCurrentInventory(); //Refreshes the list if (!GuiPrefs.NormalDatabase) { Mydb.Delete((uint)skutodel, SSTable.MergeItems); dt_Add_MergeTable.Clear(); Mydb.GetTable(dt_Add_MergeTable, SSTable.MergeItems); } if (scrolling < dgv_Add_InventoryView.Rows.Count - 1) { dgv_Add_InventoryView.FirstDisplayedScrollingRowIndex = scrolling; } IncrementOps(); //Increment ops by 1 if the appropriate prefs are set } } else //No record selected when button was pushed { MessageBox.Show("Please select a record to delete from the list.", "No Record Selected", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } }
/// <summary> /// UpdateAfterOpenDB - Updates the controls and other important variables after a database is opened. /// </summary> private void UpdateAfterOpenDB() { DataTable dt = new DataTable(); Mydb.GetCurrentInventory(); //Load the current inventory into the datatable used by View and Search dt_V_DispensedTable.Clear(); Mydb.GetTable(dt_V_DispensedTable, SSTable.Dispensed); //Load the dispensed inventory into the datatable used by View Mydb.GetDBInfo(dt); //Load the database info GuiPrefs.OpenDBPath = Mydb.MyPath; if (dt.Rows.Count > 0) { //Set the database info to corresponding member variables GuiPrefs.OpenDBName = dt.Rows[0][0].ToString(); GuiPrefs.OpenDBLoc = dt.Rows[0][1].ToString(); string codb = String.Format("Database: {0} ({1})", GuiPrefs.OpenDBName, GuiPrefs.OpenDBLoc); lb_Add_CurrentOpenDB.Text = codb; lb_S_CurrentOpenDB.Text = codb; lb_D_CurrentOpenDB.Text = codb; lb_V_CurrentOpenDB.Text = codb; lb_R_CurrentOpenDB.Text = codb; } //Check for merge info and alter display if necessary dt.Reset(); dt_Add_MergeTable.Clear(); try { Mydb.GetTable(dt, SSTable.MergeInfo); tb_Add_MinSKU.Text = dt.Rows[0][1].ToString(); tb_Add_MaxSKU.Text = dt.Rows[0][2].ToString(); Mydb.GetTable(dt_Add_MergeTable, SSTable.MergeItems); bs_Add_InventorySource.DataSource = dt_Add_MergeTable; Enable_AllControls(false); } catch { //If there's an exception, it's not a merge db bs_Add_InventorySource.DataSource = Mydb.InvResults; tb_Add_MinSKU.Clear(); tb_Add_MaxSKU.Clear(); Enable_AllControls(true); } Enable_MenuItems(true); ResetOps(); //Reset number of operations performed since last auto backup ConfigureAutoBackupTimer(); //Configures (and resets) the timer for auto backups }
//Add New Item button clicked. Checks all the fields for valid values, //and if no errors, creates the record and adds it to the db. private void btn_Add_AddItem_Click(object sender, EventArgs e) { if (GuiPrefs.OpenDBPath == "") { MessageBox.Show("You must load a database before you can add items.", "No Database Loaded", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //Add the item if all the fields have valid values if (Add_Controls_Valid()) { SpecsRecord nr = new SpecsRecord(); int skunew = 1; int skumin, skumax; //Step 1 - Find the first unused SKU in the database try { tb_Add_MinSKU.Text = (skumin = Math.Abs(Convert.ToInt16(tb_Add_MinSKU.Text))).ToString(); } catch { //If not a valid integer, set min to 1 skumin = 1; tb_Add_MinSKU.Text = ""; } try { tb_Add_MaxSKU.Text = (skumax = Math.Abs(Convert.ToInt16(tb_Add_MaxSKU.Text))).ToString(); } catch { //If not a valid integer, set max to -1 (function will read as no limit) skumax = -1; } if (skumax < skumin) { //Blanks max if it's less than min tb_Add_MaxSKU.Text = ""; } try { skunew = Mydb.GetNextFreeSKU(skumin, skumax); } catch (IndexOutOfRangeException) { MessageBox.Show("There is no available SKU number in the specified range.", "No available SKU", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // } // else { //No valid range specified, search entire inventory // skunew = Mydb.GetNextFreeSKU(); // } //Step 2 - Set all the values of the SpecsRecord nr.SKU = (uint)skunew; nr.SphereOD = Convert.ToSingle(tb_Add_SphereOD.Text); nr.SphereOS = Convert.ToSingle(tb_Add_SphereOS.Text); nr.CylOD = Convert.ToSingle(tb_Add_CylOD.Text); nr.CylOS = Convert.ToSingle(tb_Add_CylOS.Text); nr.AxisOD = Convert.ToInt16(tb_Add_AxisOD.Text); nr.AxisOS = Convert.ToInt16(tb_Add_AxisOS.Text); nr.AddOD = Convert.ToSingle(tb_Add_AddOD.Text); nr.AddOS = Convert.ToSingle(tb_Add_AddOS.Text); if (rb_Add_Male.Checked) { nr.Gender = SpecGender.Male; } else if (rb_Add_Female.Checked) { nr.Gender = SpecGender.Female; } else { nr.Gender = SpecGender.Uni; } if (rb_Add_Single.Checked) { nr.Type = SpecType.Single; } else { nr.Type = SpecType.Multi; } if (rb_Add_NoTint.Checked) { nr.Tint = SpecTint.None; } else if (rb_Add_LightTint.Checked) { nr.Tint = SpecTint.Light; } else { nr.Tint = SpecTint.Dark; } if (rb_Add_Small.Checked) { nr.Size = SpecSize.Small; } else if (rb_Add_Medium.Checked) { nr.Size = SpecSize.Medium; } else if (rb_Add_Large.Checked) { nr.Size = SpecSize.Large; } else { nr.Size = SpecSize.Child; } nr.Comment = tb_Add_Comment.Text; nr.DateAdded = String.Format("{0:yyyy-MM-dd}", DateTime.Now); // Step 2.5 - Convert to negative CYL representation if (nr.CylOD > 0) { nr.SphereOD += nr.CylOD; nr.CylOD *= -1; nr.AxisOD = (nr.AxisOD + 90) % 180; } if (nr.CylOS > 0) { nr.SphereOS += nr.CylOS; nr.CylOS *= -1; nr.AxisOS = (nr.AxisOS + 90) % 180; } //Step 3 - Add the new SpecsRecord to the database Mydb.Insert(nr, SSTable.Current); Mydb.GetCurrentInventory(); //Refresh the displayed inventory IncrementOps(); //Increment the number of ops by 1 if the appropriate prefs are set //If the database is not normal (that is, if it is a merge database), also add the record to the //merge table and refresh it for display if (!GuiPrefs.NormalDatabase) { Mydb.Insert(nr, SSTable.MergeItems); dt_Add_MergeTable.Clear(); Mydb.GetTable(dt_Add_MergeTable, SSTable.MergeItems); } //Step 4 - Clear the entry fields and refresh the inventory Add_Clear_Controls(); //Step 5 - Highlight the new item in the DataGridView for (int j = 0; j < dgv_Add_InventoryView.Rows.Count; j++) { try { if (Convert.ToInt16(dgv_Add_InventoryView[0, j].Value) == skunew) { dgv_Add_InventoryView.Rows[j].Selected = true; if (j < 3) { dgv_Add_InventoryView.FirstDisplayedScrollingRowIndex = 0; } else { dgv_Add_InventoryView.FirstDisplayedScrollingRowIndex = j - 2; } } } catch { } } } }
/// <summary> /// Click event for the Dispense button in the Dispense tab. /// Dispenses the items corresponding to each SKU in the listbox. /// </summary> private void btn_D_Dispense_Click(object sender, EventArgs e) { SpecsRecord sr = new SpecsRecord(); int tdskus = 0; foreach (DataRow dr in dispenseTable.Rows) { //Assemble the record sr.SKU = Convert.ToUInt16(dr[0]); sr.SphereOD = Convert.ToSingle(dr[1]); sr.CylOD = Convert.ToSingle(dr[2]); sr.AxisOD = Convert.ToInt16(dr[3]); sr.AddOD = Convert.ToSingle(dr[4]); sr.SphereOS = Convert.ToSingle(dr[5]); sr.CylOS = Convert.ToSingle(dr[6]); sr.AxisOS = Convert.ToInt16(dr[7]); sr.AddOS = Convert.ToSingle(dr[8]); sr.Type = dr[9].ToString(); sr.Gender = dr[10].ToString(); sr.Size = dr[11].ToString(); sr.Tint = dr[12].ToString(); sr.DateAdded = dr[13].ToString(); sr.DateDispensed = (DateTime.Today).ToString(); sr.Comment = dr[14].ToString(); tdskus++; Mydb.Dispense(sr, true); //Dispense the record } if (tdskus > 0) { //Clean up the controls and the form. dispenseTable.Clear(); lbox_D_ToDispense.Items.Clear(); tb_D_SphereOD.Clear(); tb_D_CylOD.Clear(); tb_D_AxisOD.Clear(); tb_D_AddOD.Clear(); tb_D_SphereOS.Clear(); tb_D_CylOS.Clear(); tb_D_AxisOS.Clear(); tb_D_AddOS.Clear(); tb_D_Comment.Clear(); rb_D_NoTint.Checked = true; rb_D_LightTint.Checked = false; rb_D_DarkTint.Checked = false; rb_D_Small.Checked = true; rb_D_Medium.Checked = false; rb_D_Large.Checked = false; rb_D_Unisex.Checked = true; rb_D_Male.Checked = false; rb_D_Female.Checked = false; rb_D_Single.Checked = true; rb_D_Multi.Checked = false; tb_D_EnterSKU.Clear(); tb_D_EnterSKU.Focus(); //Reload the inventory display Mydb.GetCurrentInventory(); dt_V_DispensedTable.Clear(); Mydb.GetTable(dt_V_DispensedTable, SSTable.Dispensed); if (tdskus > 1) { MessageBox.Show(String.Format("Successfully dispensed {0} pairs of glasses.", tdskus), "Dispense Successful", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } else { MessageBox.Show("Successfully dispensed 1 pair of glasses.", "Dispense Successful", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } IncrementOps(tdskus); //Increment ops by the number of records dispensed, if the appropriate prefs are set } else { MessageBox.Show("No glasses were dispensed; no SKUs were specified.", "Dispense Unsuccessful", MessageBoxButtons.OK, MessageBoxIcon.Information); } }