private void GroupExpRows(string project, DataRow[] dInfos, DSForecastRprt.Table1Row tblRow) { tblRow.budget = 0; tblRow.costs = 0; tblRow.ForecastHrs = 0; tblRow.ForecastAmnt = 0; tblRow.ftc = 0; foreach (DataRow dRow in dInfos) { tblRow.Project = project; tblRow.AcctNumber = "9020"; tblRow.AcctGroup = dRow["AcctGroup"].ToString(); tblRow.AcctNumberGroup = dRow["AcctNumberGroup"].ToString(); var budget = Convert.ToDecimal(dRow["budget"]); var costs = Convert.ToDecimal(dRow["costs"]); var forecast_hrs = Convert.ToDecimal(dRow["ForecastHrs"]); var forecast_amnt = Convert.ToDecimal(dRow["ForecastAmnt"]); var ftc = Convert.ToDecimal(dRow["ftc"]); tblRow.budget += budget; tblRow.costs += costs; tblRow.ftc += ftc; tblRow.ForecastHrs += Math.Max(forecast_hrs, 0); tblRow.ForecastAmnt += Math.Max(Math.Max(costs, forecast_amnt), 0); } }
public DSForecastRprt LoadReportForProjectRollup(string project, int rprtCase) { DataSet ds; RevSol.RSConnection cnn; SqlCommand cmd; SqlParameter prm; SqlDataReader dr; DSForecastRprt dsFor; cnn = new RevSol.RSConnection("CR"); cmd = new SqlCommand("spProject_GetListByMaster", cnn.GetConnection()); cmd.CommandType = CommandType.StoredProcedure; prm = cmd.Parameters.Add("@MasterNum", SqlDbType.VarChar, 50); prm.Value = project; dr = cmd.ExecuteReader(); dsFor = new DSForecastRprt(); string sProject, sDescription, sCustomer, sLocation, sManager, sBillType; var project_info = GetProjectInfo(project); ds = GetCRForProject(project, rprtCase); sProject = ""; sDescription = ""; sCustomer = ""; sLocation = ""; sManager = ""; sBillType = ""; foreach (DataRow d in project_info.Rows) { sProject = d["Project"].ToString(); sDescription = d["Description"].ToString(); sCustomer = d["Customer"].ToString(); sLocation = d["Location"].ToString(); sManager = d["Manager"].ToString(); sBillType = d["BillType"].ToString(); } while (dr.Read()) { ds = GetCRForProject(dr["Number"].ToString(), rprtCase); foreach (DataRow d in ds.Tables[0].Rows) { DSForecastRprt.EngrInfoRow eir = dsFor.EngrInfo.NewEngrInfoRow(); eir.Project = sProject; eir.Description = sDescription; eir.Customer = sCustomer; eir.Location = sLocation; eir.BudgetGroup = d["BudgetGroup"].ToString(); eir.AcctGroup = d["AcctGroup"].ToString(); eir.Manager = sManager; eir.BillType = sBillType; try { eir.BudgetDlrs = Convert.ToDecimal(d["BudgetDlrs"]); eir.BudgetHrs = Convert.ToDecimal(d["BudgetHrs"]); eir.ActualTime = Convert.ToDecimal(d["ActualTime"]); eir.ActualAmnt = Convert.ToDecimal(d["ActualAmnt"]); eir.JSBudgetHrs = Convert.ToDecimal(d["JSBudgetHrs"]); eir.RemainingHrs = Convert.ToDecimal(d["RemainingHrs"]); eir.JSLastUpdated = Convert.ToDateTime(d["JSLastUpdated"]); eir.EarnedHrs = Convert.ToDecimal(d["EarnedHrs"]); eir.ProjectedHrs = Convert.ToDecimal(d["ProjectedHrs"]); eir.ForecastHrs = Convert.ToDecimal(d["ForecastHrs"]); eir.FTCHrs = Convert.ToDecimal(d["FTCHrs"]); eir.FTCAmnt = Convert.ToDecimal(d["FTCAmnt"]); eir.FTCUpdate = Convert.ToDateTime(d["FTCUpdate"]); } catch { } dsFor.EngrInfo.AddEngrInfoRow(eir); } foreach (DataRow d in ds.Tables[1].Rows) { DSForecastRprt.Table1Row t1r = dsFor.Table1.NewTable1Row(); t1r.Project = sProject; t1r.AcctNumber = d["AcctNumber"].ToString(); t1r.AcctGroup = d["AcctGroup"].ToString(); t1r.AcctNumberGroup = d["AcctNumberGroup"].ToString(); t1r.budget = Convert.ToDecimal(d["budget"]); t1r.costs = Convert.ToDecimal(d["costs"]); t1r.ForecastHrs = Convert.ToDecimal(d["ForecastHrs"]); t1r.ForecastAmnt = Convert.ToDecimal(d["ForecastAmnt"]); t1r.ftc = Convert.ToDecimal(d["ftc"]); dsFor.Table1.AddTable1Row(t1r); } } dr.Close(); DSForecastRprt rprtDs = new DSForecastRprt(); var groups = new List <string>(); foreach (DataRow row in dsFor.EngrInfo.Rows) { groups.Add(row["BudgetGroup"].ToString()); } groups = groups.Distinct().OrderBy(x => x).ToList(); foreach (var group in groups) { DSForecastRprt.EngrInfoRow eRow = rprtDs.EngrInfo.NewEngrInfoRow(); DataRow[] dInfos = dsFor.EngrInfo.Select("BudgetGroup = '" + group + "'"); this.GroupRows(dInfos, eRow); rprtDs.EngrInfo.AddEngrInfoRow(eRow); } var exp_groups = new List <string>(); foreach (DataRow row in dsFor.Table1.Rows) { exp_groups.Add(row["AcctNumber"].ToString()); } exp_groups = exp_groups.Distinct().OrderBy(x => x).ToList(); foreach (var exp_group in exp_groups) { DSForecastRprt.Table1Row tblRow = rprtDs.Table1.NewTable1Row(); DataRow[] dInfos = dsFor.Table1.Select("AcctNumber = '" + exp_group + "'"); this.GroupExpRows(sProject, dInfos, tblRow); rprtDs.Table1.AddTable1Row(tblRow); } return(rprtDs); }