public void ReportForecast(string filePath, bool appendFile, SqlString customerNumberFrom, SqlString customerNumberTo, SqlString brandCodeFrom, SqlString brandCodeTo, SqlString productCategoryCodeFrom, SqlString productCategoryCodeTo, ForecastReportGroupBy groupBy, string forecastMethods, int forecastYear) { var forecastReportCollection = new ForecastReport.ParameteredCollection(_companyCode, customerNumberFrom, customerNumberTo, brandCodeFrom, brandCodeTo, productCategoryCodeFrom, productCategoryCodeTo, groupBy, forecastMethods, forecastYear); forecastReportCollection.Load(); var actualSalesReportCollection = new ActualSalesReport.ParameteredCollection(_companyCode, customerNumberFrom, customerNumberTo, brandCodeFrom, brandCodeTo, productCategoryCodeFrom, productCategoryCodeTo, groupBy, forecastMethods, forecastYear); actualSalesReportCollection.Load(); using (var sw = new StreamWriter(filePath, appendFile)) { sw.WriteLine(",,,,Actual vs Forecast Comparison Report,,,,,,,Report Date: {0:MM/dd/yyyy}", DateTime.Today); sw.WriteLine(); sw.WriteLine("Company Code: {0}", _companyCode); sw.WriteLine("Customer Number from: {0} to: {1}", customerNumberFrom, customerNumberTo); sw.WriteLine("Brand Code from: {0} to: {1}", brandCodeFrom, brandCodeTo); sw.WriteLine("Product Category Code from: {0} to: {1}", productCategoryCodeFrom, productCategoryCodeTo); sw.WriteLine("Forecast Methods: {0}", forecastMethods); sw.WriteLine("Forecast Year: {0}", forecastYear); sw.WriteLine("Group by: {0}", groupBy); sw.WriteLine(); var header = new StringBuilder(); if (groupBy == ForecastReportGroupBy.Brand) { header.Append("Brand"); } else { header.Append("Item#"); } header.Append(",").Append("Jan ").Append(forecastYear.ToString()); header.Append(",").Append("Feb ").Append(forecastYear.ToString()); header.Append(",").Append("Mar ").Append(forecastYear.ToString()); header.Append(",").Append("Apr ").Append(forecastYear.ToString()); header.Append(",").Append("May ").Append(forecastYear.ToString()); header.Append(",").Append("Jun ").Append(forecastYear.ToString()); header.Append(",").Append("Jul ").Append(forecastYear.ToString()); header.Append(",").Append("Aug ").Append(forecastYear.ToString()); header.Append(",").Append("Sep ").Append(forecastYear.ToString()); header.Append(",").Append("Oct ").Append(forecastYear.ToString()); header.Append(",").Append("Nov ").Append(forecastYear.ToString()); header.Append(",").Append("Dec ").Append(forecastYear.ToString()); header.Append(",Total ").Append(forecastYear.ToString()); sw.WriteLine(header.ToString()); sw.WriteLine(); var forecastReportGrandTotal = new int[13]; var actualSalesReportGrandTotal = new int[13]; var varianceReportGrandTotal = new int[13]; foreach (var forecastReport in forecastReportCollection) { WriteForecastVarianceCrossTab(sw, forecastReport, actualSalesReportCollection, forecastYear, ref forecastReportGrandTotal, ref actualSalesReportGrandTotal, ref varianceReportGrandTotal); } sw.WriteLine(); sw.WriteLine("Report Total:"); sw.Write("Actual"); for (var i = 0; i < 13; i++) { sw.Write(",{0}", actualSalesReportGrandTotal[i]); } sw.WriteLine(); sw.Write("SLSFR"); for (var i = 0; i < 13; i++) { sw.Write(",{0}", forecastReportGrandTotal[i]); } sw.WriteLine(); sw.Write("Variance"); for (var i = 0; i < 13; i++) { sw.Write(",{0}", varianceReportGrandTotal[i]); } sw.WriteLine(); } }
public ParameteredCollection(SqlString companyCode, SqlString customerNumberFrom, SqlString customerNumberTo, SqlString brandCodeFrom, SqlString brandCodeTo, SqlString productCategoryCodeFrom, SqlString productCategoryCodeTo, ForecastReportGroupBy groupBy, string forecastMethods, int forecastYear) { ParameterCollection = new HybridDictionary { { "CompanyCode", companyCode }, { "CustomerNumberFrom", customerNumberFrom }, { "CustomerNumberTo", customerNumberTo }, { "BrandCodeFrom", brandCodeFrom }, { "BrandCodeTo", brandCodeTo }, { "ProductCategoryCodeFrom", productCategoryCodeFrom }, { "ProductCategoryCodeTo", productCategoryCodeTo }, { "GroupBy", groupBy.ToString() }, { "ForecastMethods", forecastMethods }, { "ForecastYear", forecastYear } }; }