public void UpdateForm() { ScannedCode sc = new ScannedCode(); string code = kodWiazkiTextbox.Text.ToUpper().Replace("PLC", "").Trim(); if (code.Length <= 8) { MessageBox.Show($"Podany kod jest za krótki ({code.Length} znaków), powinien składać się z przynajmniej 9 znaków wykluczjąc przedrostek PLC", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } string cutcode = code.Substring(0, 8); int.TryParse(code.Substring(8), out int quantity); if (quantity == 0) { MessageBox.Show("Podana ilość kabli nie jest wartością liczbową.", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } sc.SessionGUID = Guid.NewGuid(); sc.isLookingBack = lookBackCheckbox.Checked; sc.kodCiety = cutcode.TrimStart('0'); sc.kodCietyFull = cutcode; sc.sztukiSkanowane = quantity; sc.dataDostawy = dataSkanowaniaDateTime.Value; sc.DokDostawy = dokumentDostawyTextbox.Text; sc.isForcedQuantity = false; sc.isForcedOverLimit = false; sc.isForcedBackAck = false; sc.isForcedBack = false; sc.isForcedInsert = false; sc.isForcedUndeclared = false; sc.isForcedOverDeclared = false; sc.User = userIdTextBox.Text; sc.missingEntries = new List <MissingBackwards>(); CustomPacket cp = new CustomPacket(FlagType.basic, HeaderTypes.basic, "scan", null, sc); CustomPacket response = _client.SendReceiveMessage(cp); bool shouldExit = false; while (response.Header == HeaderTypes.error) { if (response.Flag == FlagType.notInTech) { MyMessageBox.CreateDialog("Kod nie znaleziony w bazie technicznych", MessageBoxButtons.OK).ShowDialog(); shouldExit = true; } else if (response.Flag == FlagType.quantityIncorrect) { Form form = MyMessageBox.CreateDialog($"Deklarowana ilość ({response.Args[0]}) nie zgadza się ze zeskanowaną {quantity} (aktualnie zeskanowanych: {response.Args[1]}), komplet na dziś {response.Args[2]}, różnica: {response.Args[3]}, zatwierdź, zmień lub kliknij \"Nie\" by anulować.", MessageBoxButtons.YesNo); TextBox txBox = new TextBox(); txBox.Location = new Point(10, 220); txBox.Font = new Font(FontFamily.GenericSansSerif, 16); txBox.Size = new Size(form.Size.Width, 50); txBox.Text = quantity.ToString(); txBox.Name = "quantitytextbox"; form.Controls.Add(txBox); if (form.ShowDialog() == DialogResult.Yes) { sc.sztukiSkanowane = int.Parse((((TextBox)form.Controls.Find("quantitytextbox", false).First()).Text)); sc.isForcedQuantity = true; sc.isForcedOverDeclared = true; response = _client.SendReceiveMessage(cp); } else { shouldExit = true; } } else if (response.Flag == FlagType.quantityOverDeclated) { Form form = MyMessageBox.CreateDialog($"Deklarowana ilość ({response.Args[0]}) zgadza się ze zeskanowaną {quantity} (aktualnie zeskanowanych: {response.Args[1]}), ale nie z kompletem na dziś ({response.Args[2]}), różnica: {response.Args[3]}, zatwierdź, zmień lub kliknij \"Nie\" by anulować.", MessageBoxButtons.YesNo); TextBox txBox = new TextBox(); txBox.Location = new Point(10, 220); txBox.Font = new Font(FontFamily.GenericSansSerif, 16); txBox.Size = new Size(form.Size.Width, 50); txBox.Text = quantity.ToString(); txBox.Name = "quantitytextbox"; form.Controls.Add(txBox); if (form.ShowDialog() == DialogResult.Yes) { sc.sztukiSkanowane = int.Parse((((TextBox)form.Controls.Find("quantitytextbox", false).First()).Text)); sc.isForcedOverDeclared = true; sc.isForcedQuantity = true; response = _client.SendReceiveMessage(cp); } else { shouldExit = true; } } else if (response.Flag == FlagType.quantityOverLimit) { if (MyMessageBox.CreateDialog($"Po dodaniu rekordu ilość przewodów przekroczy deklarowaną ilość ({response.Args[1]}) do ({response.Args[0]}), kontynuować?", MessageBoxButtons.YesNo).ShowDialog() == DialogResult.Yes) { sc.isForcedOverLimit = true; response = _client.SendReceiveMessage(cp); } else { shouldExit = true; } } else if (response.Flag == FlagType.codeFitsBack) { ((ScannedCode)cp.Payload).missingEntries = ((ScannedResponse)response.Payload).missingEntries; AcceptChanges AC = new AcceptChanges(((ScannedCode)cp.Payload).missingEntries); AC.ShowDialog(); response = _client.SendReceiveMessage(cp); } else if (response.Flag == FlagType.codeExists) { if (MyMessageBox.CreateDialog("Kod został dziś zeskanowany, upewnij się że zeskanowałeś poprawny kod, dodać do bazy?", MessageBoxButtons.YesNo).ShowDialog() == DialogResult.Yes) { sc.isForcedInsert = true; response = _client.SendReceiveMessage(cp); } else { shouldExit = true; } } else if (response.Flag == FlagType.codeExistsBack) { if (MyMessageBox.CreateDialog("Kod został dziś zeskanowany i dodany wstecz, upewnij się że zeskanowałeś poprawny kod, dodać do bazy?", MessageBoxButtons.YesNo).ShowDialog() == DialogResult.Yes) { sc.isForcedInsert = true; response = _client.SendReceiveMessage(cp); } else { shouldExit = true; } } else if (response.Flag == FlagType.notInDeclared) { if (MyMessageBox.CreateDialog("Kod nie znaleziony w dokumencie dostawy, dodać mimo to?", MessageBoxButtons.YesNo).ShowDialog() == DialogResult.Yes) { sc.isForcedUndeclared = true; response = _client.SendReceiveMessage(cp); } else { shouldExit = true; } } else if (response.Flag == FlagType.isKanban) { MyMessageBox.CreateDialog("Zeskanowany kod należy do przewodu KanBan.", MessageBoxButtons.OK).ShowDialog(); shouldExit = true; } else if (response.Flag == FlagType.isDeleted) { MyMessageBox.CreateDialog("Zeskanowany kod nie powinien być już skanowany, został on usunięty z bazy technicznych.", MessageBoxButtons.OK).ShowDialog(); shouldExit = true; } if (shouldExit) { break; } } kodWiazkiTextbox.SelectAll(); kodWiazkiTextbox.Text = ""; kodWiazkiTextbox.Focus(); ScannedResponse sr = (ScannedResponse)response.Payload; ciety_label.Text = sr.PrzewodCiety; bin_label.Text = sr.BIN; kodwiazki_label.Text = sr.KodWiazki; litera_label.Text = sr.LiteraRodziny; zeskanowane_label.Text = $"{sr.numScannedToComplete}/{sr.numToComplete}"; ilosc_label.Text = $"{sr.sztukiSkanowane}/{sr.sztukiDeklatowane}"; nrKompletuLabel.Text = sr.numerKompletu.ToString(); if (sr.isComplete == true) { komplet_label.Text = "Komplet: Tak"; komplet_label.ForeColor = Color.Green; panel1.BackColor = Color.FromArgb(192, 255, 192); } else { panel1.BackColor = Color.FromArgb(255, 192, 192); komplet_label.Text = "Komplet: Nie"; komplet_label.ForeColor = Color.Red; } if (sr.isSpecialColor) { panel1.BackColor = Color.FromArgb(117, 220, 255); } datadostawystara_label.Text = sr.DataDostawy.ToShortDateString(); datadostawynowa_label.Text = sr.DataDostawyOld.ToShortDateString(); if (sr.DataDostawyOld.Date < sr.DataDostawy.Date) { zalegle_label.Visible = true; } else { zalegle_label.Visible = false; } _ = _client.SendReceiveMessage(new CustomPacket(FlagType.basic, HeaderTypes.basic, "disposeCache", null, sc.SessionGUID)); if (sr.Print) { Etykieta etykieta = new Etykieta( sr.Rodzina, sr.LiteraRodziny, sr.KodWiazki, sr.numToComplete, sr.numerKompletu, sr.Wiazka, sr.BIN, sr.DataDostawyOld, sr.sztukiDeklatowane); etykieta.Show(); etykieta.Print(printersComboBox.Text, paperSizeComboBox.SelectedIndex); } }
public async Task <ActionResult <ScannedResponse> > GetTech( string sessionGUID, string kodWiazkiTextbox, int forcedQuantity, bool isLookingBack, int dostDay, int dostMonth, int dostYear, string dokDostawy, bool isForcedQuantity, bool isForcedOverLimit, bool isForcedBackAck, bool isForcedBack, bool isForcedInsert, bool isForcedUndeclared, bool isForcedOverDeclared, string User ) { // STO72301 210793 var scan = _db.ScanCache.Find(Guid.Parse(sessionGUID)); if (scan == null) { await _db.ScanCache.AddAsync(new ScanCache { ScanCacheId = Guid.Parse(sessionGUID) }); await _db.SaveChangesAsync(); scan = _db.ScanCache.Find(Guid.Parse(sessionGUID)); } VTInsertFunctions VTFuncs = new VTInsertFunctions(_db, scan); ScannedResponse response = new ScannedResponse(); ScannedCode sc = new ScannedCode(); sc.kodCietyFull = kodWiazkiTextbox.ToUpper().Replace("PLC", "").Trim().Substring(0, 8); if (forcedQuantity == 0) { sc.sztukiSkanowane = int.Parse(kodWiazkiTextbox.ToUpper().Replace("PLC", "").Trim().Substring(8)); } else { sc.sztukiSkanowane = forcedQuantity; } sc.kodCiety = sc.kodCietyFull.TrimStart('0'); sc.isLookingBack = isLookingBack; sc.dataDostawy = new DateTime(dostYear, dostMonth, dostDay); sc.DokDostawy = dokDostawy; sc.isForcedQuantity = isForcedQuantity; sc.isForcedOverLimit = isForcedOverLimit; sc.isForcedBackAck = isForcedBackAck; sc.isForcedBack = isForcedBack; sc.isForcedInsert = isForcedInsert; sc.isForcedUndeclared = isForcedUndeclared; sc.isForcedOverDeclared = isForcedOverDeclared; sc.User = User; sc.Declared = false; sc.complete = false; sc.isFullSet = false; sc.addedBefore = false; sc.dataDostawyOld = DateTime.MinValue; sc.dataDoskanowania = DateTime.Now; sc.dataUtworzenia = DateTime.Now; response.Args = new List <string>(); response.sztukiSkanowane = sc.sztukiSkanowane; var techEntry = _db.Technical.IgnoreQueryFilters().FirstOrDefault(c => c.PrzewodCiety == sc.kodCiety); if (techEntry == null) { if (_db.MissingFromTech.Find(sc.kodCiety) == null) { _db.MissingFromTech.Add(new MissingFromTech { DataDodania = sc.dataDoskanowania, Kod = sc.kodCiety, User = sc.User }); _db.SaveChanges(); } response.Header = HeaderTypes.error; response.Flag = FlagType.notInTech; return(response); } else if (techEntry.Deleted == true) { response.Header = HeaderTypes.error; response.Flag = FlagType.isDeleted; return(response); } else if (techEntry.KanBan == true) { if (_db.ScannedKanbans.FirstOrDefault(c => c.Kod == sc.kodCiety && c.Wiazka == techEntry.Wiazka) == null) { _db.ScannedKanbans.Add(new ScannedKanban { DataDodania = sc.dataDoskanowania, Kod = sc.kodCiety, Wiazka = techEntry.Wiazka, User = sc.User }); _db.SaveChanges(); } response.Header = HeaderTypes.error; response.Flag = FlagType.isKanban; return(response); } sc.Wiazka = techEntry.Wiazka; sc.Rodzina = techEntry.Rodzina; sc.BIN = techEntry.BIN; response.PrzewodCiety = techEntry.PrzewodCiety; response.BIN = techEntry.BIN; response.KodWiazki = techEntry.KodWiazki; response.LiteraRodziny = techEntry.LiterRodziny; response.IlePrzewodow = techEntry.IlePrzewodow; var dostawaEntry = _db.Dostawa.FirstOrDefault(c => c.Data.Date == sc.dataDostawy.Date && c.Kod == "PLC" + sc.kodCietyFull); if (dostawaEntry != null) { sc.dataDostawy = dostawaEntry.Data; sc.dataDostawyOld = dostawaEntry.Data; //sc.isFullSet = VTFuncs.CheckIfFullSetOfSupply(sc); sc.sztukiDeklarowane = dostawaEntry.Ilosc; sc.Declared = true; // if codes to complete set are missing check back if (sc.sztukiSkanowane == sc.sztukiDeklarowane) { var sets = _db.VTMagazyn.Where(c => c.Wiazka == sc.Wiazka && c.DataDostawy.Date == sc.dataDostawyOld.Date).ToList(); var deliveries = _db.Dostawa.Include(c => c.Technical).Where(c => c.Technical.Wiazka == sc.Wiazka && c.Data.Date == sc.dataDostawyOld.Date).ToList(); int declared = VTFuncs.GetPossibleDeclaredValue(sc, sets, deliveries, sc.NumerKompletu); if (sc.sztukiSkanowane != declared && !sc.isForcedOverDeclared) { response.Header = HeaderTypes.error; response.Flag = FlagType.quantityOverDeclated; response.Args.Add(sc.sztukiDeklarowane.ToString()); response.Args.Add(VTFuncs.GetScannedForDay(sc, sets).ToString()); response.Args.Add(declared.ToString()); response.Args.Add($"{declared - sc.sztukiSkanowane}"); return(response); } else { if (!VTFuncs.CheckBackOrAdd(response, techEntry, sc, dostawaEntry)) { return(response); } } } else if (sc.sztukiSkanowane != sc.sztukiDeklarowane) { if (!sc.isForcedQuantity) { response.Header = HeaderTypes.error; response.Flag = FlagType.quantityIncorrect; response.Args.Add(sc.sztukiDeklarowane.ToString()); var sets = _db.VTMagazyn.Where(c => c.Wiazka == sc.Wiazka && c.DataDostawy.Date == sc.dataDostawyOld.Date).ToList(); var deliveries = _db.Dostawa.Include(c => c.Technical).Where(c => c.Technical.Wiazka == sc.Wiazka && c.Data.Date == sc.dataDostawyOld.Date).ToList(); int declared = VTFuncs.GetPossibleDeclaredValue(sc, sets, deliveries, sc.NumerKompletu); response.Args.Add(VTFuncs.GetScannedForDay(sc, sets).ToString()); response.Args.Add(declared.ToString()); response.Args.Add($"{declared - sc.sztukiSkanowane}"); return(response); } else { if (!VTFuncs.CheckBackOrAddQuantityIncorrect(response, techEntry, sc, dostawaEntry)) { return(response); } } } } else { sc.dataDostawy = sc.dataDostawy.Date; sc.dataDostawyOld = sc.dataDostawy.Date; if (!sc.isForcedUndeclared) { response.Header = HeaderTypes.error; response.Flag = FlagType.notInDeclared; return(response); } else { if (!sc.isForcedQuantity) { response.Header = HeaderTypes.error; response.Flag = FlagType.quantityIncorrect; response.Args.Add("0"); var sets = _db.VTMagazyn.Where(c => c.Wiazka == sc.Wiazka && c.DataDostawy.Date == sc.dataDostawyOld.Date).ToList(); var deliveries = _db.Dostawa.Include(c => c.Technical).Where(c => c.Technical.Wiazka == sc.Wiazka && c.Data.Date == sc.dataDostawyOld.Date).ToList(); int declared = VTFuncs.GetPossibleDeclaredValue(sc, sets, deliveries, sc.NumerKompletu); response.Args.Add(VTFuncs.GetScannedForDay(sc, sets).ToString()); response.Args.Add(declared.ToString()); response.Args.Add($"{declared - sc.sztukiSkanowane}"); return(response); } else { if (!VTFuncs.CheckBackOrAddQuantityIncorrect(response, techEntry, sc, dostawaEntry)) { return(response); } } } } _db.SaveChanges(); bool isComplete = VTFuncs.checkComplete(sc, out int numToComplete, out int numScanned, out int numScannedToComplete); response.DataDostawy = sc.dataDostawy; response.DataDostawyOld = sc.dataDostawyOld; response.numToComplete = numToComplete; response.numScanned = numScanned; response.numScannedToComplete = numScannedToComplete; response.isComplete = isComplete; response.sztukiDeklatowane = sc.sztukiDeklarowane; response.numerKompletu = sc.NumerKompletu; response.Wiazka = sc.Wiazka; response.Rodzina = sc.Rodzina; response.sztukiSkanowane = sc.sztukiSkanowane; if (numScanned == 1) { response.print = true; response.isSpecialColor = false; } if (VTFuncs.shouldPrintSpecial(sc)) { response.print = true; response.isSpecialColor = true; } return(response); }
protected CustomPacket Scan(CustomPacket packet) { using (var _db = new ZEMDBContext()) { ScannedCode sc = (ScannedCode)packet.Payload; var scan = _db.ScanCache.Find(sc.SessionGUID); if (scan == null) { _db.ScanCache.Add(new ScanCache { ScanCacheId = sc.SessionGUID }); _db.SaveChanges(); scan = _db.ScanCache.Find(sc.SessionGUID); } VTInsertFunctions VTFuncs = new VTInsertFunctions(_db, _log, scan); ScannedResponse sr = new ScannedResponse(); CustomPacket response = new CustomPacket(FlagType.basic, HeaderTypes.basic, "scan", new List<string>(), sr); // 23102720A sc.Declared = false; sc.complete = false; sc.isFullSet = false; sc.addedBefore = false; sc.dataDostawyOld = DateTime.MinValue; sc.dataDoskanowania = DateTime.Now; sc.dataUtworzenia = DateTime.Now; sr.missingEntries = new List<MissingBackwards>(); var techEntry = _db.Technical.IgnoreQueryFilters().FirstOrDefault(c => c.PrzewodCiety == sc.kodCiety); if (techEntry == null) { if (_db.MissingFromTech.Find(sc.kodCiety) == null) { _db.MissingFromTech.Add(new MissingFromTech { DataDodania = sc.dataDoskanowania, Kod = sc.kodCiety, User = sc.User }); _db.SaveChanges(); } response.Header = HeaderTypes.error; response.Flag = FlagType.notInTech; return response; } else if (techEntry.Deleted == true) { response.Header = HeaderTypes.error; response.Flag = FlagType.isDeleted; return response; } else if (techEntry.KanBan == true) { if (_db.ScannedKanbans.FirstOrDefault(c => c.Kod == sc.kodCiety && c.Wiazka == techEntry.Wiazka) == null) { _db.ScannedKanbans.Add(new ScannedKanban { DataDodania = sc.dataDoskanowania, Kod = sc.kodCiety, Wiazka = techEntry.Wiazka, User = sc.User }); _db.SaveChanges(); } response.Header = HeaderTypes.error; response.Flag = FlagType.isKanban; return response; } sc.Wiazka = techEntry.Wiazka; sc.Rodzina = techEntry.Rodzina; sc.BIN = techEntry.BIN; sr.PrzewodCiety = techEntry.PrzewodCiety; sr.BIN = techEntry.BIN; sr.KodWiazki = techEntry.KodWiazki; sr.LiteraRodziny = techEntry.LiterRodziny; sr.IlePrzewodow = techEntry.IlePrzewodow; var dostawaEntry = _db.Dostawa.FirstOrDefault(c => c.Data.Date == sc.dataDostawy.Date && c.Kod == "PLC" + sc.kodCietyFull); if (dostawaEntry != null) { sc.dataDostawy = dostawaEntry.Data; sc.dataDostawyOld = dostawaEntry.Data; sc.sztukiDeklarowane = dostawaEntry.Ilosc; sc.Declared = true; if (sc.sztukiSkanowane == sc.sztukiDeklarowane) { var sets = _db.VTMagazyn.Where(c => c.Wiazka == sc.Wiazka && c.DataDostawy.Date == sc.dataDostawyOld.Date).ToList(); var deliveries = _db.Dostawa.Include(c => c.Technical).Where(c => c.Technical.Wiazka == sc.Wiazka && c.Data.Date == sc.dataDostawyOld.Date).ToList(); int declared = VTFuncs.GetPossibleDeclaredValue(sc, sets, deliveries, sc.NumerKompletu); if (sc.sztukiSkanowane != declared && !sc.isForcedOverDeclared) { response.Header = HeaderTypes.error; response.Flag = FlagType.quantityOverDeclated; response.Args.Add(sc.sztukiDeklarowane.ToString()); response.Args.Add(VTFuncs.GetScannedForDay(sc, sets).ToString()); response.Args.Add(declared.ToString()); response.Args.Add($"{declared - sc.sztukiSkanowane}"); return response; } else { if (!VTFuncs.CheckBackOrAdd(response, techEntry, sc, dostawaEntry)) return response; } } else if (sc.sztukiSkanowane != sc.sztukiDeklarowane) { if (!sc.isForcedQuantity) { response.Header = HeaderTypes.error; response.Flag = FlagType.quantityIncorrect; response.Args.Add(sc.sztukiDeklarowane.ToString()); var sets = _db.VTMagazyn.Where(c => c.Wiazka == sc.Wiazka && c.DataDostawy.Date == sc.dataDostawyOld.Date).ToList(); var deliveries = _db.Dostawa.Include(c => c.Technical).Where(c => c.Technical.Wiazka == sc.Wiazka && c.Data.Date == sc.dataDostawyOld.Date).ToList(); int declared = VTFuncs.GetPossibleDeclaredValue(sc, sets, deliveries, sc.NumerKompletu); response.Args.Add(VTFuncs.GetScannedForDay(sc, sets).ToString()); response.Args.Add(declared.ToString()); response.Args.Add($"{declared - sc.sztukiSkanowane}"); return response; } else { if (!VTFuncs.CheckBackOrAddQuantityIncorrect(response, techEntry, sc, dostawaEntry)) return response; } } } else { sc.dataDostawy = sc.dataDostawy.Date; sc.dataDostawyOld = sc.dataDostawy.Date; if (!sc.isForcedUndeclared) { response.Header = HeaderTypes.error; response.Flag = FlagType.notInDeclared; return response; } else { if (!sc.isForcedQuantity) { response.Header = HeaderTypes.error; response.Flag = FlagType.quantityIncorrect; response.Args.Add("0"); var sets = _db.VTMagazyn.Where(c => c.Wiazka == sc.Wiazka && c.DataDostawy.Date == sc.dataDostawyOld.Date).ToList(); var deliveries = _db.Dostawa.Include(c => c.Technical).Where(c => c.Technical.Wiazka == sc.Wiazka && c.Data.Date == sc.dataDostawyOld.Date).ToList(); int declared = VTFuncs.GetPossibleDeclaredValue(sc, sets, deliveries, sc.NumerKompletu); response.Args.Add(VTFuncs.GetScannedForDay(sc, sets).ToString()); response.Args.Add(declared.ToString()); response.Args.Add($"{declared - sc.sztukiSkanowane}"); return response; } else { if (!VTFuncs.CheckBackOrAddQuantityIncorrect(response, techEntry, sc, dostawaEntry)) return response; } } } _db.SaveChanges(); bool isComplete = VTFuncs.checkComplete(sc, out int numToComplete, out int numScanned, out int numScannedToComplete); sr.DataDostawy = sc.dataDostawy; sr.DataDostawyOld = sc.dataDostawyOld; sr.numToComplete = numToComplete; sr.numScanned = numScanned; sr.numScannedToComplete = numScannedToComplete; sr.isComplete = isComplete; sr.sztukiDeklatowane = sc.sztukiDeklarowane; sr.numerKompletu = sc.NumerKompletu; sr.Wiazka = sc.Wiazka; sr.Rodzina = sc.Rodzina; sr.sztukiSkanowane = sc.sztukiSkanowane; if (numScanned == 1) { sr.Print = true; sr.isSpecialColor = false; } if (VTFuncs.shouldPrintSpecial(sc)) { sr.Print = true; sr.isSpecialColor = true; } _log.Information("Scan details: {@sc}", sc); _log.Information("Response details: {@sr}", sr); return response; } }