using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Payroll.BO; using Ease.CoreV35.Model; namespace Payroll.Report { public class rptRewardStatement { Employee _employee = null; DateTime _rewardYear; DataSet _dsRewardStatement = null; int _currentYear; int _previousYear; public rptRewardStatement() { } public void ShowReport(string employeeNo, DateTime rewardYear) { try { _employee = Employee.Get().Where(x => x.EmployeeNo == employeeNo).FirstOrDefault(); _rewardYear = rewardYear; if (_employee != null) { fReportViewer form = new fReportViewer(); DataRow row = null; string empName = string.Empty; string empDivision = string.Empty; string empDesignation = string.Empty; double previousBasic = 0; double currentBasic = 0; double previousGross = 0; double currentGross = 0; double nPrevAmount = 0; double nCurrAmount = 0; double nServiceYear = 0; PayrollDataSet.PayrollDataSet.dtRewardStatementDataTable dtRewardStatement = new PayrollDataSet.PayrollDataSet.dtRewardStatementDataTable(); //Loading neccessary data LoadReportData(); //Finding minimum and maximum basic FindPreviousCurrentBasic(ref previousBasic, ref currentBasic); //Creating the row row = dtRewardStatement.NewRow(); //Adding allow deduct items CreateAllowDeductDataRow(dtRewardStatement, row, previousBasic, currentBasic, ref previousGross, ref currentGross); //Adding festival bonus row row["PrevYearFestivalBonus"] = (previousBasic * 2) / 12; row["CurrYearFestivalBonus"] = (currentBasic * 2) / 12; //Adding yearly eligible bonus row previousGross += (previousBasic * 2) / 12; currentGross += (currentBasic * 2) / 12; CreateYearlyEligibleBonusDataRow(dtRewardStatement, row, previousGross, currentGross); //Adding WPPF and WWF row if (_employee.GradeID != null && !_employee.GradeID.IsUnassigned) CreateWPPFDataRow(dtRewardStatement, row); //Adding Yearly PF row row["PrevYearPF"] = (previousBasic * 10) / 100; row["CurrYearPF"] = (currentBasic * 10) / 100; //Adding Provident Fund row row["PrevYearProvidentFund"] = ((previousBasic * 10) / 100) * 2; row["CurrYearProvidentFund"] = ((currentBasic * 10) / 100) * 2; //Adding Gratuity row TimeSpan ts; ts = DateTime.Today - _employee.JoiningDate; nServiceYear = (double)ts.Days / 365; nServiceYear = Math.Round(nServiceYear); if (nServiceYear >= 5 && nServiceYear < 5.5) { nPrevAmount = (previousBasic / 12) * nServiceYear; nCurrAmount = (currentBasic / 12) * nServiceYear; } else if (nServiceYear >= 5.5 && nServiceYear < 10) { nPrevAmount = ((previousBasic / 12) * 1.5) * nServiceYear; nCurrAmount = ((currentBasic / 12) * 1.5) * nServiceYear; } else if (nServiceYear >= 10) { nPrevAmount = ((previousBasic / 12) * 2) * nServiceYear; nCurrAmount = ((currentBasic / 12) * 2) * nServiceYear; } row["PrevYearGratuity"] = nPrevAmount; row["CurrYearGratuity"] = nCurrAmount; //Adding the row dtRewardStatement.Rows.Add(row); empName = _employee.Name; empDivision = _employee.Department != null ? _employee.Department.Name : string.Empty; empDesignation = _employee.Designation != null ? _employee.Designation.Name : string.Empty; form.ShowRewardStatementReport(empName, empDivision, empDesignation, _rewardYear.Year.ToString(), _rewardYear.AddYears(-1).Year.ToString(), dtRewardStatement); } else { MessageBox.Show("Employee not found", "Not Found", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { throw ex; } } private void LoadReportData() { _currentYear = _rewardYear.Year; _previousYear = _rewardYear.AddYears(-1).Year; string sbonusIDs = "" + "'" + "5" + "'" + "," + "'" + "4" + "'" + "," + "'" + "3" + "'"; _dsRewardStatement = SalaryMonthly.GetRewardStatementReportData(EnumAllowOrDeduct.Allowance, _employee.ID, EnumADEmpType.AppliedToIndividual, _previousYear, _currentYear, _employee.GradeID, sbonusIDs, EnmSetupManagerTranType.Grade); } private void FindPreviousCurrentBasic(ref double previousBasic, ref double currentBasic) { List basicSalaries = _dsRewardStatement.Tables["Basic"].AsEnumerable().Where(x => Convert.ToInt32(x["EmployeeId"]) == _employee.ID.Integer).ToList(); if (basicSalaries != null && basicSalaries.Count > 0) { if (basicSalaries.Count > 1) { if (Convert.ToDouble(basicSalaries.ElementAt(1).ItemArray[1]) > Convert.ToDouble(basicSalaries.ElementAt(0).ItemArray[1])) { previousBasic = (Convert.ToDouble(basicSalaries.ElementAt(0).ItemArray[1]) * 12); currentBasic = (Convert.ToDouble(basicSalaries.ElementAt(1).ItemArray[1]) * 12); } else { previousBasic = (Convert.ToDouble(basicSalaries.ElementAt(1).ItemArray[1]) * 12); currentBasic = (Convert.ToDouble(basicSalaries.ElementAt(0).ItemArray[1]) * 12); } } else if (basicSalaries.ElementAt(0) != null || basicSalaries.ElementAt(1) != null) { if (basicSalaries.ElementAt(0) != null) { previousBasic = (Convert.ToDouble(basicSalaries.ElementAt(0).ItemArray[1]) * 12); currentBasic = (Convert.ToDouble(basicSalaries.ElementAt(0).ItemArray[1]) * 12); } else if (basicSalaries.ElementAt(1) != null) { previousBasic = (Convert.ToDouble(basicSalaries.ElementAt(1).ItemArray[1]) * 12); currentBasic = (Convert.ToDouble(basicSalaries.ElementAt(1).ItemArray[1]) * 12); } } } } private void FindPreviousCurrentGrade(ref int previousGrade, ref int currentGrade) { List grades = _dsRewardStatement.Tables["Grade"].AsEnumerable().Where(x => Convert.ToInt32(x["EmployeeId"]) == _employee.ID.Integer).ToList(); if (grades != null) { if (grades.Count > 1) { if (Convert.ToDouble(grades.ElementAt(1).ItemArray[0]) > Convert.ToDouble(grades.ElementAt(0).ItemArray[0])) { previousGrade = Convert.ToInt32(grades.ElementAt(0).ItemArray[2]); currentGrade = Convert.ToInt32(grades.ElementAt(1).ItemArray[2]); } else { previousGrade = Convert.ToInt32(grades.ElementAt(1).ItemArray[2]); currentGrade = Convert.ToInt32(grades.ElementAt(0).ItemArray[2]); } } else if (grades.ElementAt(0) != null || grades.ElementAt(1) != null) { if (grades.ElementAt(0) != null) { previousGrade = Convert.ToInt32(grades.ElementAt(0).ItemArray[2]); currentGrade = Convert.ToInt32(grades.ElementAt(0).ItemArray[2]); } if (grades.ElementAt(1) != null) { previousGrade = Convert.ToInt32(grades.ElementAt(1).ItemArray[2]); currentGrade = Convert.ToInt32(grades.ElementAt(1).ItemArray[2]); } } } } private void FindPreviousCurrentADParamAmount(List allowDeducts, ref double previousAmount, ref double currentAmount) { if (allowDeducts != null && allowDeducts.Count > 0) { allowDeducts = allowDeducts.Take(2).ToList(); if (allowDeducts.Count > 0) { if (allowDeducts.Count == 1) { ID allowDeductID = Ease.CoreV35.Model.ID.FromInteger(Convert.ToInt32(allowDeducts.ElementAt(0).ItemArray[3])); DateTime salaryMonth = Convert.ToDateTime(allowDeducts.ElementAt(0).ItemArray[0]).AddMonths(-1); DataTable dtSalaryMonthlyDetail = SalaryMonthly.GetCalCulatedAmountByAllowDeductID(_employee.ID, allowDeductID, GlobalFunctions.LastDateOfMonth(salaryMonth)); if (dtSalaryMonthlyDetail != null && dtSalaryMonthlyDetail.Rows != null && dtSalaryMonthlyDetail.Rows.Count > 0) allowDeducts.Add(dtSalaryMonthlyDetail.AsEnumerable().SingleOrDefault()); } if (allowDeducts.Count > 1) { if (Convert.ToDouble(allowDeducts.ElementAt(1).ItemArray[1]) > Convert.ToDouble(allowDeducts.ElementAt(0).ItemArray[1])) { previousAmount = Convert.ToDouble(allowDeducts.ElementAt(0).ItemArray[8]); currentAmount = Convert.ToDouble(allowDeducts.ElementAt(1).ItemArray[8]); } else { previousAmount = Convert.ToDouble(allowDeducts.ElementAt(1).ItemArray[8]); currentAmount = Convert.ToDouble(allowDeducts.ElementAt(0).ItemArray[8]); } } else if (allowDeducts.ElementAt(0) != null || allowDeducts.ElementAt(1) != null) { if (allowDeducts.ElementAt(0) != null) { previousAmount = Convert.ToDouble(allowDeducts.ElementAt(0).ItemArray[8]); currentAmount = Convert.ToDouble(allowDeducts.ElementAt(0).ItemArray[8]); } else if (allowDeducts.ElementAt(1) != null) { previousAmount = Convert.ToDouble(allowDeducts.ElementAt(1).ItemArray[8]); currentAmount = Convert.ToDouble(allowDeducts.ElementAt(1).ItemArray[8]); } } } } } private void CreateWPPFDataRow(PayrollDataSet.PayrollDataSet.dtRewardStatementDataTable dtRewardStatement, DataRow row) { try { DataTable dtGradeWPPF = null; dtGradeWPPF = _dsRewardStatement.Tables["WPPF"]; if (dtGradeWPPF != null && (dtGradeWPPF.Rows != null && dtGradeWPPF.Rows.Count > 0)) { row["PrevYearWPPF"] = Convert.ToDouble(dtGradeWPPF.AsEnumerable().Where(x => Convert.ToInt32(x["EffectYear"]) == _previousYear).Select(x => x["Amount"]).FirstOrDefault()); row["CurrYearWPPF"] = Convert.ToDouble(dtGradeWPPF.AsEnumerable().Where(x => Convert.ToInt32(x["EffectYear"]) == _currentYear).Select(x => x["Amount"]).FirstOrDefault()); } dtGradeWPPF = _dsRewardStatement.Tables["WWF"]; if (dtGradeWPPF != null && (dtGradeWPPF.Rows != null && dtGradeWPPF.Rows.Count > 0)) { row["PrevYearWWF"] = Convert.ToDouble(dtGradeWPPF.AsEnumerable().Where(x => Convert.ToInt32(x["EffectYear"]) == _previousYear).Select(x => x["Amount"]).FirstOrDefault()); row["CurrYearWWF"] = Convert.ToDouble(dtGradeWPPF.AsEnumerable().Where(x => Convert.ToInt32(x["EffectYear"]) == _currentYear).Select(x => x["Amount"]).FirstOrDefault()); } dtGradeWPPF = _dsRewardStatement.Tables["WPPFClaim"]; if (dtGradeWPPF != null && (dtGradeWPPF.Rows != null && dtGradeWPPF.Rows.Count > 0)) { row["PrevYearWPPFClaim"] = Convert.ToDouble(dtGradeWPPF.AsEnumerable().Where(x => Convert.ToInt32(x["EffectYear"]) == _previousYear).Select(x => x["Amount"]).FirstOrDefault()); row["CurrYearWPPFClaim"] = Convert.ToDouble(dtGradeWPPF.AsEnumerable().Where(x => Convert.ToInt32(x["EffectYear"]) == _currentYear).Select(x => x["Amount"]).FirstOrDefault()); } } catch (Exception ex) { throw ex; } } private void CreateAllowDeductDataRow(PayrollDataSet.PayrollDataSet.dtRewardStatementDataTable dtRewardStatement, DataRow row, double previousbasic, double currentbasic, ref double previousGross, ref double currentGross) { try { double prevYearTotal = 0; double currYearTotal = 0; double previousADParamAmount = 0; double currentADParamAmount = 0; double amount = 0; List tempDataRow = null; ObjectsTemplate aDParams = ADParameter.Get(_employee.GradeID, EnumEntitleType.Grade, EnumAllowOrDeduct.Allowance); DataTable dtADParamEmps = _dsRewardStatement.Tables["ADPARAM"]; //Creating Basic Salary Row row["PrevYearBasic"] = previousbasic; row["CurrYearBasic"] = currentbasic; prevYearTotal += previousbasic; currYearTotal += currentbasic; previousGross += previousbasic; currentGross += currentbasic; foreach (ADParameter item in aDParams) { amount = 0; if (item.AllowanceDeduction.Name == "House Rent") { amount = item.GetGradeDefinedAmount(_employee, previousbasic, _employee.GrossSalary, new EmployeeGradeSalary()); row["PrevYearHouseRent"] = amount; prevYearTotal += amount; previousGross += amount; amount = item.GetGradeDefinedAmount(_employee, currentbasic, _employee.GrossSalary, new EmployeeGradeSalary()); row["CurrYearHouseRent"] = amount; currYearTotal += amount; currentGross += amount; } if (item.AllowanceDeduction.Name == "Medical") { amount = (item.GetGradeDefinedAmount(_employee, previousbasic, _employee.GrossSalary, new EmployeeGradeSalary()) * 12); row["PrevYearMedicalAllowance"] = amount; prevYearTotal += amount; previousGross += amount; amount = (item.GetGradeDefinedAmount(_employee, currentbasic, _employee.GrossSalary, new EmployeeGradeSalary()) * 12); row["CurrYearMedicalAllowance"] = amount; currYearTotal += amount; currentGross += amount; } if (item.AllowanceDeduction.Name == "Transport") { amount = (item.GetGradeDefinedAmount(_employee, previousbasic, _employee.GrossSalary, new EmployeeGradeSalary()) * 12); row["PrevYearTransportAllowance"] = amount; prevYearTotal += amount; amount = (item.GetGradeDefinedAmount(_employee, currentbasic, _employee.GrossSalary, new EmployeeGradeSalary()) * 12); row["CurrYearTransportAllowance"] = amount; currYearTotal += amount; } if (item.AllowanceDeduction.Name == "LFA") { amount = item.GetGradeDefinedAmount(_employee, previousbasic, _employee.GrossSalary, new EmployeeGradeSalary()); row["PrevYearLFA"] = amount; prevYearTotal += amount; previousGross += amount; amount = item.GetGradeDefinedAmount(_employee, currentbasic, _employee.GrossSalary, new EmployeeGradeSalary()); row["CurrYearLFA"] = amount; currYearTotal += amount; currentGross += amount; } } //ADParameter By Employee if (dtADParamEmps != null && dtADParamEmps.Rows != null && dtADParamEmps.Rows.Count > 0) { amount = 0; //Medical if (row.IsNull("CurrYearMedicalAllowance")) { tempDataRow = dtADParamEmps.AsEnumerable().Where(x => x.Field("Name") == "Medical").ToList(); this.FindPreviousCurrentADParamAmount(tempDataRow, ref previousADParamAmount, ref currentADParamAmount); amount = (previousADParamAmount * 12); row["PrevYearMedicalAllowance"] = amount; prevYearTotal += amount; previousGross += amount; amount = (currentADParamAmount * 12); row["CurrYearMedicalAllowance"] = amount; currYearTotal += amount; currentGross += amount; } //Transport if (row.IsNull("CurrYearTransportAllowance")) { previousADParamAmount = currentADParamAmount = 0; tempDataRow = dtADParamEmps.AsEnumerable().Where(x => x.Field("Name") == "Transport").ToList(); this.FindPreviousCurrentADParamAmount(tempDataRow, ref previousADParamAmount, ref currentADParamAmount); amount = (previousADParamAmount * 12); row["PrevYearTransportAllowance"] = amount; prevYearTotal += amount; amount = (currentADParamAmount * 12); row["CurrYearTransportAllowance"] = amount; currYearTotal += amount; } } //Creating GuarantedCash Row row["PrevYearGuarantedCash"] = prevYearTotal; row["CurrYearGuarantedCash"] = currYearTotal; } catch (Exception ex) { throw ex; } } private void CreateYearlyEligibleBonusDataRow(PayrollDataSet.PayrollDataSet.dtRewardStatementDataTable dtRewardStatement, DataRow row, double previousGross, double currentGross) { try { //string sbonusIDs = "" + "'" + "2" + "'" + "," + "'" + "3" + "'" + "," + "'" + "5" + "'" + "," + "'" + "6" + "'" + "," + "'" + "7" + "'"; int previousGrade = 0; int currentGrade = 0; double quaterlyBonus = 0; List bonusParam = null; DataTable dtBonusParam = _dsRewardStatement.Tables["BONUS"]; FindPreviousCurrentGrade(ref previousGrade, ref currentGrade); if (dtBonusParam.Rows != null && dtBonusParam.Rows.Count > 0) { //Individual Bonus //For Previous Grade bonusParam = dtBonusParam.AsEnumerable().Where(x => Convert.ToInt32(x["TranID"]) == previousGrade && Convert.ToInt32(x["BonusID"]) == 3).ToList(); if (bonusParam != null && bonusParam.Count > 0) { row["PrevYearIndividualBonus"] = (((previousGross * Convert.ToDouble(bonusParam.Select(x => x["PercentOfGross"]).FirstOrDefault())) / 100) * (Convert.ToDouble(bonusParam.Select(x => x["PerformanceBonusPercent"]).FirstOrDefault())) / 100); } //For Current Grade bonusParam = dtBonusParam.AsEnumerable().Where(x => Convert.ToInt32(x["TranID"]) == currentGrade && Convert.ToInt32(x["BonusID"]) == 3).ToList(); if (bonusParam != null && bonusParam.Count > 0) { row["CurrYearIndividualBonus"] = (((currentGross * Convert.ToDouble(bonusParam.Select(x => x["PercentOfGross"]).FirstOrDefault())) / 100) * (Convert.ToDouble(bonusParam.Select(x => x["PerformanceBonusPercent"]).FirstOrDefault())) / 100); } //Quarterly Bonus //For Previous Grade bonusParam = dtBonusParam.AsEnumerable().Where(x => Convert.ToInt32(x["TranID"]) == previousGrade && Convert.ToInt32(x["BonusID"]) == 5).ToList(); if (bonusParam != null && bonusParam.Count > 0) { quaterlyBonus += (((previousGross * Convert.ToDouble(bonusParam.Select(x => x["PercentOfGross"]).FirstOrDefault())) / 100) * (Convert.ToDouble(bonusParam.Select(x => x["PerformanceBonusPercent"]).FirstOrDefault())) / 100); } //bonusParam = dtBonusParam.AsEnumerable().Where(x => Convert.ToInt32(x["TranID"]) == previousGrade && Convert.ToInt32(x["BonusID"]) == 5).ToList(); //if (bonusParam != null && bonusParam.Count > 0) //{ // dtTempBonusParam = bonusParam.CopyToDataTable(); // if (dtTempBonusParam != null && dtTempBonusParam.Rows != null && dtTempBonusParam.Rows.Count > 0) // { // quaterlyBonus += (((previousGross * Convert.ToDouble(dtTempBonusParam.AsEnumerable().Select(x => x["PercentOfGross"]).FirstOrDefault())) / 100) // * (Convert.ToDouble(dtTempBonusParam.AsEnumerable().Select(x => x["PerformanceBonusPercent"]).FirstOrDefault())) / 100); // } //} //bonusParam = dtBonusParam.AsEnumerable().Where(x => Convert.ToInt32(x["TranID"]) == previousGrade && Convert.ToInt32(x["BonusID"]) == 6).ToList(); //if (bonusParam != null && bonusParam.Count > 0) //{ // dtTempBonusParam = bonusParam.CopyToDataTable(); // if (dtTempBonusParam != null && dtTempBonusParam.Rows != null && dtTempBonusParam.Rows.Count > 0) // { // quaterlyBonus += (((previousGross * Convert.ToDouble(dtTempBonusParam.AsEnumerable().Select(x => x["PercentOfGross"]).FirstOrDefault())) / 100) // * (Convert.ToDouble(dtTempBonusParam.AsEnumerable().Select(x => x["PerformanceBonusPercent"]).FirstOrDefault())) / 100); // } //} //bonusParam = dtBonusParam.AsEnumerable().Where(x => Convert.ToInt32(x["TranID"]) == previousGrade && Convert.ToInt32(x["BonusID"]) == 7).ToList(); //if (bonusParam != null && bonusParam.Count > 0) //{ // dtTempBonusParam = bonusParam.CopyToDataTable(); // if (dtTempBonusParam != null && dtTempBonusParam.Rows != null && dtTempBonusParam.Rows.Count > 0) // { // quaterlyBonus += (((previousGross * Convert.ToDouble(dtTempBonusParam.AsEnumerable().Select(x => x["PercentOfGross"]).FirstOrDefault())) / 100) // * (Convert.ToDouble(dtTempBonusParam.AsEnumerable().Select(x => x["PerformanceBonusPercent"]).FirstOrDefault())) / 100); // } //} row["PrevYearQuarterlyBonus"] = quaterlyBonus; //For Current Grade quaterlyBonus = 0; bonusParam = dtBonusParam.AsEnumerable().Where(x => Convert.ToInt32(x["TranID"]) == currentGrade && Convert.ToInt32(x["BonusID"]) == 5).ToList(); if (bonusParam != null && bonusParam.Count > 0) { quaterlyBonus += (((currentGross * Convert.ToDouble(bonusParam.Select(x => x["PercentOfGross"]).FirstOrDefault())) / 100) * (Convert.ToDouble(bonusParam.Select(x => x["PerformanceBonusPercent"]).FirstOrDefault())) / 100); } //bonusParam = dtBonusParam.AsEnumerable().Where(x => Convert.ToInt32(x["TranID"]) == currentGrade && Convert.ToInt32(x["BonusID"]) == 5).ToList(); //if (bonusParam != null && bonusParam.Count > 0) //{ // dtTempBonusParam = bonusParam.CopyToDataTable(); // if (dtTempBonusParam != null && dtTempBonusParam.Rows != null && dtTempBonusParam.Rows.Count > 0) // { // quaterlyBonus += (((currentGross * Convert.ToDouble(dtTempBonusParam.AsEnumerable().Select(x => x["PercentOfGross"]).FirstOrDefault())) / 100) // * (Convert.ToDouble(dtTempBonusParam.AsEnumerable().Select(x => x["PerformanceBonusPercent"]).FirstOrDefault())) / 100); // } //} //bonusParam = dtBonusParam.AsEnumerable().Where(x => Convert.ToInt32(x["TranID"]) == currentGrade && Convert.ToInt32(x["BonusID"]) == 6).ToList(); //if (bonusParam != null && bonusParam.Count > 0) //{ // dtTempBonusParam = bonusParam.CopyToDataTable(); // if (dtTempBonusParam != null && dtTempBonusParam.Rows != null && dtTempBonusParam.Rows.Count > 0) // { // quaterlyBonus += (((currentGross * Convert.ToDouble(dtTempBonusParam.AsEnumerable().Select(x => x["PercentOfGross"]).FirstOrDefault())) / 100) // * (Convert.ToDouble(dtTempBonusParam.AsEnumerable().Select(x => x["PerformanceBonusPercent"]).FirstOrDefault())) / 100); // } //} //bonusParam = dtBonusParam.AsEnumerable().Where(x => Convert.ToInt32(x["TranID"]) == currentGrade && Convert.ToInt32(x["BonusID"]) == 7).ToList(); //if (bonusParam != null && bonusParam.Count > 0) //{ // dtTempBonusParam = bonusParam.CopyToDataTable(); // if (dtTempBonusParam != null && dtTempBonusParam.Rows != null && dtTempBonusParam.Rows.Count > 0) // { // quaterlyBonus += (((currentGross * Convert.ToDouble(dtTempBonusParam.AsEnumerable().Select(x => x["PercentOfGross"]).FirstOrDefault())) / 100) // * (Convert.ToDouble(dtTempBonusParam.AsEnumerable().Select(x => x["PerformanceBonusPercent"]).FirstOrDefault())) / 100); // } //} row["CurrYearQuarterlyBonus"] = quaterlyBonus; //Company Bonus //For Previous Grade bonusParam = dtBonusParam.AsEnumerable().Where(x => Convert.ToInt32(x["TranID"]) == previousGrade && Convert.ToInt32(x["BonusID"]) == 4).ToList(); if (bonusParam != null && bonusParam.Count > 0) { row["PrevYearCompanyBonus"] = (((previousGross * Convert.ToDouble(bonusParam.Select(x => x["PercentOfGross"]).FirstOrDefault())) / 100) * (Convert.ToDouble(bonusParam.Select(x => x["PerformanceBonusPercent"]).FirstOrDefault())) / 100); } //For Current Grade bonusParam = dtBonusParam.AsEnumerable().Where(x => Convert.ToInt32(x["TranID"]) == currentGrade && Convert.ToInt32(x["BonusID"]) == 4).ToList(); if (bonusParam != null && bonusParam.Count > 0) { row["CurrYearCompanyBonus"] = (((currentGross * Convert.ToDouble(bonusParam.Select(x => x["PercentOfGross"]).FirstOrDefault())) / 100) * (Convert.ToDouble(bonusParam.Select(x => x["PerformanceBonusPercent"]).FirstOrDefault())) / 100); } } } catch (Exception ex) { throw ex; } } } }