static public void ReCalcForecastItems() { forecastItems.Clear(); foreach (ProductMasterItem productMasterItem in _productMasterList) { ForecastItem newForecastItem = new ForecastItem(); newForecastItem.ProductCode = productMasterItem.ProductionCode; newForecastItem.ProductDescription = productMasterItem.Description; double inventory = InventoryItems.Where(x => x.ProductCode == productMasterItem.ProductionCode).Sum(x => x.Units); for (Int32 i = 0; i < newForecastItem.UnitsPerMonth.Length; i++) { SalesItem[] foundItems = SalesItems.Where(x => x.MasterID == productMasterItem.MasterID && x.Date.Month == DateTime.Now.AddMonths(-(i + 1)).Month&& x.Date.AddYears(1).AddMonths(1) >= DateTime.Now).ToArray(); newForecastItem.UnitsPerMonth[i] = foundItems.Sum(x => (x.Units / productMasterItem.PiecesPerUnit)); } newForecastItem.Units = inventory; forecastItems.Add(newForecastItem); } }
/// <summary> /// Gets the sale with the soonest due date. /// </summary> /// <param name="nextItem"></param> /// <returns></returns> public static SalesItem GetPrioritySale(ProductMasterItem nextItem) { SalesItem sale = null; DateTime minDate = DateTime.MaxValue; foreach (var item in SalesItems.Where(s => s.Fulfilled < s.Units)) { if (item.Date < minDate) { minDate = item.Date; sale = item; } } return(sale); }