Пример #1
0
        public static HashSet <string> GetSearchKeywords(this NewWhlSku item)
        {
            var hash = new HashSet <string>
            {
                item.Sku,
                item.NewData.GS1Barcode,
                item.ShortSku,
                item.ShortSku.Substring(2),
                item.Titles.Label,
                item.Titles.Invoice
            };

            foreach (var supp in item.Suppliers)
            {
                hash.Add(supp.SupplierCode);
                foreach (var value in supp.BarcodeDictionary.Values)
                {
                    hash.Add(value);
                }
            }
            foreach (var shelf in item.Locations)
            {
                hash.Add(shelf.ShelfName);
            }
            if (!item.ExtendedData.IsBundle)
            {
                return(hash);
            }

            foreach (var compBarcode in item.BundleData.CompositionSearchKeywords)
            {
                hash.Add(compBarcode);
            }
            return(hash);
        }
Пример #2
0
        public static List <NewSkuSupplier> GetSuppliers(this NewWhlSku item, whldataContext context)
        {
            var returnable = new List <NewSkuSupplier>();
            IEnumerable <SkuSupplierdata> supplierData =
                context.SkuSupplierdata.Where(x => x.Sku == item.ShortSku && x.Invisible == "False");

            foreach (var supplier in supplierData)
            {
                var supp = new NewSkuSupplier
                {
                    SupplierName      = supplier.SupplierName,
                    SupplierCode      = supplier.SupplierCode,
                    BarcodeDictionary = new Dictionary <string, string>
                    {
                        { "Item", supplier.SupplierBarcode },
                        { "Inner", supplier.SupplierCaseInnerBarcode },
                        { "Outer", supplier.SupplierCaseBarcode },
                        { "Reorder", supplier.SupplierCode }
                    }
                };
                float.TryParse(supplier.SupplierPricePer, out supp.SupplierPrice);
                bool.TryParse(supplier.IsPrimary, out supp.SupplierIsPrimary);
                bool.TryParse(supplier.IsDiscontinued, out supp.SupplierIsDiscontinued);
                bool.TryParse(supplier.IsOutOfStock, out supp.SupplierOutOfStock);

                returnable.Add(supp);
            }
            return(returnable);
        }
Пример #3
0
        public static void GetMissedPicksAndIssues(this NewWhlSku item, List <WarehouseIssueLog> issueLogs)
        {
            //var picks = context.Locationaudit.Count(x => x.AuditEvent == 4 && x.ShortSku == item.ShortSku && x.DateOfEvent >= DateTime.Now.AddDays(-56));
            item.NewData.PicksPerWeek = 0; //Convert.ToInt32(Math.Ceiling(0/8.0m));
            var issues  = issueLogs.Where(x => x.Sku.Substring(0, 7) == item.ShortSku && DateTime.Parse(x.DateReported) >= DateTime.Now.Date.AddDays(-56)).ToList();
            var misPick = new MispickStatistic
            {
                CantFinds = issues.Count(x => x.IssueType == "_CantFind"),
                Prepacks  = issues.Count(x => x.IssueType == "_Prepack")
            };

            item.NewData.MissedPicks = misPick;
        }
Пример #4
0
        public static SkuSalesData GetSkuSalesData(this NewWhlSku item, whldataContext context)
        {
            var results = context.Salesdata.First(x => x.Sku == item.Sku);

            return(new SkuSalesData
            {
                Avg1 = int.Parse(results.Avg1Week.ToString()),
                Avg4 = Convert.ToInt32(results.Avg4Week.ToString()),
                Avg8 = Convert.ToInt32(results.Avg8Week.ToString()),
                Raw1 = Convert.ToInt32(results.Raw1WeekTotal.ToString()),
                Raw4 = Convert.ToInt32(results.Raw4WeekTotal.ToString()),
                Raw8 = Convert.ToInt32(results.Raw8WeekTotal.ToString()),
                Weighted = Convert.ToInt32(results.Weighted8Week.ToString())
            });
        }
Пример #5
0
        public static void UpdateOrderwiseData(this NewWhlSku item, whldataContext context)
        {
            var owData = context.OrderwiseData.FirstOrDefault(x => x.Sku == item.Sku);

            if (owData == null)
            {
                return;
            }
            Enum.TryParse(owData.OwPostaltype, out item.NewData.NewPostalType);
            decimal.TryParse(owData.OwWeight.ToString(), out item.ItemData.Weight);
            bool.TryParse(owData.OwIsprepackfinalfinal, out item.NewData.IsPackdown);
            bool.TryParse(owData.Sys2IsPrepack.ToString(), out item.NewData.IsPrepack);
            item.NewData.PickingMaximum = 0;
            item.NewData.PickingMinimum = 0;
            item.RetailPrice            = Convert.ToDecimal(owData.Guideprice);
            item.PriceData.Retail       = Convert.ToDecimal(owData.Guideprice);
        }
Пример #6
0
        public static SkuPrepackInfo GetSkuPrepackInfo(this NewWhlSku item, whldataContext context)
        {
            var result = context.Prepacklist.FirstOrDefault(x => x.Sku == item.Sku);

            if (result == null)
            {
                return(new SkuPrepackInfo());
            }
            else
            {
                return(new SkuPrepackInfo
                {
                    Bag = result.Bag,
                    Notes = result.Notes
                });
            }
        }
Пример #7
0
        public static SkuBundleData GetSkuBundleInfo(this NewWhlSku item, whldataContext context, Whlnew baseData, bool isNewSku = false)
        {
            if (!item.ExtendedData.IsBundle)
            {
                return(new SkuBundleData());                                                       //It's not a bundle return a default collection
            }
            var compositionSkus = context.SkuComposition.Where(x => x.BundleSku == item.ShortSku); //Find all the skus in the bundle

            var returnable = new SkuBundleData();

            bool.TryParse(baseData.SplitBundle, out returnable.SplitBundle);

            var locData = new List <LocationData>();

            locData.AddRange(item.Locations);

            foreach (var sku in compositionSkus)
            {
                returnable.CompositionSkus.Add(sku.ChildSku);

                var data            = context.Whlnew.First(x => x.Sku == sku.ChildSku);
                var recursiveSearch = !context.SkuComposition.Any(x => x.BundleSku == sku.ChildSku.Substring(0, 7));

                var newItem = CreateSku(data, new List <WarehouseIssueLog>(), recursiveSearch).Result;

                foreach (var barcode in newItem.Barcodes)
                {
                    returnable.CompositionBarcodes.Add(barcode);
                }

                foreach (var keyword in newItem.SearchKeywords)
                {
                    returnable.CompositionSearchKeywords.Add(keyword);
                }

                locData.AddRange(newItem.Locations);
            }
            if (isNewSku)
            {
                item.Locations.Clear();
                item.Locations.AddRange(locData);
            }
            return(returnable);
        }
Пример #8
0
        public static List <LocationData> GetShortSkuLocations(this NewWhlSku item, whldataContext context)
        {
            var returnable = new List <LocationData>();

            var rows = from x in context.ShortskuLocations
                       join locRef in context.Locationreference on x.LocationId equals locRef.LocId
                       where x.Shortsku == item.ShortSku
                       select new
            {
                Id         = x.Id,
                Shelfname  = x.Shelfname,
                ShortSku   = x.Shortsku,
                LocationId = x.LocationId,
                Warehouse  = locRef.LocWarehouse,
                PickRoute  = locRef.RouteId,
                StockLevel = x.StockLevel,
                locRef.LocType
            };                        //Selects the required types from the database

            foreach (var row in rows) //Iterates through and adds them back to the collection
            {
                var location = new LocationData
                {
                    SkuLocationId       = row.Id,
                    ShelfName           = row.Shelfname,
                    Sku                 = row.ShortSku,
                    LocationReferenceId = row.LocationId,
                    LocationWarehouse   = ((Warehouse)row.Warehouse).ToString(),
                    LocWarehouse        = (Warehouse)row.Warehouse,
                    PickRoute           = row.PickRoute,
                    LocType             = (LocationType)row.LocType
                };
                returnable.Add(location);
            }


            return(returnable);
        }
Пример #9
0
        public static List <string> GetSkuBarcodes(this NewWhlSku item)
        {
            var hash = new HashSet <string>
            {
                item.Sku,
                item.NewData.GS1Barcode
            };

            foreach (var supp in item.Suppliers)
            {
                hash.Add(supp.BarcodeDictionary["Item"]);
            }
            if (!item.ExtendedData.IsBundle)
            {
                return(hash.ToList());
            }

            foreach (var compBarcode in item.BundleData.CompositionBarcodes)
            {
                hash.Add(compBarcode);
            }
            return(hash.ToList());
        }
Пример #10
0
        public static async Task <NewWhlSku> CreateSku(Whlnew mySqlData, List <WarehouseIssueLog> issueLog, bool skipBundles = false)
        {
            await Task.Delay(0);

            var newSku = new NewWhlSku
            {
                Sku              = mySqlData.Sku,
                Packsize         = Convert.ToInt32(mySqlData.Packsize),
                RetailPrice      = Convert.ToDecimal(mySqlData.Retail),
                DistinguishTitle = mySqlData.Ext35,
                NoteData         = new SkuNoteData
                {
                    DeliveryNote  = mySqlData.Deliverynote,
                    PickNote      = mySqlData.PickNote,
                    KnowledgeNote = mySqlData.KnowledgeNote
                },
                PriceData = new SkuPriceData
                {
                    Gross  = Convert.ToDecimal(mySqlData.Gross),
                    Net    = Convert.ToDecimal(mySqlData.Net),
                    Retail = Convert.ToDecimal(mySqlData.Retail)
                },
                Titles = new SkuExtendedTitles
                {
                    Invoice     = mySqlData.Itemtitle,
                    Label       = mySqlData.Labelshort,
                    Linnworks   = mySqlData.Linnshort,
                    Distinguish = mySqlData.Ext35,
                    NewItem     = mySqlData.NewDescription
                },
                ItemData = new ItemProfile
                {
                    Brand       = mySqlData.NewBrand,
                    Description = mySqlData.NewDescription,
                    Finish      = mySqlData.NewFinish,
                    Category    = mySqlData.Ext33,
                    Size        = mySqlData.NewSize,
                    Note        = mySqlData.NewNote,
                    Box         = mySqlData.NewTransferBox,
                },
                ExtendedData = new SkuExtendedData
                {
                    Envelope   = mySqlData.Envelope,
                    LabourCode = mySqlData.Labour,
                    Status     = mySqlData.NewStatus
                },
                NewData = new NewSkuData
                {
                    GS1Barcode = mySqlData.Gs1
                },
                CostData      = new SkuCostData(),
                BundleData    = new SkuBundleData(),
                LinnworksInfo = new SkuLinnworksInfo()
            };

            if (newSku.NewData.GS1Barcode == null)
            {
                newSku.NewData.GS1Barcode = "";
            }
            newSku.Packsize = Convert.ToInt32(mySqlData.Packsize);
            //Item Profile
            int.TryParse(mySqlData.Parts, out newSku.ItemData.Parts);
            int.TryParse(mySqlData.Pieces, out newSku.ItemData.Pieces);
            int.TryParse(mySqlData.Screws, out newSku.ItemData.Screws);
            decimal.TryParse(mySqlData.Weight.ToString(), out newSku.ItemData.Weight);
            //ExtendedData
            bool.TryParse(mySqlData.IsPair, out newSku.ExtendedData.IsPair);
            bool.TryParse(mySqlData.IsListed, out newSku.ExtendedData.IsListed);
            bool.TryParse(mySqlData.HasBeenListed, out newSku.ExtendedData.HasBeenListed);
            bool.TryParse(mySqlData.Courier, out newSku.ExtendedData.Courier);
            bool.TryParse(mySqlData.OversizedItem, out newSku.ExtendedData.Oversized);
            bool.TryParse(mySqlData.IsBundle, out newSku.ExtendedData.IsBundle);
            //Pricing Data
            decimal.TryParse(mySqlData.Profit, out newSku.PriceData.Profit);
            decimal.TryParse(mySqlData.Margin, out newSku.PriceData.Margin);
            //Cost Data
            decimal.TryParse(mySqlData.Packingcost, out newSku.CostData.Packing);
            decimal.TryParse(mySqlData.Postagecost, out newSku.CostData.Postage);
            decimal.TryParse(mySqlData.Envcost, out newSku.CostData.Envelope);
            decimal.TryParse(mySqlData.Feescost, out newSku.CostData.Fees);
            decimal.TryParse(mySqlData.Labourcost, out newSku.CostData.Labour);
            decimal.TryParse(mySqlData.Vatcost, out newSku.CostData.Vat);
            decimal.TryParse(mySqlData.Totalcost, out newSku.CostData.Total);
            //Linnworks Data
            int.TryParse(mySqlData.Initiallevel, out newSku.LinnworksInfo.InitialLevel);
            int.TryParse(mySqlData.Initialquantity, out newSku.LinnworksInfo.InitialStock);
            int.TryParse(mySqlData.InitMinimum, out newSku.LinnworksInfo.InitialMinimum);
            int.TryParse(mySqlData.ListPriority, out newSku.LinnworksInfo.ListPriority);



            var inv = GetStockLevels(mySqlData.Sku);

            newSku.StockData = new SkuStockData();
            int.TryParse(inv.Stock, out newSku.StockData.Level);
            int.TryParse(inv.Stockminimum, out newSku.StockData.Minimum);
            using (var context = new whldataContext())
            {
                newSku.Locations = newSku.GetShortSkuLocations(context);

                newSku.Suppliers = newSku.GetSuppliers(context);

                newSku.SalesData   = newSku.GetSkuSalesData(context);
                newSku.PrepackInfo = newSku.GetSkuPrepackInfo(context);

                //newSku.UpdateOrderwiseData(context);
                if (issueLog.Count != 0)
                {
                    newSku.GetMissedPicksAndIssues(issueLog);
                }
                else
                {
                    newSku.NewData.MissedPicks = new MispickStatistic();
                }

                if (newSku.ExtendedData.IsBundle && !skipBundles)
                {
                    newSku.BundleData = newSku.GetSkuBundleInfo(context, mySqlData, true);
                }
            }
            newSku.Barcodes       = newSku.GetSkuBarcodes();
            newSku.SearchKeywords = newSku.GetSearchKeywords();

            return(newSku);
        }