private void Track_FGPartComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { Track_FGPartImage.DataContext = null; ComboBox PartsCombobox = (ComboBox)sender; DisplayParts.Clear(); FGPart fgpart = (FGPart)PartsCombobox.SelectedItem; if (fgpart == null) { return; } using (var db = new MTSDB()) { var parts = from p in db.FGParts where p.PartNo == fgpart.PartNo select p; FGPart P = parts.SingleOrDefault(); if (P == null) { MessageBox.Show("FG Part Not Found !! Please Verify", "Database Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } fgpart = P; fgpart.ImageReference = "./Images/" + fgpart.PartNo + ".png"; Track_FGPartImage.DataContext = fgpart; } }
private void FGPart_SelectionChanged(object sender, SelectionChangedEventArgs e) { AutoCompleteBox a = sender as AutoCompleteBox; DisplayParts.Clear(); FGPart part = (FGPart)a.SelectedItem; if (part == null) { return; } using (var db = new MTSDB()) { var P = db.FGParts.Where(p => p.PartNo == part.PartNo).SingleOrDefault(); if (P == null) { MessageBox.Show(" Part Not Found !! Please Verify", "Database Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } part = P; part.ImageReference = "./Images/" + part.PartNo + ".png"; FGImage.DataContext = part; } }
private void FG_UpdateButton_Click(object sender, RoutedEventArgs e) { this.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { FG_ShortageGrid.Visibility = Visibility.Collapsed; })); List <ShortagePart> shortageParts = new List <ShortagePart>(); if (FG_PartComboBox.SelectedItem == null) { return; } FGPart fgpart = (FGPart)FG_PartComboBox.SelectedItem; if (fgpart == null) { return; } String FGRef = FG_RefTextBox.Text; if (FGRef == String.Empty || FGRef == null) { MessageBox.Show("FG Reference Required !!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (FG_AcceptedTextBox.Text != fgpart.PartNo) { MessageBox.Show("FG Part No Mismatch. Please Verify ", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } using (var db = new MTSDB()) { var FGEntry = (from p in db.FGs where p.FGRef == FGRef select p).SingleOrDefault(); if (FGEntry != null) { MessageBox.Show("FG Already Completed. Please Verify Reference No", "Update Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } var fgparts = from p in db.FGParts where p.PartNo == fgpart.PartNo select p; FGPart FGP = fgparts.SingleOrDefault(); if (FGP == null) { MessageBox.Show("FG Part Not Found !! Please Verify", "Database Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } int qty = 0; if (int.TryParse(FG_QuantityTextBox.Text, out qty) == false || (qty == 0)) { MessageBox.Show("Please Verify Quantity", "Alert", MessageBoxButton.OK, MessageBoxImage.Exclamation); return; } var bom = (from p in db.BOMs where p.FGPartID == fgpart.FGPartID select p).ToList(); DateTime?tlTs = DateTime.Now; int shift = 0; if (tlTs.Value.TimeOfDay >= new TimeSpan(14, 00, 0) && tlTs.Value.TimeOfDay < new TimeSpan(22, 00, 0)) { shift = 2; } else if (tlTs.Value.TimeOfDay >= new TimeSpan(22, 00, 0) && tlTs.Value.TimeOfDay < new TimeSpan(6, 00, 0)) { shift = 3; } else { shift = 1; } foreach (BOM b in bom) { FG fgEntry = new FG(); fgEntry.FGPart = FGP; fgEntry.EntryTimestamp = tlTs; fgEntry.JulianDate = tlTs.Value.DayOfYear; var part = (from prt in db.Parts where prt.PartID == b.PartID select prt).SingleOrDefault(); fgEntry.Part = part; fgEntry.Shift = shift; fgEntry.Quantity = (int)(b.PartQuantity.Value * qty); fgEntry.FGRef = FGRef; var toline = (from tl in part.ToLineRecords where (tl.Timestamp <= tlTs) && tl.Balance > 0 select tl).OrderBy(l => l.Timestamp).ToList(); int?FGQty = fgEntry.Quantity; int totalPartQuantity = 0; foreach (ToLine l in toline) { totalPartQuantity += l.Balance.Value; } if (totalPartQuantity < FGQty) { shortageParts.Add(new ShortagePart { PartNo = fgEntry.Part.PartNo, Description = fgEntry.Part.Description, LineQuantity = totalPartQuantity, RequiredQuantity = (FGQty - totalPartQuantity).Value }); } foreach (ToLine l in toline) { if (FGQty > 0) { if (l.Balance >= FGQty) { l.Balance -= FGQty; l.FGs.Add(fgEntry); break; } else { FGQty -= l.Balance; l.Balance = 0; l.FGs.Add(fgEntry); } } } part.FGRecords.Add(fgEntry); } if (shortageParts.Count > 0) { FG_ShortageGrid.DataContext = shortageParts; MessageBox.Show("Parts Shortage for FG Update" + Environment.NewLine + "Unable to Update FG , Please Verify", "Update Error", MessageBoxButton.OK, MessageBoxImage.Error); this.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { FG_ShortageGrid.Visibility = Visibility.Visible; })); return; } FG Fg = new FG(); Fg.FGPart = FGP; Fg.EntryTimestamp = tlTs; Fg.JulianDate = tlTs.Value.DayOfYear; Fg.Shift = shift; Fg.Quantity = qty; Fg.FGRef = FG_RefTextBox.Text; db.FGs.Add(Fg); db.SaveChanges(); MessageBox.Show("FG Updated", "Information", MessageBoxButton.OK, MessageBoxImage.Information); } }