示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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;
            }
        }