Ejemplo n.º 1
0
        public async Task <ActionResult <List <string> > > GetMissing(string przewod, int year, int month, int day)
        {
            VTInsertFunctions vTInsert = new VTInsertFunctions(_db, null);
            string            cutcode  = przewod;

            List <string> missingCodes = new List <string>();
            DateTime      deliveryDate = new DateTime(year, month, day);

            var techEntry = _db.Technical.FirstOrDefault(c => c.PrzewodCiety == cutcode);

            if (techEntry == null)
            {
                return(missingCodes);
            }
            else if (techEntry.KanBan)
            {
                return(missingCodes);
            }
            var wiazka = techEntry.Wiazka;
            var SetIDs = vTInsert.GetSetIDsForBundle(new ScannedCode {
                Wiazka = wiazka, dataDostawyOld = deliveryDate
            });

            if (SetIDs.Count() == 0)
            {
                SetIDs.Add(0);
            }

            var deliveries = await _db.Dostawa.IgnoreQueryFilters().AsNoTracking().Include(c => c.Technical).Where(c => c.Technical.Wiazka == wiazka &&
                                                                                                                   c.Data.Date == deliveryDate.Date).ToListAsync();

            var scans = await _db.VTMagazyn.AsNoTracking().Where(c => c.Wiazka == wiazka && c.DataDostawy.Date == deliveryDate.Date).ToListAsync();

            foreach (int setNumber in SetIDs)
            {
                var codesForWiazka = _db.Technical.Where(c => c.Wiazka == wiazka && c.KanBan == false).Select(c => c.PrzewodCiety).ToList();
                var scannedCodes   = scans.Where(c => c.NumerKompletu == setNumber).Select(c => c.KodCiety).ToList();
                if (scannedCodes.Count() == 0)
                {
                    return(missingCodes);
                }


                missingCodes.Add($"Brakujące kody dla wiązki {wiazka} komplet nr. {setNumber} po {vTInsert.GetPossibleDeclaredValue(new ScannedCode { kodCiety = cutcode, Wiazka = wiazka, dataDostawyOld = deliveryDate }, scans, deliveries, setNumber)}");
                missingCodes.AddRange(codesForWiazka.Except(scannedCodes).ToList());
            }

            return(missingCodes);
        }
Ejemplo n.º 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);
        }