private void ProcessByCategory() { foreach (ListViewItem li in lsvSites.CheckedItems) { ForecastCategory fcat = (ForecastCategory)li.Tag; _selectedProductids = fcat.GetSelectedProductId(); int month = _forecastInfo.StartDate.Month; foreach (ListViewItem l in lvProductAll.SelectedItems) { MasterProduct pro = (MasterProduct)l.Tag; if (!IsTestSelected(pro.Id)) { int year = _forecastInfo.StartDate.Year; int quar = LqtUtil.GetQuarter(_forecastInfo.StartDate); DateTime lastd = _forecastInfo.StartDate; int quartermonth = 1; for (int x = 1; x <= NoRPeriod(); x++) { ForecastCategoryProduct sp = new ForecastCategoryProduct(); sp.Product = pro; sp.Category = fcat; sp.AmountUsed = 1; sp.Adjusted = 1; if (_forecastInfo.PeriodEnum == ForecastPeriodEnum.Bimonthly) { lastd = lastd.AddMonths(-2); sp.CDuration = LqtUtil.Months[lastd.Month - 1] + "-" + lastd.Year.ToString(); DateTime Duration = new DateTime(lastd.Year, lastd.Month, 1); sp.DurationDateTime = Duration; } else if (_forecastInfo.PeriodEnum == ForecastPeriodEnum.Monthly) { lastd = lastd.AddMonths(-1); sp.CDuration = LqtUtil.Months[lastd.Month - 1] + "-" + lastd.Year.ToString(); DateTime Duration = new DateTime(lastd.Year, lastd.Month, 1); sp.DurationDateTime = Duration; } else if (_forecastInfo.PeriodEnum == ForecastPeriodEnum.Quarterly) { if (quar == 1) { quar = 4; year--; } else quar--; sp.CDuration = String.Format("{0}-Qua{1}", year, quar); if (quar == 1) quartermonth = 1; else if (quar == 2) quartermonth = 4; else if (quar == 3) quartermonth = 7; else quartermonth = 10; DateTime Duration = new DateTime(year, quartermonth, 1); sp.DurationDateTime = Duration; } else { year--; sp.CDuration = year.ToString(); DateTime Duration = new DateTime(year, 1, 1); sp.DurationDateTime = Duration; } fcat.CategoryProducts.Add(sp); } } } // _forecastInfo.ForecastSites.Add(fsite); } }
private void butImport_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(txtFilename.Text.Trim())) return; try { DataSet ds = LqtUtil.ReadExcelFileforecast(txtFilename.Text, _noColumn); _rdata = GetDataRow(ds); lvImport.BeginUpdate(); lvImport.Items.Clear(); ForecastSite fs = new ForecastSite(); ForecastCategorySite fcatsite = new ForecastCategorySite(); bool isduplicate = false; ForecastSite efs = new ForecastSite();//existing IList<ForecastSiteProduct> existingFsp = new List<ForecastSiteProduct>(); foreach (ForecastSite efss in _forecastInfo.ForecastSites) { foreach (ForecastSiteProduct efsp in efss.SiteProducts) existingFsp.Add(efsp); } foreach (ReportedData rd in _rdata) { ListViewItem li = new ListViewItem(rd.RowNo.ToString()); if (_forecastInfo.DatausageEnum == DataUsageEnum.DATA_USAGE3) { li.SubItems.Add(rd.CategoryName); } else { li.SubItems.Add(rd.RegionName); li.SubItems.Add(rd.SiteName); } li.SubItems.Add(rd.ProductName); if (!LqtUtil.IsDateTime(rd.Duration)) { try { DateTime dd = LqtUtil.DurationToDateTime(rd.Duration); if (rd.Duration.StartsWith("Q") && (_forecastInfo.PeriodEnum == ForecastPeriodEnum.Yearly)) { rd.Duration = dd.Year.ToString(); li.SubItems.Add(LqtUtil.DatetimeToDurationStr(_forecastInfo.PeriodEnum, dd)); } else li.SubItems.Add(rd.Duration); } catch (Exception ex) { li.SubItems.Add(rd.Duration); rd.HasError = true; } } else { string datestr = LqtUtil.DatetimeToDurationStr(_forecastInfo.PeriodEnum, DateTime.Parse(rd.Duration)); if (!rd.Duration.StartsWith("Q")) { rd.Duration = LqtUtil.DatetimeToDurationStr(_forecastInfo.PeriodEnum, DateTime.Parse(rd.Duration)); if (_forecastInfo.PeriodEnum == ForecastPeriodEnum.Yearly) { li.SubItems.Add(datestr); } else { li.SubItems.Add(rd.Duration); } } else { { li.SubItems.Add(datestr); } } } li.SubItems.Add(rd.Amount.ToString()); li.SubItems.Add(rd.StockOut.ToString()); li.SubItems.Add(rd.InstrumentDownTime.ToString());// if (rd.HasError == true && rd.ErrorDescription == "") rd.ErrorDescription = " Product Consumed Required "; if (LqtUtil.validDate(rd.Duration, _forecastInfo.PeriodEnum)) rd.HasError = true; //check if stockout and instrument downtime is less than site working days try { if (rd.Site != null) if (!LqtUtil.ValidDownTime(rd.StockOut + rd.InstrumentDownTime, _forecastInfo.PeriodEnum, rd.Site.WorkingDays)) { rd.HasError = true; rd.ErrorDescription += " Sum of Stockout and Instrument Downtime can not be greater than site working days"; } } catch { } li.SubItems.Add(rd.ErrorDescription.ToString()); //add to forecast site product if (!rd.HasError && _forecastInfo.DatausageEnum != DataUsageEnum.DATA_USAGE3) { ForecastSiteProduct fp = new ForecastSiteProduct(); fs = _forecastInfo.GetForecastSiteBySiteId(rd.Site.Id); if (fs == null) { fs = new ForecastSite(); fs.Site = rd.Site; fs.ForecastInfo = _forecastInfo; _forecastInfo.ForecastSites.Add(fs); } fp.ForecastSite = fs; fp.Product = rd.Product; if (!LqtUtil.IsDateTime(rd.Duration)) { fp.CDuration = rd.Duration; fp.DurationDateTime = LqtUtil.DurationToDateTime(rd.Duration); } else { fp.DurationDateTime = DateTime.Parse(rd.Duration); fp.CDuration = LqtUtil.DatetimeToDurationStr(_forecastInfo.PeriodEnum, DateTime.Parse(rd.Duration)); } fp.AmountUsed = rd.Amount; fp.StockOut = rd.StockOut; fp.InstrumentDowntime = rd.InstrumentDownTime;//b if (fp.StockOut > 0) { int days = fp.StockOut; decimal workingday = GetActiveSiteWorkingDays(fp); if (days >= workingday) { days = 0; fp.StockOut = 0; } if (days >= 0) fp.StockOut = days; } foreach (ForecastSiteProduct efsp in existingFsp) { isduplicate = false; if (fp.ForecastSite.Site.Region == efsp.ForecastSite.Site.Region) if (fp.ForecastSite.Site == efsp.ForecastSite.Site) if (fp.Product == efsp.Product && fp.DurationDateTime == efsp.DurationDateTime) { isduplicate = true; break; } } foreach (ForecastSiteProduct fsp in fs.SiteProducts) { isduplicate = false; if (fp.ForecastSite.Site.Region == fsp.ForecastSite.Site.Region) if (fp.ForecastSite.Site == fsp.ForecastSite.Site) if (fp.Product == fsp.Product && fp.DurationDateTime == fsp.DurationDateTime) { isduplicate = true; break; } } if (!isduplicate) fs.SiteProducts.Add(fp); } //end adding //add by category if (!rd.HasError && _forecastInfo.DatausageEnum == DataUsageEnum.DATA_USAGE3) { ForecastCategory fcat = new ForecastCategory(); ForecastCategoryProduct fp = new ForecastCategoryProduct(); fcat = _forecastInfo.GetForecastCategorybyname(rd.CategoryName); if (fcat== null) { fcat = new ForecastCategory(); fcat.CategoryName = rd.CategoryName; fcat.ForecastInfo = _forecastInfo; _forecastInfo.ForecastCategories.Add(fcat); } fp = fcat.GetFCatProduct(rd.Product.Id, rd.Duration); isduplicate = false; if (fp == null) fp = new ForecastCategoryProduct(); else isduplicate = true; fp.Category = fcat; fp.Product = rd.Product; fp.AmountUsed = rd.Amount; fp.StockOut = rd.StockOut; fp.InstrumentDowntime = rd.InstrumentDownTime;//b if (!LqtUtil.IsDateTime(rd.Duration)) { fp.DurationDateTime = LqtUtil.DurationToDateTime(rd.Duration); fp.CDuration = rd.Duration; } else { fp.DurationDateTime = DateTime.Parse(rd.Duration); fp.CDuration = LqtUtil.DatetimeToDurationStr(_forecastInfo.PeriodEnum, DateTime.Parse(rd.Duration)); } if (fp.StockOut > 0) { int days = fp.StockOut; decimal workingday = 22; if (days >= workingday) { days = 0; fp.StockOut = 0; } if (days >= 0) fp.StockOut = days; } if (!isduplicate) fcat.CategoryProducts.Add(fp); } //end category adding if (rd.HasError) { li.BackColor = Color.Red; _error++; } else if (isduplicate) { li.BackColor = Color.Yellow; _error++; } else { _count++; } lvImport.Items.Add(li); } sort(); lvImport.EndUpdate(); butClear.Enabled = true; butSave.Enabled = true; } catch (Exception ex) { MessageBox.Show("Error: " + ex.Message, "Importing", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private IBaseDataUsage GetNewDataUsage() { IBaseDataUsage dusage = null; if (_forecastInfo.FMethodologeyEnum == MethodologyEnum.CONSUMPTION) { switch (_forecastInfo.DatausageEnum) { case DataUsageEnum.DATA_USAGE1: case DataUsageEnum.DATA_USAGE2: dusage = new ForecastSiteProduct() { ForecastSite = _activeFSite }; break; case DataUsageEnum.DATA_USAGE3: dusage = new ForecastCategoryProduct() { Category = _activeCategory }; break; } } else { switch (_forecastInfo.DatausageEnum) { case DataUsageEnum.DATA_USAGE1: case DataUsageEnum.DATA_USAGE2: dusage = new ForecastSiteTest() { ForecastSite = _activeFSite }; break; case DataUsageEnum.DATA_USAGE3: dusage = new ForecastCategoryTest() { Category = _activeCategory }; break; } } return dusage; }
public Consumption GetConsumption(int id, ForecastCategoryProduct fp) { Consumption con = null; switch (_forecastInfo.DatausageEnum) { case DataUsageEnum.DATA_USAGE1: case DataUsageEnum.DATA_USAGE2: con = fp.Category.ConsumptionByProduct(id); break; case DataUsageEnum.DATA_USAGE3: con = fp.Category.ConsumptionByProduct(id); break; } return con; }