private DataTable GetMengurusDataTable() { DataTable dt = new DataTable(); try { List <AccountCodeTreeHelper> accountcodes = CreateExportData(); List <PeriodMenguru> PeriodData = (List <PeriodMenguru>)Session["PeriodData"]; List <BudgetMenguru> BudgetData = ((List <BudgetMenguru>)Session["BudgetData"]).Where(x => x.Status == "A").ToList(); //Start Build DataTable DataColumn dc = new DataColumn("AccountCode"); dt.Columns.Add(dc); dc = new DataColumn("Objeck"); dt.Columns.Add(dc); dc = new DataColumn("Description"); dt.Columns.Add(dc); if (chkKeterangan.Checked) { dc = new DataColumn("Keterangan"); dt.Columns.Add(dc); } if (chkPengiraan.Checked) { dc = new DataColumn("Pengiraan"); dt.Columns.Add(dc); } foreach (PeriodMenguru pm in PeriodData) { int count = dt.Columns.Cast <DataColumn>().Where(x => x.ColumnName == pm.MengurusYear.ToString() + "_" + pm.FieldMenguru.FieldMengurusDesc).Count(); string colname = pm.MengurusYear.ToString() + "_" + pm.FieldMenguru.FieldMengurusDesc; colname = (count == 0) ? colname : colname + "_" + (count + 1).ToString(); dc = new DataColumn(colname); dt.Columns.Add(dc); } //End Build DataTable //Start pushing data into DataTable foreach (AccountCodeTreeHelper acchelp in accountcodes) { int c = 0; DataRow dr = dt.NewRow(); dr[c] = new Helper().GetLevelString(acchelp.AccountCode, acchelp.Level); c++; dr[c] = Session["PrefixAcountCode"].ToString() + acchelp.AccountCode; c++; dr[c] = acchelp.AccountDesc; if (chkKeterangan.Checked) { c++; dr[c] = acchelp.Keterangan; } if (chkPengiraan.Checked) { c++; dr[c] = acchelp.Pengiraan; } foreach (PeriodMenguru pm in PeriodData) { BudgetMenguru ObjBudgetMenguru = BudgetData.Where(x => x.AccountCode == acchelp.AccountCode && x.PeriodMengurusID == pm.PeriodMengurusID).FirstOrDefault(); decimal amount = Convert.ToDecimal(0); if (acchelp.ChildCount == 0) { amount = (ObjBudgetMenguru != null) ? ObjBudgetMenguru.Amount : Convert.ToDecimal(0); } else { List <string> ChildIDs = new List <string>() { acchelp.AccountCode }; List <string> RefChildIDs = new List <string>(); while (ChildIDs.Count > 0) { RefChildIDs.Clear(); foreach (AccountCodeTreeHelper t in accountcodes.Where(x => ChildIDs.Contains(x.AccountCode))) { amount = amount + BudgetData.Where(x => x.AccountCode == t.AccountCode && x.PeriodMengurusID == pm.PeriodMengurusID).Select(x => x.Amount).Sum(); foreach (string s in accountcodes.Where(x => x.ParentAccountCode == t.AccountCode).Select(x => x.AccountCode).ToList()) { RefChildIDs.Add(s); } } ChildIDs.Clear(); foreach (string s in RefChildIDs) { ChildIDs.Add(s); } } } c++; dr[c] = amount.ToString("F"); } dt.Rows.Add(dr); } //End pushing data into DataTable } catch (Exception ex) { ((SiteMaster)this.Master).ShowMessage("Error", "An error occurred", ex, true); } return(dt); }
protected void gvAccountCodes_RowDataBound(object sender, GridViewRowEventArgs e) { try { if (e.Row.RowType == DataControlRowType.DataRow) { List <string> SelectedNodes = (List <string>)Session["SelectedNodes"]; List <BudgetMenguru> BudgetData = (List <BudgetMenguru>)Session["BudgetData"]; List <AccountCodeTreeHelper> TreeData = (List <AccountCodeTreeHelper>)Session["AccountCodesTree"]; List <AccountCode> AccountCodesData = (List <AccountCode>)Session["AccountCodesData"]; List <PeriodMenguru> PeriodData = (List <PeriodMenguru>)Session["PeriodData"]; AccountCodeTreeHelper rowItem = (AccountCodeTreeHelper)e.Row.DataItem; /*Start Account Code logics*/ int width = rowItem.Level * (new Helper().IndentPixels); string strHTML = string.Empty; if (rowItem.ChildCount > 0) { if (SelectedNodes.Contains(rowItem.AccountCode)) { strHTML = "<label style=\"display: inline-block;width:" + (width + 10).ToString() + "px;vertical-align:middle;\"><i class=\"ace-icon fa fa-minus-square pull-right\"></i></label> "; } else { strHTML = "<label style=\"display: inline-block;width:" + (width + 10).ToString() + "px;vertical-align:middle;\"><i class=\"ace-icon fa fa-plus-square pull-right\"></i></label> "; } } else { strHTML = "<label style=\"display: inline-block;width:" + (width + 10).ToString() + "px;vertical-align:middle;\"><i></i></label> "; } LinkButton btnExpand = ((LinkButton)e.Row.Cells[0].FindControl("btnExpand")); //btnExpand.Text = "<div style=\"max-width:200px;overflow:hidden;white-space:nowrap;\">" + strHTML + Session["PrefixAcountCode"].ToString() + rowItem.AccountCode + "</div>"; btnExpand.Text = "<div style=\"max-width:200px;overflow:hidden;white-space:nowrap;\">" + strHTML + rowItem.AccountCode + "</div>"; btnExpand.ToolTip = rowItem.AccountDesc; //if (Session["SelectedAccountCode"] != null && ((AccountCode)Session["SelectedAccountCode"]).AccountCode1 == rowItem.AccountCode) //{ // e.Row.Style["background-color"] = "skyblue"; //} //if (SelectedNodes.Contains(rowItem.AccountCode)) //{ // e.Row.Style["background-color"] = "skyblue"; //} /*End Account Code logics*/ /*Start Buget logics*/ int index = 2; if (chkKeterangan.Checked) { index++; } if (chkPengiraan.Checked) { index++; } bool IsBudgetEditable = Convert.ToBoolean(Session["CanEdit"]); for (int c = index; c < gvAccountCodes.Columns.Count; c++) { //int PeriodMenguruID = Convert.ToInt32(((Label)e.Row.Cells[c].FindControl("lbl_PeriodMenguruID")).Text); int PeriodMenguruID = Convert.ToInt32(((Label)e.Row.Cells[c].Controls[0]).Text); PeriodMenguru pm = PeriodData.Where(x => x.PeriodMengurusID == PeriodMenguruID).FirstOrDefault(); BudgetMenguru ObjBudgetMenguru = BudgetData.Where(x => x.AccountCode == rowItem.AccountCode && x.PeriodMengurusID == PeriodMenguruID).FirstOrDefault(); Label lbl = ((Label)e.Row.Cells[c].FindControl("lbl_" + PeriodMenguruID)); LinkButton btnSaved = ((LinkButton)e.Row.Cells[c].FindControl("btnSaved_" + PeriodMenguruID)); LinkButton btnPrepared = ((LinkButton)e.Row.Cells[c].FindControl("btnPrepared_" + PeriodMenguruID)); LinkButton btnReviewed = ((LinkButton)e.Row.Cells[c].FindControl("btnReviewed_" + PeriodMenguruID)); LinkButton btnApproved = ((LinkButton)e.Row.Cells[c].FindControl("btnApproved_" + PeriodMenguruID)); LinkButton btnRevRej = ((LinkButton)e.Row.Cells[c].FindControl("btnRevRej_" + PeriodMenguruID)); LinkButton btnAprRej = ((LinkButton)e.Row.Cells[c].FindControl("btnAprRej_" + PeriodMenguruID)); lbl.Visible = true; btnSaved.Visible = false; btnPrepared.Visible = false; btnReviewed.Visible = false; btnApproved.Visible = false; btnRevRej.Visible = false; btnAprRej.Visible = false; e.Row.Cells[c].BackColor = ((ObjBudgetMenguru != null) ? new Helper().GetColorByStatusValue('A') : new System.Drawing.Color()); if (rowItem.ChildCount == 0) { lbl.Text = (ObjBudgetMenguru != null) ? ObjBudgetMenguru.Amount.ToString() : string.Empty; } else { decimal amount = 0; List <string> ChildIDs = new List <string>() { rowItem.AccountCode }; List <string> RefChildIDs = new List <string>(); while (ChildIDs.Count > 0) { RefChildIDs.Clear(); foreach (AccountCode t in AccountCodesData.Where(x => ChildIDs.Contains(x.AccountCode1))) { amount = amount + BudgetData.Where(x => x.AccountCode == t.AccountCode1 && x.PeriodMengurusID == PeriodMenguruID).Select(x => x.Amount).Sum(); foreach (string s in AccountCodesData.Where(x => x.ParentAccountCode == t.AccountCode1).Select(x => x.AccountCode1).ToList()) { RefChildIDs.Add(s); } } ChildIDs.Clear(); foreach (string s in RefChildIDs) { ChildIDs.Add(s); } } lbl.Text = (amount != 0) ? amount.ToString("F") : string.Empty; } } /*End Buget logics*/ } } catch (Exception ex) { ((SiteMaster)this.Master).ShowMessage("Error", "An error occurred", ex, true); } }