CipherIS
asked on
C# - Refactor Code
Can the below code be refactored?
private void PayrollDeduction(DataSet myDataSet)
{
DataTable dtPreTax = new DataTable();
DataTable dtPostTax = new DataTable();
double dblPreTaxTotal = 0;
double dbloPreTaxTotal = 0;
double dblPostTaxTotal = 0;
//Get PreTax Data
dtPreTax = myDataSet.Tables["Deduction"].Copy();
dtPreTax.TableName = "dtPreTax";
DataRow[] drPreTax = dtPreTax.Select("postTax=true");
for (int i = 0; i < drPreTax.Length; i++)
drPreTax[i].Delete();
dtPreTax.AcceptChanges();
DataColumn col = new DataColumn("Sort", typeof(System.Int16));
col.DefaultValue = 0;
dtPreTax.Columns.Add(col);
if (dtPreTax != null)
{
//Get Total
dblPreTaxTotal = Convert.ToDouble(dtPreTax.Compute("Sum(amount)", ""));
if (dblPreTaxTotal >= 0)
dbloPreTaxTotal = dblPreTaxTotal;
//Decide Description
if (dblPreTaxTotal > 0)
this.lblPreTaxDesc.Text = "Total Deduction (PreTax)";
else
this.lblPreTaxDesc.Text = "Total Credit";
double dblPreTxTotal = 0;
//Do not display Negative sign
if (dblPreTaxTotal <= 0)
dblPreTxTotal = Math.Abs(dblPreTaxTotal);
//Display PreTax Total
if (dblPreTaxTotal < 0)
this.lblPreTaxAmt.Text = dblPreTxTotal.ToString("c");
else
this.lblPreTaxAmt.Text = dbloPreTaxTotal.ToString("c");
}
//Do not display negative values on GUI
foreach (DataRow row in dtPreTax.Rows)
{
if (row[0].ToString().Contains("Budgeted"))
{
//Set Sort
row["Sort"] = 1;
}
if (Convert.ToDouble(row[1].ToString()) < 0)
{
//Convert negative to positive
row["amount"] = Convert.ToDouble(row[1].ToString()) * -1;
}
}
dtPreTax.AcceptChanges();
//Sort
dtPreTax.DefaultView.Sort = "Sort ASC";
//Bind PreTax Data
this.rptPreTax.DataSource = dtPreTax;
this.rptPreTax.DataBind();
//Get PostTax Data
dtPostTax = myDataSet.Tables["Deduction"].Copy();
dtPostTax.TableName = "dtPostTax";
DataRow[] drPostTax = dtPostTax.Select("postTax=false");
for (int i = 0; i < drPostTax.Length; i++)
drPostTax[i].Delete();
dtPostTax.AcceptChanges();
//Does PostTax Data Exist?
if (dtPostTax.Rows.Count == 0 || dtPostTax == null)
{
this.pnlPostTax.Visible = false;
}
else
{
dblPostTaxTotal = Convert.ToDouble(dtPostTax.Compute("Sum(amount)", "")); ;
this.lblPostTaxAmt.Text = dblPostTaxTotal.ToString("c");
this.lblPostTaxDesc.Text = "Total Payroll Deduction (PostTax)";
this.pnlPostTax.Visible = true;
this.rptPostTax.DataSource = dtPostTax;
this.rptPostTax.DataBind();
}
this.lblGrandTotal.Text = "Deduction Grand Total";
double dblGrandTotal = dbloPreTaxTotal + dblPostTaxTotal;
if (dblGrandTotal < 0)
dblGrandTotal = 0;
this.lblGrandTotalAmt.Text = dblGrandTotal.ToString("c");
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.