EchoTex_Payroll/HRM.Report/Class/rptIncomeTax.cs

3486 lines
189 KiB
C#
Raw Normal View History

2024-10-14 10:01:49 +06:00
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Ease.Core.Model;
using HRM.BO;
using HRM.DA;
using Microsoft.Reporting.NETCore;
namespace HRM.Report
{
public class RptIncomeTax
{
private int _TaxParameterID;
private double _InvestmentAmount = 0.0;
private double _TotalTaxAmount = 0.0;
private double _LessExemptedAmount = 0.0;
private double _PaidTillDateAmount = 0.0;
private double _ThisMonthAmount = 0.0;
private double _ProjectedAmount = 0.0;
private double _AmountPerAnnum = 0.0;
private double _TotalSalaryExempted = 0.0;
private double _TotalAnnuaExempted = 0.0;
private double _TPaidTillDateAmount = 0.0;
private double _TThisMonthAmount = 0.0;
private double _TProjectedAmount = 0.0;
private double _TAmountPerAnnum = 0.0;
List<Employee> _Employees = null;
private double[] m_nXpos;
private double[] m_nCXpos;
private double[] m_nCXpos2;
private double[] m_nExptXpos;
private double[] m_nColWidth;
private double[] m_nCColWidth;
private double[] m_nCColWidth2;
private double m_nYpos;
private int m_nCurPage;
private double m_nTotalWidth;
private double m_nCTotalWidth;
private double m_nCTotalWidth2;
private double _pfInvestment;
private double _otherInvestment;
private double _investmentAllowed;
private double _20Investment;
DataSet _dSet = new DataSet();
DataSet _dITSlabs = new DataSet();
ReportItem _item = null;
DataTable _dTable = new DataTable();
string RDLC = string.Empty;
private List<IncomeTax> _incometaxes;
private TaxParameter _taxParameter;
private Employee _employee;
private bool _investmentwithoutPF;
private bool _IsTaxCertificate;
private double _actualInvestment;
private bool _isPrvs = false;
int nIndex = 0;
int empID = 0;
Employee oEmp = null;
Grade oGrade = null;
Department oDepartment = null;
Designation oDesignation = null;
List<Employee> oEmployees = null;
List<Grade> oGrades = null;
List<Department> oDepartments = null;
List<Designation> oDesignations = null;
List<EmployeeCostCenter> oEmployeeCostCenters = null;
List<ArrearProcessDetail> oArrearProcessDetails = null;
List<TaxParameter> _taxParameters = null;
List<IncomeTax> oincometaxes = null;
ReportParameter rParam = null;
private List<ReportParameter> reportParameters = new List<ReportParameter>();
private string signaturePath = "";
public byte[] GetDataReport108(int nTaxParamID, string sEmpNo, int payrollTypeId, int systemTaxParamID, DateTime nextPayProcessDate, string reportType)
{
TaxParameter otaxparam = new TaxParameterService().Get(nTaxParamID);
DataRow oDRow = null;
PayrollDataSet.PayrollDataSet.Report108DataTable dTreport108 = new PayrollDataSet.PayrollDataSet.Report108DataTable();
int nIndex;
int nCount = 1;
double GrandTotal;
List<IncomeTax> oIncomeTaxs = null;
IncomeTax oIncomeTax = new IncomeTax();
//_Employees = Employee.GetWithDiscontinue();
_Employees = new EmployeeService().GetEmpsWithDiscontinue(sEmpNo, payrollTypeId);
double nAmount = 0;
double nFesAmount = 0;
double nRebAmount = 0;
double nPFCFAmount = 0;
double nBonusArrearLeaveOverTimeAmount = 0;
double nTempAmount = 0;
double nOthers = 0;
List<Designation> designations = new DesignationService().Get(EnumStatus.Regardless, payrollTypeId);
Designation desig = null;
double totalAnnualIncome = 0;
double tExemption = 0;
foreach (Employee oEmp in _Employees)
{
totalAnnualIncome = 0;
GrandTotal = 0.0;
oDRow = dTreport108.NewRow();
if (nTaxParamID == systemTaxParamID)
{
oIncomeTaxs = new IncomeTaxService().Get(GetEnumForSalaryIT(oEmp.ID, nextPayProcessDate), oEmp.ID, nTaxParamID);
}
else
{
oIncomeTaxs = new IncomeTaxService().Get(EnumIncomeTaxDataFrom.ProcessedData, oEmp.ID, nTaxParamID);
}
if (oIncomeTaxs == null) continue;
nTempAmount = 0;
nAmount = 0;
GrandTotal = 0;
List<TaxChallan> oTaxChallans = new TaxChallanService().Get(nTaxParamID, nTaxParamID);
if (oIncomeTax != null)
{
desig = designations.FirstOrDefault(x => x.ID == oEmp.DesignationID);
//nIndex = oIncomeTaxs.GetIndex(oEmp.ID);
oDRow["TIN"] = oEmp.TinNo;
oDRow["SLNo"] = nCount;//col 1
oDRow["EmpNo"] = oEmp.EmployeeNo;
oDRow["Name"] = oEmp.Name;//col 2
oDRow["PostalAdd"] = "";//Postal Address ,col 3
oDRow["NEmployee"] = desig != null ? desig.Name : "";//Designation of Employee ,col 4
//
nAmount = GlobalFunctions.Round(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Basic_Salary, (int)EnumIncomeTaxItemGroup.Basic_Salary) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Basic_Salary, (int)EnumIncomeTaxItemGroup.Basic_Salary).TotalAmount : 0.0);//Total Amount of Salary Basic+Bonus, col 5
totalAnnualIncome += nAmount;
GrandTotal = GrandTotal + nAmount;
oDRow["Basic"] = GlobalFunctions.TakaFormat(nAmount);
//nAmount = GlobalFunctions.Round(IncomeTax.GetAmount(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Bonus));
//GrandTotal = GrandTotal + nAmount;
//oDRow["Bonus"] = GlobalFunctions.TakaFormat(nAmount);
//oDRow["Total"] = GlobalFunctions.TakaFormat(GrandTotal);
//
nAmount = GlobalFunctions.Round(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.House_Rent_Allowance, (int)EnumIncomeTaxItemGroup.House_Rent_Allowance) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.House_Rent_Allowance, (int)EnumIncomeTaxItemGroup.House_Rent_Allowance).TotalAmount : 0.0);//Periodical Cash Allowance, col 6
totalAnnualIncome += nAmount;
nTempAmount = nTempAmount + nAmount;
oDRow["HREarned"] = GlobalFunctions.TakaFormat(nAmount);
nAmount = GlobalFunctions.Round(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Exemption_House_Rent_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_House_Rent_Allowance) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Exemption_House_Rent_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_House_Rent_Allowance).TotalAmount : 0.0);
oDRow["HRExempted"] = GlobalFunctions.TakaFormat(nAmount);
nTempAmount = nTempAmount - nAmount;
oDRow["HRTaxable"] = GlobalFunctions.TakaFormat(nTempAmount);
GrandTotal = GrandTotal + nTempAmount;
nTempAmount = 0;
nAmount = 0;
IncomeTax oITax = new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Conveyance_Allowance, (int)EnumIncomeTaxItemGroup.Conveyance_Allowance);
if (oITax != null)
{
//
nAmount = oITax.TotalAmount;
totalAnnualIncome += nAmount;
oDRow["CEarned"] = GlobalFunctions.TakaFormat(oITax.TotalAmount);
}
else
oDRow["CEarned"] = 0.0;
nTempAmount = GlobalFunctions.Round(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Exemption_Conveyance_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_Conveyance_Allowance) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Exemption_Conveyance_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_Conveyance_Allowance).TotalAmount : 0.0);
oDRow["CExempted"] = GlobalFunctions.TakaFormat(nTempAmount);
oDRow["CTaxable"] = GlobalFunctions.TakaFormat(nAmount - nTempAmount);
GrandTotal = GrandTotal + nAmount - nTempAmount;
nTempAmount = 0;
//
nAmount = GlobalFunctions.Round(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Medical_Allowance, (int)EnumIncomeTaxItemGroup.Medical_Allowance) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Medical_Allowance, (int)EnumIncomeTaxItemGroup.Medical_Allowance).TotalAmount : 0);
totalAnnualIncome += nAmount;
oDRow["MEarned"] = GlobalFunctions.TakaFormat(nAmount);
nTempAmount = GlobalFunctions.Round(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Exemption_Medical_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_Medical_Allowance) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Exemption_Medical_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_Medical_Allowance).TotalAmount : 0.0);
oDRow["MExempted"] = GlobalFunctions.TakaFormat(nTempAmount);
oDRow["MTaxable"] = GlobalFunctions.TakaFormat(nAmount - nTempAmount);
GrandTotal = GrandTotal + nAmount - nTempAmount;
oDRow["Entertainment"] = 0;
nAmount = 0;
nTempAmount = 0;
IncomeTax totalExemption = Get(oIncomeTaxs, oEmp.ID,
EnumIncomeTaxItemGroup.AnnualExemption, (int)EnumIncomeTaxItemGroup.AnnualExemption);
if (totalExemption != null)
{
tExemption = totalExemption.TotalAmount;
}
if (nTaxParamID >= 2) //nTaxParamID.Integer == 2 (this line of code is changed by Tamanna consulting with chapal vai in 19 August 2020)
{
foreach (IncomeTax titem in oIncomeTaxs)
{
if (titem.Side == EnumIncomeTaxSide.Inc_SalaryIncome)
{
if (titem.ItemGroup != EnumIncomeTaxItemGroup.Basic_Salary
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Bonus
&& titem.ItemGroup != EnumIncomeTaxItemGroup.House_Rent_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Conveyance_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Cmp_Provided_car
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Cmp_Provided_House
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Medical_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.LFA_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.WPPF_Allowance
&& !titem.Description.Contains("Festive")
&& !titem.Description.Contains("Festival")
&& !titem.Description.Contains("LFA")
&& !titem.Description.Contains("Leave Encashment")
&& !titem.Description.Contains("Gratuity")
)
{
//
nAmount = nAmount + titem.TotalAmount;
}
}
}
foreach (IncomeTax titem in oIncomeTaxs)
{
if (titem.Side == EnumIncomeTaxSide.Inc_SalaryIncome)
{
if (titem.Description.Contains("Festive")
|| titem.Description.Contains("Festival")
|| titem.Description.Contains("LFA")
|| titem.Description.Contains("Leave Encashment")
|| titem.Description.Contains("Gratuity")
)
{
nTempAmount = nTempAmount + titem.TotalAmount;
}
}
}
}
else
{
foreach (IncomeTax titem in oIncomeTaxs)
{
if (titem.Side == EnumIncomeTaxSide.Inc_SalaryIncome)
{
if (titem.ItemGroup != EnumIncomeTaxItemGroup.Basic_Salary
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Bonus
&& titem.ItemGroup != EnumIncomeTaxItemGroup.House_Rent_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Conveyance_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Cmp_Provided_car
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Cmp_Provided_House
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Medical_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.LFA_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.WPPF_Allowance)
{
//
nAmount = nAmount + titem.TotalAmount;
}
}
}
}
nOthers = 0;
foreach (IncomeTax titem in oIncomeTaxs)
{
if (titem.Side == EnumIncomeTaxSide.Inc_SalaryIncome)
{
if (titem.ItemGroup != EnumIncomeTaxItemGroup.Basic_Salary
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Bonus
&& titem.ItemGroup != EnumIncomeTaxItemGroup.House_Rent_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Conveyance_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Cmp_Provided_car
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Cmp_Provided_House
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Medical_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.LFA_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.WPPF_Allowance
&& !titem.Description.Contains("TA Reimbursement")
&& !titem.Description.Contains("Festive")
&& !titem.Description.Contains("Festival")
&& !titem.Description.Contains("LFA")
&& !titem.Description.Contains("Leave Encashment")
&& !titem.Description.Contains("Gratuity")
&& !titem.Description.Contains("Joining Bonus")
&& titem.ItemGroup != EnumIncomeTaxItemGroup.TimeCard
)
{
//
nOthers = nOthers + titem.TotalAmount;
}
}
}
totalAnnualIncome += nAmount + nTempAmount;
oDRow["Others"] = GlobalFunctions.TakaFormat(nOthers);
GrandTotal = GrandTotal + nAmount + nTempAmount;
IncomeTax taItem = oIncomeTaxs.Where(x => x.Description.Contains("TA Reimbursement")).FirstOrDefault();
if (taItem != null)
{
oDRow["CashReimbursement"] = GlobalFunctions.TakaFormat(taItem.TotalAmount);
}
double wppf = 0;
double wppfExamp = 0;
if (oIncomeTaxs.Any(item => item.ItemGroup == EnumIncomeTaxItemGroup.WPPF_Examption && item.TotalAmount > 0))
wppfExamp = oIncomeTaxs.Where(i => i.ItemGroup == EnumIncomeTaxItemGroup.WPPF_Examption).Select(i => i.TotalAmount).FirstOrDefault();
oDRow["WPPFExemption"] = GlobalFunctions.TakaFormat(wppfExamp);
if (oIncomeTaxs.Any(item => item.ItemGroup == EnumIncomeTaxItemGroup.WPPF_Allowance && item.TotalAmount > 0))
wppf = oIncomeTaxs.Where(i => i.ItemGroup == EnumIncomeTaxItemGroup.WPPF_Allowance).Select(i => i.TotalAmount).FirstOrDefault();
oDRow["WPPF"] = GlobalFunctions.TakaFormat(wppf);
oDRow["WPPFTaxable"] = GlobalFunctions.TakaFormat(wppf - wppfExamp);
GrandTotal = GrandTotal + (wppf - wppfExamp);
oDRow["FDate"] = (oEmp.JoiningDate > otaxparam.FiscalyearDatefrom) ? oEmp.JoiningDate.ToString("dd MMM yyyy") : otaxparam.FiscalyearDatefrom.ToString("dd MMM yyyy");
oDRow["TDate"] = (oEmp.Status != EnumEmployeeStatus.Live) ? ((DateTime)oEmp.DiscontinueDate).ToString("dd MMM yyyy") : otaxparam.FiscalyearDateTo.ToString("dd MMM yyyy");
oDRow["SANDOtherSum"] = 0;//Salary and all other Sum ,col 8
nAmount = new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Cmp_Provided_House, (int)EnumIncomeTaxItemGroup.Cmp_Provided_House) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Cmp_Provided_House, (int)EnumIncomeTaxItemGroup.Cmp_Provided_House).TotalAmount : 0.0;
GrandTotal = GrandTotal + nAmount;
oDRow["BasicPercent"] = GlobalFunctions.TakaFormat(nAmount);
oDRow["EnterAllowance"] = 0;//Amount of Entertaitment Allowance ,col 10
nAmount = new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Cmp_Provided_car, (int)EnumIncomeTaxItemGroup.Cmp_Provided_car) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Cmp_Provided_car, (int)EnumIncomeTaxItemGroup.Cmp_Provided_car).TotalAmount : 0.0;
GrandTotal = GrandTotal + nAmount;
oDRow["VechilesPercent"] = GlobalFunctions.TakaFormat(nAmount);
oDRow["SPByEmployeer"] = 0;//Salary Paid by employeer ,col 12
oDRow["VOfFree"] = 0;//Value of Rent Free Accomodation or Value of any Concession in Rent for the Accomodation provided by the Employer,col 13
//
nAmount = new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Company_Contri_PF, (int)EnumIncomeTaxItemGroup.Company_Contri_PF) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Company_Contri_PF, (int)EnumIncomeTaxItemGroup.Company_Contri_PF).TotalAmount : 0;
totalAnnualIncome += nAmount;
oDRow["EContribution"] = GlobalFunctions.TakaFormat(nAmount);
GrandTotal = GrandTotal + nAmount;
oDRow["InterestCredit"] = 0; //Math.Round(IncomeTax.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Gross_Tax, (int)EnumIncomeTaxItemGroup.Gross_Tax) != null ? IncomeTax.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Gross_Tax, (int)EnumIncomeTaxItemGroup.Gross_Tax).TotalAmount : 0);//Interest Credit to the assessee's accout in a recognised provident fund,col 15
oDRow["VofAnyBenefit"] = 0;//Value of any benefit ,col 15
//GrandTotal = GrandTotal +
// Convert.ToDouble(oDRow["SANDOtherSum"]) +
// Convert.ToDouble(oDRow["BasicPercent"]) +
// Convert.ToDouble(oDRow["EnterAllowance"]) +
// Convert.ToDouble(oDRow["VechilesPercent"]) +
// Convert.ToDouble(oDRow["SPByEmployeer"]) +
// Convert.ToDouble(oDRow["VOfFree"]) +
// Convert.ToDouble(oDRow["EContribution"])
// + Convert.ToDouble(oDRow["InterestCredit"])
// + Convert.ToDouble(oDRow["VofAnyBenefit"]);
oDRow["TotalCol"] = GlobalFunctions.TakaFormat(GrandTotal);//Total Col 5,6,8 to 16 ,col 16
oDRow["AmountLiable"] = GlobalFunctions.TakaFormat(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Gross_Tax, (int)EnumIncomeTaxItemGroup.Gross_Tax) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Gross_Tax, (int)EnumIncomeTaxItemGroup.Gross_Tax).TotalAmount : 0);//Amount Liable to tax under section 21 of income tax ordinance 1984 ,col 17
//GlobalFunctions.TakaFormat(IncomeTax.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Credit_On_Investment, (int)EnumIncomeTaxItemGroup.Tax_Credit_On_Investment) != null ? IncomeTax.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Credit_On_Investment, (int)EnumIncomeTaxItemGroup.Tax_Credit_On_Investment).TotalAmount : 0);//Amount Liable to tax under section 21 of income tax ordinance 1984 ,col 17
oDRow["ConToTheProvident"] = GlobalFunctions.TakaFormat(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Credit_On_Investment, (int)EnumIncomeTaxItemGroup.Tax_Credit_On_Investment) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Credit_On_Investment, (int)EnumIncomeTaxItemGroup.Tax_Credit_On_Investment).TotalAmount : 0);//Amount Liable to tax under section 21 of income tax ordinance 1984 ,col 17;//Contribution to the provident ,col 18
oDRow["InvestmentAllowed"] = GlobalFunctions.TakaFormat(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Investment_Allowed, (int)EnumIncomeTaxItemGroup.Investment_Allowed) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Investment_Allowed, (int)EnumIncomeTaxItemGroup.Investment_Allowed).TotalAmount : 0);//Amount Liable to tax under section 21 of income tax ordinance 1984 ,col 17;//Contribution to the provident ,col 18
oDRow["LFA"] = nTaxParamID >= 2
? GlobalFunctions.TakaFormat(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.LFA_Allowance, 43) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.LFA_Allowance, 43).TotalAmount : new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Other_Allowance, 43) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Other_Allowance, 43).TotalAmount : 0)
: GlobalFunctions.TakaFormat(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.LFA_Allowance, (int)EnumIncomeTaxItemGroup.LFA_Allowance) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.LFA_Allowance, (int)EnumIncomeTaxItemGroup.LFA_Allowance).TotalAmount : 0);
oDRow["LFAExamption"] = GlobalFunctions.TakaFormat(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Exemption_LFA_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_LFA_Allowance) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Exemption_LFA_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_LFA_Allowance).TotalAmount : 0);
oDRow["AIT"] = GlobalFunctions.TakaFormat(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Gross_OtherRebate, (int)EnumIncomeTaxItemGroup.Tax_Gross_OtherRebate) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Gross_OtherRebate, (int)EnumIncomeTaxItemGroup.Tax_Gross_OtherRebate).TotalAmount : 0);
oDRow["TaxIncome"] = GlobalFunctions.TakaFormat(GrandTotal); //GlobalFunctions.TakaFormat(IncomeTax.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Gross_Refund, (int)EnumIncomeTaxItemGroup.Gross_Tax) != null ? IncomeTax.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Gross_Refund, (int)EnumIncomeTaxItemGroup.Gross_Tax).TotalAmount : 0);//Taxable Income ,col 19
//double ndjustedAmount = 0.0;
//double totalAmountNow = 0.0;
//if (nTaxParamID != Payroll.BO.SystemInformation.CurrentSysInfo.TaxParamID)
//{
// foreach (IncomeTax oItem in oIncomeTaxs)
// {
// if (oItem.Side == EnumIncomeTaxSide.Inc_GrossTax || oItem.Side == EnumIncomeTaxSide.Dec_GrossTax)
// {
// if (oItem.ItemGroup != EnumIncomeTaxItemGroup.Tax_Credit_On_Investment)
// {
// if (oItem.Side == EnumIncomeTaxSide.Inc_GrossTax)
// ndjustedAmount = ndjustedAmount + oItem.TotalAmount;
// else
// ndjustedAmount = ndjustedAmount - oItem.TotalAmount;
// }
// }
// }
// IncomeTax oNetTaxPayable = IncomeTax.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Net_Payable, (int)EnumIncomeTaxItemGroup.Net_Payable);
// if (oNetTaxPayable != null)
// {
// oNetTaxPayable.TotalAmount = oNetTaxPayable.TotalAmount - ndjustedAmount;
// totalAmountNow = oNetTaxPayable.TotalAmount;
// oDRow["TaxPayable"] = GlobalFunctions.TakaFormat(oNetTaxPayable.TotalAmount);
// }
//}
//else
//{
IncomeTax oTax = new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Net_Payable, (int)EnumIncomeTaxItemGroup.Net_Payable);
IncomeTax oDeductTax = new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Deducted, (int)EnumIncomeTaxItemGroup.Tax_Deducted);
oDRow["TaxPayable"] = GlobalFunctions.TakaFormat(oTax.TotalAmount);
//if (oTax != null)
//{
// if (Convert.ToDouble(oDRow["AIT"].ToString()) > 0 && oTax.TotalAmount < 5000)//&&(oDeductTax.TotalAmount >= 5000 && oDeductTax.TotalAmount <= 6000)
// {
// oDRow["TaxPayable"] = GlobalFunctions.TakaFormat(Convert.ToDouble(5000));
// }
// else
// {
// oDRow["TaxPayable"] = GlobalFunctions.TakaFormat(oTax.TotalAmount);
// }
//}
//else
//{
// oDRow["TaxPayable"] = GlobalFunctions.TakaFormat(0);
//}
//oDRow["TaxPayable"] =
// GlobalFunctions.TakaFormat(
// IncomeTax.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Net_Payable,
// (int)EnumIncomeTaxItemGroup.Net_Payable) != null
// ? IncomeTax.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Net_Payable,
// (int)EnumIncomeTaxItemGroup.Net_Payable).TotalAmount
// : 0); //Tax Payable ,col 20
// }
oDRow["ThisMonthAmount"] = GlobalFunctions.TakaFormat(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Deducted, (int)EnumIncomeTaxItemGroup.Tax_Deducted) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Deducted, (int)EnumIncomeTaxItemGroup.Tax_Deducted).ThisMonthAmount : 0);
//if (nTaxParamID != Payroll.BO.SystemInformation.CurrentSysInfo.TaxParamID)
//{
// oDRow["TaxActualDeduct"] = GlobalFunctions.TakaFormat(totalAmountNow);
//}
//else
//{
//oDRow["TaxActualDeduct"] =
// GlobalFunctions.TakaFormat(
// new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Deducted,
// (int)EnumIncomeTaxItemGroup.Tax_Deducted) != null
// ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Deducted,
// (int)EnumIncomeTaxItemGroup.Tax_Deducted).TotalAmount
// : 0); //Tax actually deduct ,col 21
// }
//This condition is added for sgs
var companyNameObj = new SystemConfigarationService().GetconfigValue(EnumConfigurationType.Logic, "system", "company");
string companyName = Convert.ToString(companyNameObj);
if (companyName == "SGS Bangladesh Limited")
{
TaxParameter taxParameter = new TaxParameterService().Get(nTaxParamID);
PayrollType pType = new PayrollTypeService().Get(payrollTypeId);
IncomeTax totalAnnualIncomeForSlab = new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Annual_Income, (int)EnumIncomeTaxItemGroup.Annual_Income);
List<TaxParameterSlab> empTaxSlabs = CalculateTaxOnSlab(taxParameter, oEmp, totalAnnualIncomeForSlab.TotalAmount);
//int index = 0;
//DataRow dr = null;
double netAmmountSGS = 0.0;
foreach (TaxParameterSlab drr in empTaxSlabs)
{
if (drr.IncomeAmount == empTaxSlabs[0].IncomeAmount && drr.IncomeAmount > drr.SlabTaxableAmount)
{
netAmmountSGS = 0;
break;
}
netAmmountSGS = netAmmountSGS + drr.SlabTaxAmount;
}
//double netAmmountSGS = ngrossTax;
if(netAmmountSGS != 0)
{
foreach (IncomeTax oItem in oIncomeTaxs)
{
if ((oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Gross_OtherRebate && oItem.ItemID == -227) || (oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Credit_On_Investment && oItem.ItemID == -210))
//|| (oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Gross_OtherAddable && oItem.ItemID == 2))
netAmmountSGS = netAmmountSGS - oItem.TotalAmount;
}
}
//if (netAmmountSGS == 0)
// netAmmountSGS = 0.00;
if (netAmmountSGS < 0 || (netAmmountSGS > 0 && netAmmountSGS < 5000))
{
//netAmmountSGS = 5000;
DataTable dtTaxRegion = null;
dtTaxRegion = new SGSExceptionReportService().GetTaxRegionDTByEmpId(oIncomeTaxs[0].TaxParameterID, oEmp.ID);
if (dtTaxRegion.Rows.Count > 0)
{
foreach (DataRow row in dtTaxRegion.Rows)
{
short regionType = (short)row["TaxRegionType"];
if (oEmp.TaxCircle == EnumTaxCircle.CityCorporation)
{
netAmmountSGS = 4000;
}
if (oEmp.TaxCircle == EnumTaxCircle.Union)
{
netAmmountSGS = 3000;
}
}
}
else
netAmmountSGS = 5000;
}
oDRow["TaxActualDeduct"] = GlobalFunctions.TakaFormat(netAmmountSGS);
}
else
{
oDRow["TaxActualDeduct"] =
GlobalFunctions.TakaFormat(
new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Deducted,
(int)EnumIncomeTaxItemGroup.Tax_Deducted) != null
? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Deducted,
(int)EnumIncomeTaxItemGroup.Tax_Deducted).TotalAmount
: 0); //Tax actually deduct ,col 21
}
oDRow["TotalChallan"] = oTaxChallans.Count > 0 ? GlobalFunctions.TakaFormat(oTaxChallans.Where(x => x.EmployeeID == oEmp.ID).Sum(x => x.Amount)) : "0";
oDRow["ThisYearBasicPay"] = new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Basic_Salary, (int)EnumIncomeTaxItemGroup.Basic_Salary) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Basic_Salary, (int)EnumIncomeTaxItemGroup.Basic_Salary).TotalAmount : 0;
foreach (IncomeTax titem in oIncomeTaxs)
{
if (EnumIncomeTaxItemGroup.Company_Contri_PF == titem.ItemGroup ||
titem.Description.Contains("Gratuity")
)
{
//
//nPFCFAmount = nPFCFAmount + titem.TotalAmount;
nPFCFAmount = titem.TotalAmount;
}
}
oDRow["CompanyPf"] = nPFCFAmount;
nBonusArrearLeaveOverTimeAmount = 0;
foreach (IncomeTax titem in oIncomeTaxs)
{
if (titem.Side == EnumIncomeTaxSide.Inc_SalaryIncome)
{
//if (titem.Description.Contains("Arrear") || titem.Description.Contains("Leave Encashment") || titem.Description.Contains("overtime") || titem.Description.Contains("Advance") ||
// (titem.Description.Contains("Bonus") && !(titem.Description.Contains("Festive")
// || titem.Description.Contains("Festival")))
// )
if (titem.Description.Contains("Arrear") || titem.Description.Contains("Leave Encashment") || titem.Description.Contains("overtime") || titem.Description.Contains("Advance") || titem.Description.Contains("Dress Allowance") ||
( titem.Description.Contains("Bonus") || titem.Description.Contains("Over Time") ||
(titem.Description.Contains("Festive") || titem.Description.Contains("Festival")))
)
{
//
nBonusArrearLeaveOverTimeAmount = nBonusArrearLeaveOverTimeAmount + titem.TotalAmount;
}
}
}
oDRow["BonusArrearLeaveOverTimeAmount"] = nBonusArrearLeaveOverTimeAmount;
nFesAmount = 0;
//foreach (IncomeTax titem in oIncomeTaxs)
//{
// if (titem.Side == EnumIncomeTaxSide.Inc_SalaryIncome)
// {
// if (
// titem.Description.Contains("Festive")
// || titem.Description.Contains("Festival")
// )
// {
// //
// nFesAmount = nFesAmount + titem.TotalAmount;
// }
// }
//}
oDRow["FestivalBonus"] = nFesAmount;
oDRow["Remarks"] = "";//Remarks ,col 22
//IncomeTax totalExemption = Get(oIncomeTaxs, oEmp.ID,
//EnumIncomeTaxItemGroup.AnnualExemption, (int)EnumIncomeTaxItemGroup.AnnualExemption);
//if (totalExemption != null)
//{
// tExemption = totalExemption.TotalAmount;
//}
//oDRow["ExemptedIncome"] = Convert.ToDouble(oDRow["HRExempted"].ToString()) + Convert.ToDouble(oDRow["CExempted"].ToString()) + Convert.ToDouble(oDRow["MExempted"].ToString()) + Convert.ToDouble(oDRow["WPPFExemption"].ToString()) + Convert.ToDouble(oDRow["LFAExamption"].ToString());
oDRow["ExemptedIncome"] = tExemption; ;
nRebAmount = GlobalFunctions.Round(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Credit_On_Investment, (int)EnumIncomeTaxItemGroup.Tax_Credit_On_Investment) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Credit_On_Investment, (int)EnumIncomeTaxItemGroup.Tax_Credit_On_Investment).TotalAmount : 0.0);
oDRow["RebateIncome"] = nRebAmount;
//oDRow["TotalAnnualIncome"] = GlobalFunctions.TakaFormat(totalAnnualIncome + nBonusArrearLeaveOverTimeAmount);
//oDRow["TotalAnnualIncome"] = GlobalFunctions.TakaFormat(totalAnnualIncome);
oDRow["TotalAnnualIncome"] = GlobalFunctions.TakaFormat(GlobalFunctions.Round(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Annual_Income, (int)EnumIncomeTaxItemGroup.Annual_Income) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Annual_Income, (int)EnumIncomeTaxItemGroup.Annual_Income).TotalAmount : 0.0));
//oDRow["Total"] = GlobalFunctions.TakaFormat(Convert.ToDouble(oDRow["TotalAnnualIncome"].ToString()) - Convert.ToDouble(oDRow["ExemptedIncome"].ToString()));
oDRow["Total"] = GlobalFunctions.TakaFormat(GlobalFunctions.Round(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Annual_Salary_Income, (int)EnumIncomeTaxItemGroup.Annual_Salary_Income) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Annual_Salary_Income, (int)EnumIncomeTaxItemGroup.Annual_Salary_Income).TotalAmount : 0.0));
dTreport108.Rows.Add(oDRow);
nCount++;
}
}
ReportProcessor reportProcessor = new ReportProcessor();
return reportProcessor.ShowDlgForReport108(null, dTreport108, payrollTypeId, reportType, otaxparam.AssessmentYear);
}
public byte[] GetDataReport177(string sEmpNo, int payrollTypeId, DateTime SalaryMonth, string reportType)
{
// TaxParameter otaxparam = new TaxParameterService().Get(nTaxParamID);
DataRow oDRow = null;
DataRow tempDr = null;
PayrollDataSet.PayrollDataSet.Report108DataTable dTreport108 = new PayrollDataSet.PayrollDataSet.Report108DataTable();
MiscellaneousDatasetService miscellaneousDatasetService = new MiscellaneousDatasetService();
int nIndex;
int nCount = 1;
double GrandTotal;
List<IncomeTax> oIncomeTaxs = null;
IncomeTax oIncomeTax = new IncomeTax();
//_Employees = Employee.GetWithDiscontinue();
_Employees = new EmployeeService().GetByEmpIDs(sEmpNo);
double nAmount = 0;
double nFesAmount = 0;
double nRebAmount = 0;
double nPFCFAmount = 0;
double nBonusArrearLeaveOverTimeAmount = 0;
double nTempAmount = 0;
double nOthers = 0;
List<Designation> designations = new DesignationService().Get(EnumStatus.Regardless, payrollTypeId);
Designation desig = null;
double totalAnnualIncome = 0;
TaxParameter oTaxParameter = new TaxParameterService().GetByDate(SalaryMonth);
List<ITEmpHead> itEmpHeads = new ITEmpHeadService().GetWithTaxParam(oTaxParameter.ID);
DataSet dsPerquisite = miscellaneousDatasetService.GetFor177Data(GlobalFunctions.LastDateOfMonth(SalaryMonth), sEmpNo, payrollTypeId);
List<TaxMergeMaster> taxMergeMasters = new List<TaxMergeMaster>();
List<TaxMergeMaster> otherTaxMergeMasters = new List<TaxMergeMaster>();
List<TaxMergeMaster> oTBonousTaxMergeMasters = new List<TaxMergeMaster>();
taxMergeMasters = new TaxMergeMasterService().GetbyTaxParameter(oTaxParameter.ID, payrollTypeId);
//TaxMergeMaster taxMergeMaster = null;
TaxMergeMaster houseRentMergeMaster = null;
TaxMergeMaster conveyanceMergeMaster = null;
TaxMergeMaster medicalMergeMaster = null;
ITEmpHead oITEmpHead = new ITEmpHead();
if (dsPerquisite != null && dsPerquisite.Tables.Count > 0 && dsPerquisite.Tables[0].Rows.Count > 0)
{
otherTaxMergeMasters = taxMergeMasters.Where(titem => titem.ItemGroup != EnumIncomeTaxItemGroup.Basic_Salary
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Bonus
&& titem.ItemGroup != EnumIncomeTaxItemGroup.House_Rent_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Conveyance_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Cmp_Provided_car
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Cmp_Provided_House
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Medical_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.LFA_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.WPPF_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.TimeCard
//&& titem.ItemGroup != EnumIncomeTaxItemGroup.Exemption_Business_Travel
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Exemption_Conveyance_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Exemption_House_Rent_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Exemption_Medical_Allowance
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Tax_Deducted
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Tax_Gross_OtherRebate
&& titem.ItemGroup != EnumIncomeTaxItemGroup.Company_Contri_PF).ToList(); // time card(OT)
oTBonousTaxMergeMasters = taxMergeMasters.Where(titem => titem.ItemGroup == EnumIncomeTaxItemGroup.TimeCard || titem.ItemGroup == EnumIncomeTaxItemGroup.Bonus).ToList(); // time card(OT)
houseRentMergeMaster = taxMergeMasters.FirstOrDefault(x => x.ItemGroup == EnumIncomeTaxItemGroup.House_Rent_Allowance && x.ItemID == (int)EnumIncomeTaxItemGroup.House_Rent_Allowance);
conveyanceMergeMaster = taxMergeMasters.FirstOrDefault(x => x.ItemGroup == EnumIncomeTaxItemGroup.Conveyance_Allowance && x.ItemID == (int)EnumIncomeTaxItemGroup.Conveyance_Allowance);
medicalMergeMaster = taxMergeMasters.FirstOrDefault(x => x.ItemGroup == EnumIncomeTaxItemGroup.Medical_Allowance && x.ItemID == (int)EnumIncomeTaxItemGroup.Medical_Allowance);
DataTable tempPerquisite = new DataTable();
foreach (Employee oEmp in _Employees)
{
tempPerquisite = dsPerquisite.Tables["EmpWiseSalary"].AsEnumerable().Where(x => x.Field<Int32>("Employeeid") == oEmp.ID).CopyToDataTable();
GrandTotal = 0.0;
oDRow = dTreport108.NewRow();
nTempAmount = 0;
nAmount = 0;
GrandTotal = 0;
desig = designations.FirstOrDefault(x => x.ID == oEmp.DesignationID);
//nIndex = new IncomeTaxService().GetIndex(oEmp.ID);
oDRow["TIN"] = oEmp.TinNo;
oDRow["SLNo"] = nCount;//col 1
oDRow["EmpNo"] = oEmp.EmployeeNo;
oDRow["Name"] = oEmp.Name;//col 2
oDRow["PostalAdd"] = "";//Postal Address ,col 3
oDRow["NEmployee"] = desig != null ? desig.Name : "";//Designation of Employee ,col 4
#region Basic
//taxMergeMaster = taxMergeMasters.FirstOrDefault(x => x.ItemGroup == EnumIncomeTaxItemGroup.Basic_Salary && x.ItemID == (int)EnumIncomeTaxItemGroup.Basic_Salary);
// if (taxMergeMaster != null)
// {
// foreach (TaxMergeMaster.TaxMergeDetail item in taxMergeMaster.TaxMergeDetails)
// {
tempDr = tempPerquisite.AsEnumerable().FirstOrDefault(x => x.Field<Int32>("ItemGroup") == 1 && x.Field<Int32>("ItemCode") == -101 && x.Field<Int32>("ItemID") == -101 && x.Field<Int32>("Employeeid") == oEmp.ID);
nAmount = GlobalFunctions.Round(tempDr != null ? Convert.ToDouble(tempDr["Amount"]) : 0);
GrandTotal = GrandTotal + nAmount;
oDRow["Basic"] = GlobalFunctions.TakaFormat(tempDr != null ? Convert.ToDouble(tempDr["Amount"]) : 0);
//}
// }
#endregion
#region HousRent
if (houseRentMergeMaster != null)
{
nTempAmount = 0;
nAmount = 0;
foreach (TaxMergeMaster.TaxMergeDetail item in houseRentMergeMaster.TaxMergeDetails)
{
tempDr = tempPerquisite.AsEnumerable().FirstOrDefault(x => x.Field<Int32>("ItemGroup") == 1 && x.Field<Int32>("ItemCode") == -113 && x.Field<Int32>("ItemID") == item.ItemID && x.Field<Int32>("Employeeid") == oEmp.ID);
nAmount = GlobalFunctions.Round(tempDr != null ? Convert.ToDouble(tempDr["Amount"]) : 0);
nTempAmount = nTempAmount + nAmount;
}
GrandTotal = GrandTotal + nTempAmount;
oDRow["HREarned"] = GlobalFunctions.TakaFormat(nTempAmount);
}
#endregion
#region Conveyance
if (conveyanceMergeMaster != null)
{
nTempAmount = 0;
nAmount = 0;
foreach (TaxMergeMaster.TaxMergeDetail item in conveyanceMergeMaster.TaxMergeDetails)
{
tempDr = tempPerquisite.AsEnumerable().FirstOrDefault(x => x.Field<Int32>("ItemGroup") == 1 && x.Field<Int32>("ItemCode") == -113 && x.Field<Int32>("ItemID") == item.ItemID && x.Field<Int32>("Employeeid") == oEmp.ID);
nAmount = GlobalFunctions.Round(tempDr != null ? Convert.ToDouble(tempDr["Amount"]) : 0);
nTempAmount = nTempAmount + nAmount;
}
GrandTotal = GrandTotal + nTempAmount;
oDRow["CEarned"] = GlobalFunctions.TakaFormat(nTempAmount);
}
#endregion
#region Medical
if (medicalMergeMaster != null)
{
nTempAmount = 0;
nAmount = 0;
foreach (TaxMergeMaster.TaxMergeDetail item in medicalMergeMaster.TaxMergeDetails)
{
tempDr = tempPerquisite.AsEnumerable().FirstOrDefault(x => x.Field<Int32>("ItemGroup") == 1 && x.Field<Int32>("ItemCode") == -113 && x.Field<Int32>("ItemID") == item.ItemID && x.Field<Int32>("Employeeid") == oEmp.ID);
nAmount = GlobalFunctions.Round(tempDr != null ? Convert.ToDouble(tempDr["Amount"]) : 0);
nTempAmount = nTempAmount + nAmount;
}
GrandTotal = GrandTotal + nTempAmount;
oDRow["MEarned"] = GlobalFunctions.TakaFormat(nTempAmount);
}
#endregion
#region Others
if (otherTaxMergeMasters != null && otherTaxMergeMasters.Count > 0)
{
nTempAmount = 0;
nAmount = 0;
foreach (TaxMergeMaster otaxmarge in otherTaxMergeMasters)
{
foreach (TaxMergeMaster.TaxMergeDetail item in otaxmarge.TaxMergeDetails)
{
if (item.Type == EnumTaxMergeType.Allowance)
{
tempDr = tempPerquisite.AsEnumerable().FirstOrDefault(x => x.Field<Int32>("ItemGroup") == 1 && x.Field<Int32>("ItemCode") == -113 && x.Field<Int32>("ItemID") == item.ItemID && x.Field<Int32>("Employeeid") == oEmp.ID);
nAmount = GlobalFunctions.Round(tempDr != null ? Convert.ToDouble(tempDr["Amount"]) : 0);
nTempAmount = nTempAmount + nAmount;
}
}
}
GrandTotal = GrandTotal + nTempAmount;
oDRow["Others"] = GlobalFunctions.TakaFormat(nTempAmount);
}
#endregion
#region BonusArrearLeave
if (oTBonousTaxMergeMasters != null && oTBonousTaxMergeMasters.Count > 0)
{
nTempAmount = 0;
nAmount = 0;
foreach (TaxMergeMaster otBonustaxmarge in oTBonousTaxMergeMasters)
{
foreach (TaxMergeMaster.TaxMergeDetail item in otBonustaxmarge.TaxMergeDetails)
{
if (item.Type == EnumTaxMergeType.Allowance)
{
tempDr = tempPerquisite.AsEnumerable().FirstOrDefault(x => x.Field<Int32>("ItemGroup") == 1 && x.Field<Int32>("ItemCode") == -113 && x.Field<Int32>("ItemID") == item.ItemID && x.Field<Int32>("Employeeid") == oEmp.ID);
nAmount = GlobalFunctions.Round(tempDr != null ? Convert.ToDouble(tempDr["Amount"]) : 0);
nTempAmount = nTempAmount + nAmount;
}
else if (item.Type == EnumTaxMergeType.OT)
{
tempDr = dsPerquisite.Tables["EmpWiseSalary"].AsEnumerable().FirstOrDefault(x => x.Field<Int32>("ItemGroup") == 1 && x.Field<Int32>("ItemCode") == -103 && x.Field<Int32>("ItemID") == item.ItemID && x.Field<Int32>("Employeeid") == oEmp.ID);
nAmount = GlobalFunctions.Round(tempDr != null ? Convert.ToDouble(tempDr["Amount"]) : 0);
nTempAmount = nTempAmount + nAmount;
}
else if (item.Type == EnumTaxMergeType.Bonus)
{
tempDr = dsPerquisite.Tables["EmpWiseBonus"].AsEnumerable().FirstOrDefault(x => x.Field<Int32>("BonusID") == item.ItemID && x.Field<Int32>("Employeeid") == oEmp.ID);
nAmount = GlobalFunctions.Round(tempDr != null ? Convert.ToDouble(tempDr["Amount"]) : 0);
nTempAmount = nTempAmount + nAmount;
}
}
}
GrandTotal = GrandTotal + nTempAmount;
oDRow["BonusArrearLeaveOverTimeAmount"] = GlobalFunctions.TakaFormat(nTempAmount);
}
#endregion
#region PF
tempDr = tempPerquisite.AsEnumerable().FirstOrDefault(x => x.Field<Int32>("ItemGroup") == 3 && x.Field<Int32>("ItemCode") == -128 && x.Field<Int32>("ItemID") == -128 && x.Field<Int32>("Employeeid") == oEmp.ID);
nAmount = GlobalFunctions.Round(tempDr != null ? Convert.ToDouble(tempDr["Amount"]) : 0);
GrandTotal = GrandTotal + nAmount;
oDRow["CompanyPf"] = GlobalFunctions.TakaFormat(tempDr != null ? Convert.ToDouble(tempDr["Amount"]) : 0);
#endregion
#region Non-Cash Benefit : Transport
if (itEmpHeads != null && itEmpHeads.Count > 0)
{
oITEmpHead = itEmpHeads.Where(x => x.EmployeeID == oEmp.ID).FirstOrDefault();
nAmount = GlobalFunctions.Round(oITEmpHead != null ? Convert.ToDouble(oITEmpHead.HouseRent) : 0);
GrandTotal = GrandTotal + nAmount;
oDRow["VechilesPercent"] = GlobalFunctions.TakaFormat(oITEmpHead != null ? Convert.ToDouble(oITEmpHead.HouseRent) : 0);
}
#endregion
#region Tax Deduct
tempDr = tempPerquisite.AsEnumerable().FirstOrDefault(x => x.Field<Int32>("ItemGroup") == 3 && x.Field<Int32>("ItemCode") == -129 && x.Field<Int32>("ItemID") == -129 && x.Field<Int32>("Employeeid") == oEmp.ID);
nAmount = GlobalFunctions.Round(tempDr != null ? Convert.ToDouble(tempDr["Amount"]) : 0);
oDRow["TaxActualDeduct"] = GlobalFunctions.TakaFormat(tempDr != null ? Convert.ToDouble(tempDr["Amount"]) : 0);
#endregion
oDRow["TotalAnnualIncome"] = GlobalFunctions.TakaFormat(GrandTotal);
dTreport108.Rows.Add(oDRow);
nCount++;
}
}
ReportProcessor reportProcessor = new ReportProcessor();
return reportProcessor.ShowDlgForReport177(null, dTreport108, payrollTypeId, reportType, SalaryMonth.ToString("MMM yyyy"));
}
//public byte[] ShowIncomeTax(int nTaxParamID, string sEmpNo, int payrollTypeId, int systemTaxParamID, DateTime nextPayProcessDate, string reportType)
//{
// TaxParameter otaxparam = new TaxParameterService().Get(nTaxParamID);
// DataRow oDRow = null;
// PayrollDataSet.PayrollDataSet.Report108DataTable dTreport108 = new PayrollDataSet.PayrollDataSet.Report108DataTable();
// //int nIndex;
// int nCount = 1;
// double GrandTotal;
// List<IncomeTax> oIncomeTaxs = null;
// IncomeTax oIncomeTax = new IncomeTax();
// //_Employees = Employee.GetWithDiscontinue();
// _Employees = new EmployeeService().GetEmpsWithDiscontinue(sEmpNo, payrollTypeId);
// double nAmount = 0;
// double nOtherAmount = 0;
// double nExAmount = 0;
// double nTempAmount = 0;
// foreach (Employee oEmp in _Employees)
// {
// GrandTotal = 0.0;
// oDRow = dTreport108.NewRow();
// if (nTaxParamID == systemTaxParamID)
// {
// oIncomeTaxs = new IncomeTaxService().Get(GetEnumForSalaryIT(oEmp.ID, nextPayProcessDate), oEmp.ID, nTaxParamID);
// }
// else
// {
// oIncomeTaxs = new IncomeTaxService().Get(EnumIncomeTaxDataFrom.ProcessedData, oEmp.ID, nTaxParamID);
// }
// if (oIncomeTaxs == null) continue;
// nTempAmount = 0;
// nAmount = 0;
// if (oIncomeTax != null)
// {
// //nIndex = oIncomeTaxs.GetIndex(oEmp.ID);
// oDRow["TIN"] = oEmp.TinNo;
// oDRow["SLNo"] = nCount;//col 1
// oDRow["EmpNo"] = oEmp.EmployeeNo;
// //oDRow["Designation"] = oEmp.Designation != null ? oEmp.Designation.Name : "";
// oDRow["Name"] = oEmp.Name;//col 2
// oDRow["PostalAdd"] = "";//Postal Address ,col 3
// oDRow["NEmployee"] = oEmp.DescriptionText;//Nature of Employee ,col 4
// nAmount = GlobalFunctions.Round(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Basic_Salary, (int)EnumIncomeTaxItemGroup.Basic_Salary) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Basic_Salary, (int)EnumIncomeTaxItemGroup.Basic_Salary).TotalAmount : 0.0);//Total Amount of Salary Basic+Bonus, col 5
// GrandTotal = GrandTotal + nAmount;
// oDRow["Basic"] = GlobalFunctions.TakaFormat(nAmount);
// nAmount = GlobalFunctions.Round(new IncomeTaxService().GetAmount(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Bonus));
// //GrandTotal = GrandTotal + nAmount;
// nOtherAmount += nAmount;
// oDRow["Bonus"] = GlobalFunctions.TakaFormat(nAmount);
// nAmount = GlobalFunctions.Round(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.House_Rent_Allowance, (int)EnumIncomeTaxItemGroup.House_Rent_Allowance) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.House_Rent_Allowance, (int)EnumIncomeTaxItemGroup.House_Rent_Allowance).TotalAmount : 0.0);//Periodical Cash Allowance, col 6
// nTempAmount = nTempAmount + nAmount;
// GrandTotal = GrandTotal + nAmount;
// oDRow["HREarned"] = GlobalFunctions.TakaFormat(nAmount);
// nAmount = GlobalFunctions.Round(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Exemption_House_Rent_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_House_Rent_Allowance) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Exemption_House_Rent_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_House_Rent_Allowance).TotalAmount : 0.0);
// oDRow["HRExempted"] = GlobalFunctions.TakaFormat(nAmount);
// nTempAmount = nTempAmount - nAmount;
// nExAmount += nAmount;
// oDRow["HRTaxable"] = GlobalFunctions.TakaFormat(nTempAmount);
// nTempAmount = 0;
// nAmount = 0;
// IncomeTax oITax = new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Conveyance_Allowance, (int)EnumIncomeTaxItemGroup.Conveyance_Allowance);
// if (oITax != null)
// {
// nAmount = oITax.TotalAmount;
// oDRow["CEarned"] = GlobalFunctions.TakaFormat(oITax.TotalAmount);
// GrandTotal = GrandTotal + nAmount;
// }
// else
// oDRow["CEarned"] = 0.0;
// nTempAmount = GlobalFunctions.Round(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Exemption_Conveyance_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_Conveyance_Allowance) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Exemption_Conveyance_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_Conveyance_Allowance).TotalAmount : 0.0);
// nExAmount += nTempAmount;
// oDRow["CExempted"] = GlobalFunctions.TakaFormat(nTempAmount);
// oDRow["CTaxable"] = GlobalFunctions.TakaFormat(nAmount - nTempAmount);
// nTempAmount = 0;
// nAmount = GlobalFunctions.Round(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Medical_Allowance, (int)EnumIncomeTaxItemGroup.Medical_Allowance) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Medical_Allowance, (int)EnumIncomeTaxItemGroup.Medical_Allowance).TotalAmount : 0);
// oDRow["MEarned"] = GlobalFunctions.TakaFormat(nAmount);
// GrandTotal = GrandTotal + nAmount;
// nTempAmount = GlobalFunctions.Round(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Exemption_Medical_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_Medical_Allowance) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Exemption_Medical_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_Medical_Allowance).TotalAmount : 0.0);
// nExAmount += nTempAmount;
// oDRow["MExempted"] = GlobalFunctions.TakaFormat(nTempAmount);
// oDRow["MTaxable"] = GlobalFunctions.TakaFormat(nAmount - nTempAmount);
// oDRow["Entertainment"] = 0;
// nAmount = 0;
// foreach (IncomeTax titem in oIncomeTaxs)
// {
// if (titem.Side == EnumIncomeTaxSide.Inc_SalaryIncome)
// {
// if (titem.ItemGroup != EnumIncomeTaxItemGroup.Basic_Salary
// && titem.ItemGroup != EnumIncomeTaxItemGroup.Bonus
// && titem.ItemGroup != EnumIncomeTaxItemGroup.House_Rent_Allowance
// && titem.ItemGroup != EnumIncomeTaxItemGroup.Conveyance_Allowance
// && titem.ItemGroup != EnumIncomeTaxItemGroup.Cmp_Provided_car
// && titem.ItemGroup != EnumIncomeTaxItemGroup.Cmp_Provided_House
// && titem.ItemGroup != EnumIncomeTaxItemGroup.Medical_Allowance
// && titem.ItemGroup != EnumIncomeTaxItemGroup.LFA_Allowance)
// {
// nAmount = nAmount + titem.TotalAmount;
// }
// }
// }
// //nAmount = nAmount + Convert.ToDouble(oDRow["Bonus"].ToString());
// nOtherAmount += GlobalFunctions.Round(new IncomeTaxService().GetAmount(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Earned_Leave));
// oDRow["Others"] = GlobalFunctions.TakaFormat(nOtherAmount);
// GrandTotal = GrandTotal + nOtherAmount;
// double nAnnul = new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Gross_Tax, (int)EnumIncomeTaxItemGroup.Gross_Tax) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Annual_Income, (int)EnumIncomeTaxItemGroup.Annual_Income).TotalAmount : 0;
// oDRow["AmountLiable"] = GlobalFunctions.TakaFormat(nAnnul);
// oDRow["Total"] = GlobalFunctions.TakaFormat(nAnnul + nExAmount);
// oDRow["FDate"] = (oEmp.JoiningDate > otaxparam.FiscalyearDatefrom) ? oEmp.JoiningDate.ToString("dd MMM yyyy") : otaxparam.FiscalyearDatefrom.ToString("dd MMM yyyy");
// oDRow["TDate"] = (oEmp.Status != EnumEmployeeStatus.Live) ? ((DateTime)oEmp.DiscontinueDate).ToString("dd MMM yyyy") : otaxparam.FiscalyearDateTo.ToString("dd MMM yyyy");
// oDRow["SANDOtherSum"] = 0;//Salary and all other Sum ,col 8
// nAmount = new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Cmp_Provided_House, (int)EnumIncomeTaxItemGroup.Other_Allowance) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Cmp_Provided_House, (int)EnumIncomeTaxItemGroup.Cmp_Provided_House).TotalAmount : 0.0;
// GrandTotal = GrandTotal + nAmount;
// oDRow["BasicPercent"] = GlobalFunctions.TakaFormat(nAmount);
// oDRow["EnterAllowance"] = 0;//Amount of Entertaitment Allowance ,col 10
// oDRow["VechilesPercent"] = GlobalFunctions.TakaFormat(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Cmp_Provided_car, (int)EnumIncomeTaxItemGroup.Cmp_Provided_car) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Cmp_Provided_car, (int)EnumIncomeTaxItemGroup.Cmp_Provided_car).TotalAmount : 0.0);
// oDRow["SPByEmployeer"] = 0;//Salary Paid by employeer ,col 12
// oDRow["VOfFree"] = 0;//Value of Rent Free Accomodation or Value of any Concession in Rent for the Accomodation provided by the Employer,col 13
// nAmount = new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Company_Contri_PF, (int)EnumIncomeTaxItemGroup.Company_Contri_PF) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Company_Contri_PF, (int)EnumIncomeTaxItemGroup.Company_Contri_PF).TotalAmount : 0;
// oDRow["EContribution"] = GlobalFunctions.TakaFormat(nAmount);
// GrandTotal = GrandTotal + nAmount;
// oDRow["InterestCredit"] = 0; //Math.Round(IncomeTax.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Gross_Tax, (int)EnumIncomeTaxItemGroup.Gross_Tax) != null ? IncomeTax.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Gross_Tax, (int)EnumIncomeTaxItemGroup.Gross_Tax).TotalAmount : 0);//Interest Credit to the assessee's accout in a recognised provident fund,col 15
// oDRow["VofAnyBenefit"] = 0;//Value of any benefit ,col 15
// oDRow["TotalCol"] = GlobalFunctions.TakaFormat(GrandTotal);//Total Col 5,6,8 to 16 ,col 16
// //oDRow["AmountLiable"] = GlobalFunctions.TakaFormat(IncomeTax.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Gross_Tax, (int)EnumIncomeTaxItemGroup.Gross_Tax) != null ? IncomeTax.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Gross_Tax, (int)EnumIncomeTaxItemGroup.Gross_Tax).TotalAmount : 0);//Amount Liable to tax under section 21 of income tax ordinance 1984 ,col 17
// //GlobalFunctions.TakaFormat(IncomeTax.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Credit_On_Investment, (int)EnumIncomeTaxItemGroup.Tax_Credit_On_Investment) != null ? IncomeTax.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Credit_On_Investment, (int)EnumIncomeTaxItemGroup.Tax_Credit_On_Investment).TotalAmount : 0);//Amount Liable to tax under section 21 of income tax ordinance 1984 ,col 17
// oDRow["ConToTheProvident"] = GlobalFunctions.TakaFormat(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Credit_On_Investment, (int)EnumIncomeTaxItemGroup.Tax_Credit_On_Investment) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Credit_On_Investment, (int)EnumIncomeTaxItemGroup.Tax_Credit_On_Investment).TotalAmount : 0);//Amount Liable to tax under section 21 of income tax ordinance 1984 ,col 17;//Contribution to the provident ,col 18
// oDRow["TaxIncome"] = GlobalFunctions.TakaFormat(GrandTotal); //GlobalFunctions.TakaFormat(IncomeTax.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Gross_Refund, (int)EnumIncomeTaxItemGroup.Gross_Tax) != null ? IncomeTax.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Gross_Refund, (int)EnumIncomeTaxItemGroup.Gross_Tax).TotalAmount : 0);//Taxable Income ,col 19
// oDRow["TaxPayable"] =
// GlobalFunctions.TakaFormat(
// new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Net_Payable,
// (int)EnumIncomeTaxItemGroup.Net_Payable) != null
// ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Net_Payable,
// (int)EnumIncomeTaxItemGroup.Net_Payable).TotalAmount
// : 0); //Tax Payable ,col 20
// // }
// nAmount = 0;
// nAmount = new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Credit_On_Investment, (int)EnumIncomeTaxItemGroup.Tax_Credit_On_Investment) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Credit_On_Investment, (int)EnumIncomeTaxItemGroup.Tax_Credit_On_Investment).TotalAmount : 0;
// // oDRow["InvestmentRebate"] = GlobalFunctions.TakaFormat(nAmount);
// oDRow["ThisMonthAmount"] = GlobalFunctions.TakaFormat(new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Deducted, (int)EnumIncomeTaxItemGroup.Tax_Deducted) != null ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Deducted, (int)EnumIncomeTaxItemGroup.Tax_Deducted).ThisMonthAmount : 0);
// oDRow["TaxActualDeduct"] =
// GlobalFunctions.TakaFormat(
// new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Deducted,
// (int)EnumIncomeTaxItemGroup.Tax_Deducted) != null
// ? new IncomeTaxService().Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Tax_Deducted,
// (int)EnumIncomeTaxItemGroup.Tax_Deducted).TotalAmount
// : 0); //Tax actually deduct ,col 21
// // }
// oDRow["Remarks"] = "";//Remarks ,col 22
// dTreport108.Rows.Add(oDRow);
// nCount++;
// }
// }
// ReportProcessor reportProcessor = new ReportProcessor();
// return reportProcessor.ShowDlgForReport108(null, dTreport108, payrollTypeId, reportType);
//}
public EnumIncomeTaxDataFrom GetEnumForSalaryIT(int nEmpID, DateTime nextPayProcessDate)
{
return new IncomeTaxService().currentYeardataSource(nEmpID);
EnumIncomeTaxDataFrom nType;
SalaryMonthlyService salaryMonthlyService = new SalaryMonthlyService();
bool isprocessed = false, isfinalized = false;
salaryMonthlyService.IsSalaryProcessedAndFinalized(nEmpID, nextPayProcessDate, ref isprocessed, ref isfinalized);
if (isprocessed == true && isfinalized == false)
{
nType = EnumIncomeTaxDataFrom.SalaryITTempData;
}
else
{
nType = EnumIncomeTaxDataFrom.ProcessTempData;
}
return nType;
}
public byte[] showTaxCard(int employeeId, bool ITStatus, int nTaxParamID, int systemTaxParamID, DateTime nextPayProcessDate, int payrollTypeId, string reportType)
{
IncomeTax oIncomeTax = new IncomeTax();
IncomeTaxService incomeTaxService = new IncomeTaxService();
TaxParameterService taxParameterService = new TaxParameterService();
ReportItemService reportItemService = new ReportItemService();
TaxChallanService taxChallanService = new TaxChallanService();
if (nTaxParamID == systemTaxParamID)
{
oincometaxes = new IncomeTaxService().Get(GetEnumForSalaryIT(employeeId, nextPayProcessDate), employeeId, nTaxParamID);
}
else
{
oincometaxes = new IncomeTaxService().Get(EnumIncomeTaxDataFrom.ProcessedData, employeeId, nTaxParamID);
ITStatus = false;
}
//oincometaxes = incomeTaxService.Get(GetEnumForSalaryIT(employeeId, nextPayProcessDate), employeeId, taxParamId);
_IsTaxCertificate = ITStatus;
_isPrvs = ITStatus;
List<TaxChallan> oTaxChallans = new List<TaxChallan>();
DataSet oDFinalIncomeTax = null;
DataSet _dSet = new DataSet();
_taxParameter = taxParameterService.Get(nTaxParamID);
_employee = new EmployeeService().Get(employeeId);
_item = reportItemService.GetByReportType(Convert.ToInt32(EnumReportType.ITIndividual));
_incometaxes = oincometaxes;
oDFinalIncomeTax = PrepareDataset(employeeId);
IncomeTax pf = Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Company_Contri_PF,
(int)EnumIncomeTaxItemGroup.Company_Contri_PF);
double PFInvestment = 0.0;
if(pf!=null)
PFInvestment = pf.TotalAmount;
//oDFinalIncomeTax.Tables[0].TableName = "PayrollDataSet_IncomeTax";
//_dSet.Tables.Add(oDFinalIncomeTax.Tables[0].TableName);
////_dITSlabs = GetIncomeTaxSlabs(oparameter.ID, oEmp.ID);
//oDFinalIncomeTax.Tables[1].TableName = "PayrollDataSet_IncomeTaxSlab";
//_dSet.Tables.Add(oDFinalIncomeTax.Tables[1].Copy());
//oDTableOthers = GetIncomeTaxOthers(oIncomeTax.GetEnumForSalaryIT(oEmp.ID), oEmp.ID);
//oDFinalIncomeTax.Tables[2].TableName = "PayrollDataSet_IncomeTaxOther";
//_dSet.Tables.Add(oDFinalIncomeTax.Tables[2].Copy());
PayrollDataSet.PayrollDataSet.TaxRebeatInvestmentDataTable dTable = new PayrollDataSet.PayrollDataSet.TaxRebeatInvestmentDataTable();
DataRow dr = null;
dr = dTable.NewRow();
dr["TaxPercent"] = _taxParameter.MaxInvestPercent;
dr["TaxableIncome"] = _20Investment;
dr["MaxInvestment"] = _taxParameter.MaxInvAmount;
dr["PFInvestment"] = PFInvestment;
dTable.Rows.Add(dr);
dTable.TableName = "PayrollDataSet_TaxRebeatInvestment";
oDFinalIncomeTax.Tables.Add(dTable);
PayrollDataSet.PayrollDataSet.TaxChallanDataTable dTChallan = new PayrollDataSet.PayrollDataSet.TaxChallanDataTable();
DataRow dChallan = null;
dChallan = dTChallan.NewRow();
if (!ITStatus)
{
oTaxChallans = taxChallanService.Get(employeeId, nTaxParamID);
//For SGS
var companyNameObj = new SystemConfigarationService().GetconfigValue(EnumConfigurationType.Logic, "system", "company");
string companyName = Convert.ToString(companyNameObj);
if (companyName == "SGS Bangladesh Limited")
{
oTaxChallans = taxChallanService.GetByTaxParamId(nTaxParamID);
oEmp = new EmployeeService().Get(employeeId);
if (oEmp.Status == EnumEmployeeStatus.Discontinued)
{
oTaxChallans = oTaxChallans.FindAll(x =>
x.SalaryMonthly >= oEmp.JoiningDate && x.SalaryMonthly <= oEmp.DiscontinueDate);
}
else
{
oTaxChallans = oTaxChallans.FindAll(x => x.SalaryMonthly >= oEmp.JoiningDate);
}
}
int count = 1;
string sChallanNo = "";//"This is a system generated document, Does Not require Signature. \n";
// \nCertified that the above-mentioned amount of tax has already been deposited based on the employers confirmation of investment amount in allowed instruments.
// "# 57 dated 06-Sep-2010, # 56/88 dated 05-Oct-2010, # 54 dated 03-Nov-2010, # 58 dated 07-Dec-2010, # 57 dated 06-Jan-2011, # 56 dated 10-Feb-2011, # 58 dated 09-Mar-2011, # 50 dated 13-Apr-2011, # 47 dated 03-May-2011, # 55 dated 09-Jun-2011, # 71/49 dated 21-Jul-2011.";
if (oTaxChallans != null && oTaxChallans.Count > 0)
{
foreach (TaxChallan oItem in oTaxChallans)
{
if (count == oTaxChallans.Count)
{
sChallanNo += "ChallanNo: #" + oItem.ChallanNo + " dated " + oItem.DepositDate.ToString("dd-MMM-yyyy") + ".";
}
else
{
sChallanNo += "ChallanNo: #" + oItem.ChallanNo + " dated " + oItem.DepositDate.ToString("dd-MMM-yyyy") + ", ";
count++;
}
}
}
dChallan["ChallanNo"] = sChallanNo;
}
else
{
//For SGS
var companyNameObj = new SystemConfigarationService().GetconfigValue(EnumConfigurationType.Logic, "system", "company");
string companyName = Convert.ToString(companyNameObj);
if (companyName == "SGS Bangladesh Limited")
{
oTaxChallans = taxChallanService.GetByTaxParamId(nTaxParamID);
int count = 1;
string sChallanNo = "";//"This is a system generated document, Does Not require Signature. \n";// \nCertified that the above-mentioned amount of tax has already been deposited based on the employers confirmation of investment amount in allowed instruments.
// "# 57 dated 06-Sep-2010, # 56/88 dated 05-Oct-2010, # 54 dated 03-Nov-2010, # 58 dated 07-Dec-2010, # 57 dated 06-Jan-2011, # 56 dated 10-Feb-2011, # 58 dated 09-Mar-2011, # 50 dated 13-Apr-2011, # 47 dated 03-May-2011, # 55 dated 09-Jun-2011, # 71/49 dated 21-Jul-2011.";
if (oTaxChallans != null && oTaxChallans.Count > 0)
{
foreach (TaxChallan oItem in oTaxChallans)
{
if (count == oTaxChallans.Count)
{
sChallanNo += "ChallanNo: #" + oItem.ChallanNo + " dated " + oItem.DepositDate.ToString("dd-MMM-yyyy");
}
else
{
sChallanNo += "ChallanNo: #" + oItem.ChallanNo + " dated " + oItem.DepositDate.ToString("dd-MMM-yyyy") + ", ";
count++;
}
}
}
dChallan["ChallanNo"] = sChallanNo;
}
}
double _taxInvestment = _actualInvestment;
//string trget = "Tax Investment";
//var rslt = from item in oincometaxes
// where item.Description.ToLower() == trget.ToLower()
// select item;
//if(rslt.Count() == 1)
//{
// _taxInvestment = rslt.First().TotalAmount;
//}
dChallan["TaxInvestment"] = _taxInvestment;
dTChallan.Rows.Add(dChallan);
dTChallan.TableName = "PayrollDataSet_TaxChallan";
oDFinalIncomeTax.Tables.Add(dTChallan);
ReportProcessor reportProcessor = new ReportProcessor();
return reportProcessor.ShowDlgForTaxCard(_item, oDFinalIncomeTax, _employee.Name, _employee.EmployeeNo, _employee.TinNo, _taxParameter.AssessmentYear, _taxParameter.FiscalYear, payrollTypeId, ITStatus, reportType,_taxParameter);
}
private DataSet PrepareDataset(int nEmpID)
{
DataSet orootDataset = new DataSet();
DataRow dr = null;
IncomeTax oIncomeTax = new IncomeTax();
IncomeTaxService incomeTaxService = new IncomeTaxService();
TaxParameterService taxParameterService = new TaxParameterService();
var companyNameObj = new SystemConfigarationService().GetconfigValue(EnumConfigurationType.Logic, "system", "company");
string companyName = Convert.ToString(companyNameObj);
PayrollDataSet.PayrollDataSet.IncomeTaxDataTable dTable1 = new PayrollDataSet.PayrollDataSet.IncomeTaxDataTable();
PayrollDataSet.PayrollDataSet.IncomeTaxDataTable dTable2 = new PayrollDataSet.PayrollDataSet.IncomeTaxDataTable();
DataRow houseRent = null ;
DataRow Conveyance=null;
DataRow Medical =null;
DataRow lfa = null;
DataRow TotalSalaryExepted = null;
DataRow TotalAnnualExepted = null;
_InvestmentAmount = 0.0;
_TotalTaxAmount = 0.0;
_LessExemptedAmount = 0.0;
_PaidTillDateAmount = 0.0;
_ThisMonthAmount = 0.0;
_ProjectedAmount = 0.0;
_AmountPerAnnum = 0.0;
_TotalSalaryExempted = 0.0;
_TotalAnnuaExempted = 0.0;
_TPaidTillDateAmount = 0.0;
_TThisMonthAmount = 0.0;
_TProjectedAmount = 0.0;
_TAmountPerAnnum = 0.0;
_pfInvestment=0;
_otherInvestment=0;
_investmentAllowed=0;
_20Investment=0;
foreach (IncomeTax oItem in _incometaxes)
{
if (oItem.ItemGroup == EnumIncomeTaxItemGroup.Exemption_Conveyance_Allowance ||
oItem.ItemGroup == EnumIncomeTaxItemGroup.Exemption_House_Rent_Allowance ||
oItem.ItemGroup == EnumIncomeTaxItemGroup.Exemption_Medical_Allowance ||
oItem.ItemGroup == EnumIncomeTaxItemGroup.Exemption_LFA_Allowance) continue;
if (oItem.Side == EnumIncomeTaxSide.Inc_SalaryIncome || oItem.Side == EnumIncomeTaxSide.Dec_SalaryIncome)
{
dr = dTable1.NewRow();
dTable1.Rows.Add(this.getARow(dr, oItem));
if (oItem.ItemGroup == EnumIncomeTaxItemGroup.House_Rent_Allowance)
houseRent = dr;
if (oItem.ItemGroup == EnumIncomeTaxItemGroup.Medical_Allowance)
Medical = dr;
if (oItem.ItemGroup == EnumIncomeTaxItemGroup.Conveyance_Allowance)
Conveyance = dr;
if (oItem.ItemGroup == EnumIncomeTaxItemGroup.LFA_Allowance )
lfa = dr;
}
}
if (houseRent != null)
{
IncomeTax taxAmount= Get(_incometaxes, nEmpID,
EnumIncomeTaxItemGroup.Exemption_House_Rent_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_House_Rent_Allowance);
if (taxAmount != null)
{
_TotalSalaryExempted += taxAmount.TotalAmount;
houseRent["LessExaempted"] = GlobalFunctions.TakaFormat(taxAmount.TotalAmount);
}
}
if (Medical != null)
{
IncomeTax taxAmount = Get(_incometaxes, nEmpID,
EnumIncomeTaxItemGroup.Exemption_Medical_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_Medical_Allowance);
if (taxAmount != null)
{
_TotalSalaryExempted += taxAmount.TotalAmount;
Medical["LessExaempted"] = GlobalFunctions.TakaFormat(taxAmount.TotalAmount);
}
}
if (Conveyance != null)
{
IncomeTax taxAmount = Get(_incometaxes, nEmpID,
EnumIncomeTaxItemGroup.Exemption_Conveyance_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_Conveyance_Allowance);
if (taxAmount != null)
{
_TotalSalaryExempted += taxAmount.TotalAmount;
Conveyance["LessExaempted"] =GlobalFunctions.TakaFormat( taxAmount.TotalAmount);
}
}
if (lfa != null)
{
IncomeTax taxAmount = Get(_incometaxes, nEmpID,
EnumIncomeTaxItemGroup.Exemption_LFA_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_LFA_Allowance);
if (taxAmount != null)
{
_TotalSalaryExempted += taxAmount.TotalAmount;
lfa["LessExaempted"] = GlobalFunctions.TakaFormat(taxAmount.TotalAmount);
}
}
IncomeTax salaryIncome = Get(_incometaxes, nEmpID,
EnumIncomeTaxItemGroup.Annual_Salary_Income, (int)EnumIncomeTaxItemGroup.Annual_Salary_Income);
if (salaryIncome != null)
{
dr = dTable1.NewRow();
dTable1.Rows.Add(this.getARow(dr, salaryIncome));
TotalSalaryExepted = dr;
TotalSalaryExepted["LessExaempted"] = _TotalSalaryExempted;
}
foreach (IncomeTax oItem in _incometaxes)
{
if (oItem.Side == EnumIncomeTaxSide.Inc_AnnualIncome || oItem.Side == EnumIncomeTaxSide.Dec_AnnualIncome)
{
if (oItem.ItemID != -305)
{
dr = dTable1.NewRow();
dTable1.Rows.Add(this.getARow(dr, oItem));
}
//_TotalAnnuaExempted = oItem.TotalAmount;
}
}
IncomeTax totalAnnualExemption = Get(_incometaxes, nEmpID,
EnumIncomeTaxItemGroup.AnnualExemption, (int)EnumIncomeTaxItemGroup.AnnualExemption);
if (totalAnnualExemption != null)
{
dr = dTable1.NewRow();
totalAnnualExemption.ProjectedAmount *= -1;
totalAnnualExemption.TotalAmount *= -1;
dTable1.Rows.Add(this.getARow(dr, totalAnnualExemption));
}
IncomeTax totalAnnualIncome = Get(_incometaxes, nEmpID,
EnumIncomeTaxItemGroup.Annual_Income, (int)EnumIncomeTaxItemGroup.Annual_Income);
if (totalAnnualIncome != null)
{
dr = dTable1.NewRow();
dTable1.Rows.Add(this.getARow(dr, totalAnnualIncome));
TotalAnnualExepted = dr;
TotalAnnualExepted["LessExaempted"] = _TotalSalaryExempted;
}
dTable1.TableName = "PayrollDataSet_IncomeTax";
orootDataset.Tables.Add(dTable1);
// Crate Slab Data
double ngrossTax = 0;
PayrollDataSet.PayrollDataSet.IncomeTaxSlabDataTable dTable = new PayrollDataSet.PayrollDataSet.IncomeTaxSlabDataTable();
_InvestmentAmount = _taxParameter.MaxInvAmount;
bool isExist = dTable1.AsEnumerable().Where(x => x["ItemCode"].ToString() == "-237").Any();
if (totalAnnualIncome != null)
{
if (isExist) totalAnnualIncome.PreviousAmount -= _TotalSalaryExempted;
List<TaxParameterSlab> empTaxSlabs = CalculateTaxOnSlab(_taxParameter, _employee, totalAnnualIncome.TotalAmount);
int index = 0;
dr = null;
foreach (TaxParameterSlab drr in empTaxSlabs)
{
dr = dTable.NewRow();
dr["CurrentRate"] = drr.TaxPercent.ToString()+"%";
if (index == 0)
dr["Parameter"] = "On First BDT-" + drr.IncomeAmount.ToString();
else if (index + 1 == empTaxSlabs.Count)
dr["Parameter"] = "On Remaining Balance";// + drr.IncomeAmount.ToString();
else
dr["Parameter"] = "On Next BDT-" + drr.IncomeAmount.ToString();
dr["TaxableIncome"] = drr.SlabTaxableAmount.ToString();
dr["IndividualTaxLiability"] = drr.SlabTaxAmount.ToString();
index++;
dTable.Rows.Add(dr);
ngrossTax = ngrossTax + drr.SlabTaxAmount;
}
}
dTable.TableName = "PayrollDataSet_IncomeTaxSlab";
orootDataset.Tables.Add(dTable);
//Create other items
PayrollDataSet.PayrollDataSet.IncomeTaxOtherDataTable oDTable = new PayrollDataSet.PayrollDataSet.IncomeTaxOtherDataTable();
// DataSet oIncomeTaxOth = IncomeTax.GetEmpIDforOthTax(dataFrom, nEmpID);
DataRow oDRow = null;
//IncomeTax oInvestment = IncomeTax.Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Tax_Credit_On_Investment,
// (int)EnumIncomeTaxItemGroup.Tax_Credit_On_Investment);
//if (oInvestment != null)
//{
// oDRow = oDTable.NewRow();
// oDRow["DataColumn1"] = oInvestment.Description;
// oDRow["DataColumn2"] = "";
// oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oInvestment.TotalAmount);
// oDTable.Rows.Add(oDRow);
//}
IncomeTax investmentCapdo;
if (_investmentwithoutPF == false)
{
investmentCapdo = Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Annual_Income,
(int)EnumIncomeTaxItemGroup.Annual_Income);
if (investmentCapdo != null)
_20Investment = (investmentCapdo.TotalAmount * _taxParameter.MaxInvestPercent) / 100;
}
else
{
investmentCapdo = Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Annual_Salary_Income,
(int)EnumIncomeTaxItemGroup.Annual_Salary_Income);
if (investmentCapdo != null)
_20Investment = (investmentCapdo.TotalAmount * _taxParameter.MaxInvestPercent) / 100;
}
IncomeTax acinvestment = Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Investment_Actual ,
(int)EnumIncomeTaxItemGroup.Investment_Actual);
if (acinvestment != null)
_actualInvestment = acinvestment.TotalAmount;
IncomeTax taxRebate = Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Investment_Allowed ,
(int)EnumIncomeTaxItemGroup.Investment_Allowed);
if (taxRebate != null )
{
_investmentAllowed = taxRebate.TotalAmount;
string spf = "";
IncomeTax pf = Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Company_Contri_PF,
(int)EnumIncomeTaxItemGroup.Company_Contri_PF);
if (pf != null)
{
_pfInvestment = pf.TotalAmount;
double npfamount = 0;
double otherAmount = 0;
IncomeTax actualInvestment = Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Investment_Actual,
(int)EnumIncomeTaxItemGroup.Investment_Actual);
npfamount = (pf.TotalAmount * 2 > taxRebate.TotalAmount) ? taxRebate.TotalAmount : pf.TotalAmount * 2;
if (actualInvestment == null)
{
otherAmount = taxRebate.TotalAmount - pf.TotalAmount * 2;
if (otherAmount < 0) otherAmount = 0;
_otherInvestment = otherAmount;
}
else
{
otherAmount = actualInvestment.TotalAmount;
_otherInvestment = otherAmount;
}
if (ngrossTax <= 0) _otherInvestment = 0;
// spf = "PF: " + GlobalFunctions.TakaFormat(npfamount) + ", Other: " + GlobalFunctions.TakaFormat(otherAmount);
spf = "";
}
oDRow = oDTable.NewRow();
oDRow["DataColumn1"] = taxRebate.Description;
oDRow["DataColumn2"] = spf;
oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(taxRebate.TotalAmount);
// oDTable.Rows.Add(oDRow);
}
foreach (IncomeTax oItem in _incometaxes)
{
//if ((oItem.Side == EnumIncomeTaxSide.Inc_GrossTax || oItem.Side == EnumIncomeTaxSide.Dec_GrossTax) && oItem.ItemID != 4 && oItem.ItemID != 12)
//{
// oDRow = oDTable.NewRow();
// if (oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Credit_On_Investment)
// {
// oDRow["DataColumn1"] = oItem.Description;// +" @ " + _taxParameter.MaxInvExempPercent.ToString() + "%";
// if(ngrossTax >0)
// oDRow["DataColumn3"] = "(" + GlobalFunctions.TakaFormat(oItem.TotalAmount) + ")";
// else oDRow["DataColumn3"] = "(0)";
// }
// else
// {
// oDRow["DataColumn1"] = oItem.Description;
// oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oItem.TotalAmount);
// }
// oDRow["DataColumn2"] = "";
// oDTable.Rows.Add(oDRow);
//}
if (companyName == "SGS Bangladesh Limited")
{
//if ((oItem.Side == EnumIncomeTaxSide.Inc_GrossTax || oItem.Side == EnumIncomeTaxSide.Dec_GrossTax) && oItem.ItemID != 4 && oItem.ItemID != 12)
//if ((oItem.Side == EnumIncomeTaxSide.Dec_GrossTax && oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Credit_On_Investment && oItem.ItemID == -210)
// || (oItem.Side == EnumIncomeTaxSide.Dec_GrossTax && oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Gross_OtherRebate && oItem.ItemID == -227))
if (oItem.Side == EnumIncomeTaxSide.Dec_GrossTax)
{
oDRow = oDTable.NewRow();
//if (oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Credit_On_Investment)
if (oItem.Side == EnumIncomeTaxSide.Dec_GrossTax)
{
oDRow["DataColumn1"] = oItem.Description;// +" @ " + _taxParameter.MaxInvExempPercent.ToString() + "%";
if (ngrossTax > 0)
oDRow["DataColumn3"] = "(" + GlobalFunctions.TakaFormat(oItem.TotalAmount) + ")";
else oDRow["DataColumn3"] = "(0)";
}
else
{
oDRow["DataColumn1"] = oItem.Description;
oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oItem.TotalAmount);
}
oDRow["DataColumn2"] = "";
oDTable.Rows.Add(oDRow);
}
}
else
{
if (oItem.Side == EnumIncomeTaxSide.Inc_GrossTax || oItem.Side == EnumIncomeTaxSide.Dec_GrossTax)
{
oDRow = oDTable.NewRow();
if (oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Credit_On_Investment)
{
oDRow["DataColumn1"] = oItem.Description;// +" @ " + _taxParameter.MaxInvExempPercent.ToString() + "%";
if (ngrossTax > 0)
oDRow["DataColumn3"] = "(" + GlobalFunctions.TakaFormat(oItem.TotalAmount) + ")";
else oDRow["DataColumn3"] = "(0)";
}
else
{
oDRow["DataColumn1"] = oItem.Description;
oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oItem.TotalAmount);
}
oDRow["DataColumn2"] = "";
oDTable.Rows.Add(oDRow);
}
}
}
IncomeTax oNetTaxPayable = Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Net_Payable ,
(int)EnumIncomeTaxItemGroup.Net_Payable);
IncomeTax oTaxDeducted = Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Tax_Deducted,
(int)EnumIncomeTaxItemGroup.Tax_Deducted );
if (oNetTaxPayable != null)
{
oDRow = oDTable.NewRow();
oDRow["DataColumn1"] = oNetTaxPayable.Description;
oDRow["DataColumn2"] = "";
oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oNetTaxPayable.TotalAmount);
oDTable.Rows.Add(oDRow);
}
if (!_isPrvs)
{
if (oTaxDeducted != null)
{
oDRow = oDTable.NewRow();
//oDRow["DataColumn1"] = "Tax deducted from salary";
oDRow["DataColumn1"] = "Total Tax Paid";
oDRow["DataColumn2"] = "";
oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oTaxDeducted.TotalAmount);
oDTable.Rows.Add(oDRow);
}
}
else
{
if (oTaxDeducted != null)
{
oDRow = oDTable.NewRow();
oDRow["DataColumn1"] = "Tax paid up to previous month";
oDRow["DataColumn2"] = "";
oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oTaxDeducted.PreviousAmount);
oDTable.Rows.Add(oDRow);
oDRow = oDTable.NewRow();
oDRow["DataColumn1"] = "Tax paid this month";
oDRow["DataColumn2"] = "";
oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oTaxDeducted.ThisMonthAmount);
oDTable.Rows.Add(oDRow);
oDRow = oDTable.NewRow();
oDRow["DataColumn1"] = "Tax to be paid upto June";
oDRow["DataColumn2"] = "";
oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oNetTaxPayable.TotalAmount - oTaxDeducted.TotalAmount);
oDTable.Rows.Add(oDRow);
}
}
#region SGS
//if (companyName == "SGS Bangladesh Limited")
//{
// double netAmmountSGS = ngrossTax;
// foreach (IncomeTax oItem in _incometaxes)
// {
// if (netAmmountSGS == 0)
// {
// break;
// }
// if ((oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Gross_OtherRebate && oItem.ItemID == -227) || (oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Credit_On_Investment && oItem.ItemID == -210))
// netAmmountSGS = netAmmountSGS - oItem.TotalAmount;
// if (netAmmountSGS < 0 || (netAmmountSGS > 0 && netAmmountSGS < 5000))
// {
// DataTable dtTaxRegion = null;
// dtTaxRegion = new SGSExceptionReportService().GetTaxRegionDTByEmpId(oItem.TaxParameterID, _employee.ID);
// if (dtTaxRegion.Rows.Count > 0)
// {
// foreach (DataRow row in dtTaxRegion.Rows)
// {
// short regionType = (short)row["TaxRegionType"];
// if(regionType == 2)
// {
// netAmmountSGS = 4000;
// }
// if (regionType == 3)
// {
// netAmmountSGS = 3000;
// }
// }
// }
// else
// netAmmountSGS = 5000;
// }
// }
// if (oNetTaxPayable != null)
// {
// oDRow = oDTable.NewRow();
// oDRow["DataColumn1"] = oNetTaxPayable.Description;
// oDRow["DataColumn2"] = "";
// oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(netAmmountSGS);
// oDTable.Rows.Add(oDRow);
// }
// if (!_isPrvs)
// {
// if (oTaxDeducted != null)
// {
// oDRow = oDTable.NewRow();
// //oDRow["DataColumn1"] = "Tax deducted from salary";
// oDRow["DataColumn1"] = "Total Tax Paid";
// oDRow["DataColumn2"] = "";
// oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(netAmmountSGS);
// oDTable.Rows.Add(oDRow);
// }
// }
// else
// {
// if (oTaxDeducted != null)
// {
// oDRow = oDTable.NewRow();
// oDRow["DataColumn1"] = "Tax paid up to previous month";
// oDRow["DataColumn2"] = "";
// oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oTaxDeducted.PreviousAmount);
// oDTable.Rows.Add(oDRow);
// oDRow = oDTable.NewRow();
// oDRow["DataColumn1"] = "Tax paid this month";
// oDRow["DataColumn2"] = "";
// oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oTaxDeducted.ThisMonthAmount);
// oDTable.Rows.Add(oDRow);
// oDRow = oDTable.NewRow();
// oDRow["DataColumn1"] = "Tax to be paid upto June";
// oDRow["DataColumn2"] = "";
// oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oNetTaxPayable.TotalAmount - oTaxDeducted.TotalAmount);
// oDTable.Rows.Add(oDRow);
// }
// }
//}
//else
//{
// if (oNetTaxPayable != null)
// {
// oDRow = oDTable.NewRow();
// oDRow["DataColumn1"] = oNetTaxPayable.Description;
// oDRow["DataColumn2"] = "";
// oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oNetTaxPayable.TotalAmount);
// oDTable.Rows.Add(oDRow);
// }
// if (!_isPrvs)
// {
// if (oTaxDeducted != null)
// {
// oDRow = oDTable.NewRow();
// //oDRow["DataColumn1"] = "Tax deducted from salary";
// oDRow["DataColumn1"] = "Total Tax Paid";
// oDRow["DataColumn2"] = "";
// oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oTaxDeducted.TotalAmount);
// oDTable.Rows.Add(oDRow);
// }
// }
// else
// {
// if (oTaxDeducted != null)
// {
// oDRow = oDTable.NewRow();
// oDRow["DataColumn1"] = "Tax paid up to previous month";
// oDRow["DataColumn2"] = "";
// oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oTaxDeducted.PreviousAmount);
// oDTable.Rows.Add(oDRow);
// oDRow = oDTable.NewRow();
// oDRow["DataColumn1"] = "Tax paid this month";
// oDRow["DataColumn2"] = "";
// oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oTaxDeducted.ThisMonthAmount);
// oDTable.Rows.Add(oDRow);
// oDRow = oDTable.NewRow();
// oDRow["DataColumn1"] = "Tax to be paid upto June";
// oDRow["DataColumn2"] = "";
// oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oNetTaxPayable.TotalAmount - oTaxDeducted.TotalAmount);
// oDTable.Rows.Add(oDRow);
// }
// }
//}
#endregion SGS
oDTable.TableName = "PayrollDataSet_IncomeTaxOther";
orootDataset.Tables.Add(oDTable);
//PayrollDataSet.PayrollDataSet.ITHeaderDataTable oMulIT = new Payroll.Report.PayrollDataSet.PayrollDataSet.ITHeaderDataTable();
//Employee oEmp = Employee.Get(nEmpID);
//oDRow = oMulIT.NewRow();
//oDRow["EmpNo"] = oEmp.EmployeeNo;
//oDRow["EmpName"] = oEmp.Name;
//oDRow["TINNo"] = oEmp.TinNo;
//oDRow["AssesmentYear"] = _taxParameter.AssessmentYear;
//oDRow["FiscalYear"] = _taxParameter.FiscalYear;
//oMulIT.Rows.Add(oDRow);
//oMulIT.TableName = "PayrollDataSet_ITHeader";
//orootDataset.Tables.Add(oMulIT);
return orootDataset;
}
public static IncomeTax Get(List<IncomeTax> Incometaxs,
int employeeId, EnumIncomeTaxItemGroup groupCode, int itemId)
{
IncomeTax ReturnItem = Incometaxs.Find(delegate(IncomeTax taxItem)
{
return taxItem.EmployeeID ==employeeId
&& taxItem.ItemGroup == groupCode
&& taxItem.ItemID == itemId;
});
return ReturnItem;
}
public static List<TaxParameterSlab> CalculateTaxOnSlab(TaxParameter parameter, Employee emp, double taxableIncome)
{
TaxParameterService taxParameterService = new TaxParameterService();
PayrollType payrollType = new PayrollType();
payrollType = new PayrollTypeService().Get(emp.PayrollTypeID);
List<TaxParameterSlab> empTaxSlabs = taxParameterService.GetEmployeeSlab(payrollType, parameter, emp);
if (empTaxSlabs == null || empTaxSlabs.Count==0) throw new ServiceException("Employee Tax Slabs not found; Employee No:" + emp.EmployeeNo);
int index = 0;
if (emp.HasDisableChildren)
{
empTaxSlabs[0].IncomeAmount += 25000;
}
//if (emp.ForeignExPat &&
// Ease.CoreV35.Utility.Global.DateFunctions.DateDiff("m", emp.JoiningDate, SystemInformation.CurrentSysInfo.NextPayProcessDate) > 6)
//{
// empTaxSlabs[empTaxSlabs.Count - 1].SlabTaxAmount = empTaxSlabs[empTaxSlabs.Count].TaxPercent * (taxableIncome / 100);
// return empTaxSlabs;
//}
while (taxableIncome != 0)
{
TaxParameterSlab slab = empTaxSlabs[index];
if (taxableIncome > slab.IncomeAmount && index != empTaxSlabs.Count-1)
{
slab.SlabTaxAmount=GlobalFunctions.Round((slab.IncomeAmount * slab.TaxPercent) / 100);
slab.SlabTaxableAmount = slab.IncomeAmount;
taxableIncome = taxableIncome - slab.IncomeAmount;
}
else
{
slab.SlabTaxableAmount = taxableIncome;
slab.SlabTaxAmount =GlobalFunctions.Round(((taxableIncome * slab.TaxPercent) / 100));
taxableIncome = 0;
}
index = index + 1;
}
return empTaxSlabs;
}
private DataRow getARow(DataRow orow, IncomeTax oItem)
{
if (oItem.ItemGroup == EnumIncomeTaxItemGroup.Annual_Salary_Income)
{
DataRow dr = orow;
dr["EmpID"] = oItem.EmployeeID;
dr["ItemCode"] = oItem.ItemGroup;
dr["ItemID"] = oItem.ItemID;
dr["IncomeHead"] = oItem.Description;
if (_taxParameter.FiscalyearDatefrom < new DateTime(2022, 7, 1))
{
dr["AmountPerAnnum"] = GlobalFunctions.TakaFormat(_AmountPerAnnum); //oDRow["AmountPerannum"];
dr["ThisMonth"] = GlobalFunctions.TakaFormat(_ThisMonthAmount);
dr["PaidTillDate"] = GlobalFunctions.TakaFormat(_PaidTillDateAmount);//oDRow["PaidTillDate"];
dr["Projected"] = GlobalFunctions.TakaFormat(_ProjectedAmount);
}
else
{
dr["AmountPerAnnum"] = GlobalFunctions.TakaFormat(oItem.TotalAmount); //oDRow["AmountPerannum"];
dr["ThisMonth"] = GlobalFunctions.TakaFormat(oItem.ThisMonthAmount);
dr["PaidTillDate"] = GlobalFunctions.TakaFormat(oItem.PreviousAmount);//oDRow["PaidTillDate"];
dr["Projected"] = GlobalFunctions.TakaFormat(oItem.ProjectedAmount);
}
dr["Position"] = oItem.Position;
dr["Side"] = oItem.Side;
dr["LessExaempted"] = "0";
dr["RowSequence"] = oItem.Position;
return dr;
}
else if (oItem.ItemGroup == EnumIncomeTaxItemGroup.Annual_Income)
{
DataRow dr = orow;
dr["EmpID"] = oItem.EmployeeID;
dr["ItemCode"] = oItem.ItemGroup;
dr["ItemID"] = oItem.ItemID;
dr["IncomeHead"] = oItem.Description;
if (_taxParameter.FiscalyearDatefrom < new DateTime(2022, 7, 1))
{
dr["AmountPerAnnum"] = GlobalFunctions.TakaFormat(_TAmountPerAnnum); //oDRow["AmountPerannum"];
dr["ThisMonth"] = GlobalFunctions.TakaFormat(_TThisMonthAmount);
dr["PaidTillDate"] = GlobalFunctions.TakaFormat(_TPaidTillDateAmount);//oDRow["PaidTillDate"];
dr["Projected"] = GlobalFunctions.TakaFormat(_TProjectedAmount);
}
else
{
dr["AmountPerAnnum"] = GlobalFunctions.TakaFormat(oItem.TotalAmount); //oDRow["AmountPerannum"];
dr["ThisMonth"] = GlobalFunctions.TakaFormat(oItem.ThisMonthAmount);
dr["PaidTillDate"] = GlobalFunctions.TakaFormat(oItem.PreviousAmount);//oDRow["PaidTillDate"];
dr["Projected"] = GlobalFunctions.TakaFormat(oItem.ProjectedAmount);
}
dr["Position"] = oItem.Position;
dr["Side"] = oItem.Side;
dr["LessExaempted"] = "0";
dr["RowSequence"] = oItem.Position;
return dr;
}
else
{
DataRow dr = orow;
dr["EmpID"] = oItem.EmployeeID;
dr["ItemCode"] = oItem.ItemGroup;
dr["ItemID"] = oItem.ItemID;
dr["IncomeHead"] = oItem.Description;
dr["AmountPerAnnum"] = GlobalFunctions.TakaFormat(oItem.TotalAmount); //oDRow["AmountPerannum"];
dr["ThisMonth"] = GlobalFunctions.TakaFormat(oItem.ThisMonthAmount);
dr["PaidTillDate"] = GlobalFunctions.TakaFormat(oItem.PreviousAmount);//oDRow["PaidTillDate"];
dr["Projected"] = GlobalFunctions.TakaFormat(oItem.ProjectedAmount);
dr["Position"] = oItem.Position;
dr["Side"] = oItem.Side;
if (!(oItem.ItemGroup == EnumIncomeTaxItemGroup.Company_Contri_PF))
{
_AmountPerAnnum += oItem.TotalAmount;
_ThisMonthAmount += oItem.ThisMonthAmount;
_PaidTillDateAmount += oItem.PreviousAmount;
_ProjectedAmount += oItem.ProjectedAmount;
}
_TAmountPerAnnum += oItem.TotalAmount;
_TThisMonthAmount += oItem.ThisMonthAmount;
_TPaidTillDateAmount += oItem.PreviousAmount;
_TProjectedAmount += oItem.ProjectedAmount;
dr["LessExaempted"] = "0";
dr["RowSequence"] = oItem.Position;
return dr;
}
}
public byte[] ShowTaxCertificate(string empIds, int taxParamId, int payrollType, int currentTaxParamId, string reportType)
{
byte[] bytes = null;
IncomeTaxService incomeTaxService = new IncomeTaxService();
TaxParameter taxParameter = new TaxParameterService().Get(taxParamId);
string assessmentYear = taxParameter.AssessmentYear.ToString();
string fiscalYear = taxParameter.FiscalYear.ToString();
string sEmpNo = empIds;
string TaxPeriod = "";
//DataSet oDset = null;
DataSet resultDataSet = new DataSet();
DataRow oDRow = null;
LocalReport localReport = new LocalReport();
int nIndex;
int nCount = 1;
double GrandTotal;
List<IncomeTax> oIncomeTaxs = null;
IncomeTax oIncomeTax = new IncomeTax();
List<Employee> employeeList = null;
List<TaxChallan> taxChallans = new List<TaxChallan>();
employeeList = new EmployeeService().GetEmpsWithDiscontinue(sEmpNo, payrollType);
taxChallans = new TaxChallanService().GetByTaxParamId(taxParamId);
double nAmount = 0;
double nTempAmount = 0;
double performanceBonus = 0;
double salesIncentive = 0;
double otherAllowances = 0;
double gratuityAmount = 0;
double leaveAmount = 0;
PayrollDataSet.PayrollDataSet.AnnualIncomeCertificateDataTable dt = new PayrollDataSet.PayrollDataSet.AnnualIncomeCertificateDataTable();
foreach (Employee oEmp in employeeList)
{
if (oEmp.JoiningDate >= taxParameter.FiscalyearDatefrom)
{
TaxPeriod = "from " + oEmp.JoiningDate.ToString("MMMM dd, yyyy") + " to " + taxParameter.FiscalyearDateTo.ToString("MMMM dd, yyyy");
}
else
{
TaxPeriod = "from " + taxParameter.FiscalyearDatefrom.ToString("MMMM dd, yyyy") + " to " + taxParameter.FiscalyearDateTo.ToString("MMMM dd, yyyy");
}
GrandTotal = 0.0;
oDRow = dt.NewRow();
if (currentTaxParamId == taxParamId)
{
oIncomeTaxs = incomeTaxService.Get(incomeTaxService.GetEnumForSalaryIT(oEmp.ID), oEmp.ID, taxParamId);
}
else
{
oIncomeTaxs = incomeTaxService.Get(EnumIncomeTaxDataFrom.ProcessedData, oEmp.ID, taxParamId);
}
if (oIncomeTaxs == null) continue;
if (oEmp.Status == EnumEmployeeStatus.Discontinued)
{
taxChallans = taxChallans.FindAll(x =>
x.SalaryMonthly >= oEmp.JoiningDate && x.SalaryMonthly <= oEmp.DiscontinueDate);
}
else
{
taxChallans = taxChallans.FindAll(x => x.SalaryMonthly >= oEmp.JoiningDate);
}
nTempAmount = 0;
nAmount = 0;
GrandTotal = 0;
performanceBonus = 0;
salesIncentive = 0;
otherAllowances = 0;
gratuityAmount = 0;
leaveAmount = 0;
if (oIncomeTax != null)
{
// nIndex = incomeTaxService.GetIndex(oEmp.ID);
nIndex = oIncomeTaxs.FindIndex(x => x.EmployeeID == oEmp.ID);
var taxDeduction =
oIncomeTaxs.FirstOrDefault(x => x.ItemGroup == EnumIncomeTaxItemGroup.Tax_Deducted);
oDRow["EmployeeID"] = oEmp.EmployeeNo;
oDRow["Assesse"] = oEmp.Name;
oDRow["Designation"] = oEmp.Designation.Name;
oDRow["AssessmentYear"] = assessmentYear;
oDRow["IncomeYear"] = fiscalYear;
oDRow["TaxDeduction"] = GlobalFunctions.TakaFormat(taxDeduction == null ? 0 : taxDeduction.TotalAmount);
nAmount = GlobalFunctions.Round(incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Basic_Salary, (int)EnumIncomeTaxItemGroup.Basic_Salary) != null ? incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Basic_Salary, (int)EnumIncomeTaxItemGroup.Basic_Salary).TotalAmount : 0.0);//Total Amount of Salary Basic+Bonus, col 5
GrandTotal = GrandTotal + nAmount;
oDRow["BasicSalary"] = GlobalFunctions.TakaFormat(nAmount);
nAmount = GlobalFunctions.Round(incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.House_Rent_Allowance, (int)EnumIncomeTaxItemGroup.House_Rent_Allowance) != null ? incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.House_Rent_Allowance, (int)EnumIncomeTaxItemGroup.House_Rent_Allowance).TotalAmount : 0.0);//Periodical Cash Allowance, col 6
nTempAmount = nTempAmount + nAmount;
oDRow["HouseRentAllowance"] = GlobalFunctions.TakaFormat(nAmount);
nTempAmount = 0;
nAmount = GlobalFunctions.Round(incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Medical_Allowance, (int)EnumIncomeTaxItemGroup.Medical_Allowance) != null ? incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Medical_Allowance, (int)EnumIncomeTaxItemGroup.Medical_Allowance).TotalAmount : 0);
oDRow["MedicalAllowance"] = GlobalFunctions.TakaFormat(nAmount);
nTempAmount = 0;
nAmount = 0;
IncomeTax oITax = incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Conveyance_Allowance, (int)EnumIncomeTaxItemGroup.Conveyance_Allowance);
if (oITax != null)
{
nAmount = oITax.TotalAmount;
oDRow["TransportAllowance"] = GlobalFunctions.TakaFormat(oITax.TotalAmount);
}
else
{
oDRow["TransportAllowance"] = 0.0;
}
nAmount = GlobalFunctions.Round(incomeTaxService.GetAmount(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.LFA_Allowance) != null ? incomeTaxService.GetAmount(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.LFA_Allowance) : 0.0);
oDRow["FeeOrFreeOrConcessionalPassagesLFA"] = GlobalFunctions.TakaFormat(nAmount);
nAmount = GlobalFunctions.Round(incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Other_Allowance, 5) != null ? incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Other_Allowance, 5).TotalAmount : 0.0);
GrandTotal = GrandTotal + nAmount;
oDRow["MobileInternetAllowance"] = GlobalFunctions.TakaFormat(nAmount);
/*nAmount = GlobalFunctions.Round(incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Bonus, -213) != null
? incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Bonus, -213).TotalAmount
: 0.0);
GrandTotal = GrandTotal + nAmount;
performanceBonus = performanceBonus + nAmount;
nAmount = GlobalFunctions.Round(incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Bonus, 4) != null
? incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Bonus, 4).TotalAmount
: 0.0);
GrandTotal = GrandTotal + nAmount;
performanceBonus = performanceBonus + nAmount;*/
oDRow["PerformanceBonus"] = GlobalFunctions.TakaFormat(performanceBonus);
nAmount = GlobalFunctions.Round(incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Bonus, (int)EnumIncomeTaxItemGroup.Bonus) != null
? incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Bonus, (int)EnumIncomeTaxItemGroup.Bonus).TotalAmount
: 0.0);
GrandTotal = GrandTotal + nAmount;
oDRow["FestivalBonus"] = GlobalFunctions.TakaFormat(nAmount);
/*nAmount = GlobalFunctions.Round(incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Bonus, 3) != null
? incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Bonus, 3).TotalAmount
: 0.0);
GrandTotal = GrandTotal + nAmount;
salesIncentive = salesIncentive + nAmount;
nAmount = GlobalFunctions.Round(incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Bonus, 8) != null
? incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Bonus, 8).TotalAmount
: 0.0);
GrandTotal = GrandTotal + nAmount;
salesIncentive = salesIncentive + nAmount;*/
nAmount = GlobalFunctions.Round(incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Bonus, 6) != null
? incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Bonus, 6).TotalAmount
: 0.0);
GrandTotal = GrandTotal + nAmount;
salesIncentive = salesIncentive + nAmount;
nAmount = GlobalFunctions.Round(incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Other_Allowance, 24) != null
? incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Other_Allowance, 24).TotalAmount
: 0.0);
GrandTotal = GrandTotal + nAmount;
salesIncentive = salesIncentive + nAmount;
oDRow["SalesIncentive"] = GlobalFunctions.TakaFormat(salesIncentive);
if (!(Convert.ToDouble(oDRow["SalesIncentive"]) > 0))
{
taxChallans.RemoveAll(x => x.ChallanNo == "T-97" || x.ChallanNo == "T-602"
|| x.ChallanNo == "T-270" ||
x.ChallanNo == "T-98");
}
nAmount = GlobalFunctions.Round(incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Bonus, 15) != null
? incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Bonus, 15).TotalAmount
: 0.0);
GrandTotal = GrandTotal + nAmount;
oDRow["MaternityBenefits"] = GlobalFunctions.TakaFormat(nAmount);
nAmount = GlobalFunctions.Round(incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Other_Cash_Benefits, (int)EnumIncomeTaxItemGroup.Other_Cash_Benefits) != null ? incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Other_Cash_Benefits, (int)EnumIncomeTaxItemGroup.Other_Cash_Benefits).TotalAmount : 0.0);
GrandTotal = GrandTotal + nAmount;
oDRow["EarnedLeaveEncashment"] = GlobalFunctions.TakaFormat(nAmount);
nAmount = GlobalFunctions.Round(incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Company_Contri_PF, (int)EnumIncomeTaxItemGroup.Company_Contri_PF) != null ? incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Company_Contri_PF, (int)EnumIncomeTaxItemGroup.Company_Contri_PF).TotalAmount : 0.0);
GrandTotal = GrandTotal + nAmount;
oDRow["ProvidentFund"] = GlobalFunctions.TakaFormat(nAmount);
nAmount = GlobalFunctions.Round(incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Other_Allowance, 11) != null ? incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Other_Allowance, 11).TotalAmount : 0.0);
GrandTotal = GrandTotal + nAmount;
otherAllowances = otherAllowances + nAmount;
nAmount = GlobalFunctions.Round(incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Other_Allowance, 8) != null ? incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Other_Allowance, 8).TotalAmount : 0.0);
GrandTotal = GrandTotal + nAmount;
otherAllowances = otherAllowances + nAmount;
nAmount = GlobalFunctions.Round(incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Other_Allowance, 12) != null ? incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Other_Allowance, 12).TotalAmount : 0.0);
GrandTotal = GrandTotal + nAmount;
otherAllowances = otherAllowances + nAmount;
nAmount = GlobalFunctions.Round(incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Other_Allowance, 13) != null ? incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Other_Allowance, 13).TotalAmount : 0.0);
GrandTotal = GrandTotal + nAmount;
otherAllowances = otherAllowances + nAmount;
oDRow["OtherAllowances"] = GlobalFunctions.TakaFormat(otherAllowances);
nAmount = GlobalFunctions.Round(incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Other_Allowance, 45) != null ? incomeTaxService.Get(oIncomeTaxs, oEmp.ID, EnumIncomeTaxItemGroup.Other_Allowance, 45).TotalAmount : 0.0);
oDRow["TAReimbursement"] = GlobalFunctions.TakaFormat(nAmount);
FSTranDetail fsTranDetail = new FSTranDetailService().GetGratuity(oEmp.ID);
gratuityAmount = fsTranDetail == null ? 0 : fsTranDetail.ChangedValue;
oDRow["GratuityAmount"] = GlobalFunctions.TakaFormat(gratuityAmount);
nAmount = 0.0;
oDRow["OtherBenefitsAwards"] = GlobalFunctions.TakaFormat(nAmount);
FSTranDetail fsTranDetail2 = new FSTranDetailService().GetFinalSettlement(oEmp.ID);
leaveAmount = fsTranDetail2 == null ? 0 : fsTranDetail2.ChangedValue;
oDRow["FinalSettlement"] = GlobalFunctions.TakaFormat(leaveAmount);
oDRow["TotalIncome"] = Convert.ToDouble(oDRow["BasicSalary"]) +
Convert.ToDouble(oDRow["HouseRentAllowance"]) +
Convert.ToDouble(oDRow["MedicalAllowance"]) +
Convert.ToDouble(oDRow["TransportAllowance"]) +
Convert.ToDouble(oDRow["FeeOrFreeOrConcessionalPassagesLFA"]) +
Convert.ToDouble(oDRow["MobileInternetAllowance"]) +
Convert.ToDouble(oDRow["FestivalBonus"]) +
Convert.ToDouble(oDRow["PerformanceBonus"]) +
Convert.ToDouble(oDRow["SalesIncentive"]) +
Convert.ToDouble(oDRow["MaternityBenefits"]) +
Convert.ToDouble(oDRow["EarnedLeaveEncashment"]) +
Convert.ToDouble(oDRow["ProvidentFund"]) +
Convert.ToDouble(oDRow["TAReimbursement"]) +
Convert.ToDouble(oDRow["OtherAllowances"]) +
Convert.ToDouble(oDRow["GratuityAmount"]) +
Convert.ToDouble(oDRow["OtherBenefitsAwards"]) +
Convert.ToDouble(oDRow["FinalSettlement"]);
var str = string.Join(",", taxChallans.Select(x => x.ChallanNo));
var deduction = taxDeduction == null ? 0 : taxDeduction.TotalAmount;
if (deduction == 0)
{
oDRow["TaxChallan"] = "";
}
else
{
oDRow["TaxChallan"] = str;
}
dt.Rows.Add(oDRow);
}
}
//rParam = new ReportParameter("TaxPeriod", TaxPeriod);
//reportParameters.Add(rParam);
//rParam = new ReportParameter("signature", signaturePath);
//reportParameters.Add(rParam);
//if (reportParameters != null)
// localReport.SetParameters(reportParameters);
//Warning[] warnings;
//string[] streamids;
//string mimeType;
//string encoding;
//string filenameExtension;
//bytes = localReport.Render(reportType, null, out mimeType, out encoding, out filenameExtension,
// out streamids, out warnings);
//dt.TableName = "PayrollDataSet_AnnualIncomeCertificate";
//resultDataSet.Tables.Add(dt);
//string rdlcName = "HRM.Report.RDLC.AnnualIncomeCertificate.rdlc";
ReportProcessor reportProcessor = new ReportProcessor();
return reportProcessor.ShowDlgForAnnualIncomeCertificate(null, dt, TaxPeriod, payrollType, reportType);
//return reportProcessor.CommonReportView(null, rdlcName, resultDataSet, null, reportParameters, true, payrollType, reportType);
}
public byte[] ShowMultipleTaxCard(string sEmpIDs, bool ITStatus, int nTaxParamID, int systemTaxParamID, DateTime nextPayProcessDate, int payrollTypeID, string reportType)
{
ReportProcessor form = new ReportProcessor();
string RDLCName = null;
//DataSet orootDataset = this.PrepareDatasetMultipleEmployeeTaxCard(sEmpIDs, ITStatus, nTaxParamID, systemTaxParamID, nextPayProcessDate, payrollTypeID);
_taxParameter = new TaxParameterService().Get(nTaxParamID);
//string[] sEmp = sEmpID.Split(',');
//int TotalEmp = sEmp.Length;
//List<Employee> oEmps = new EmployeeService().GetByEmpIDs(sEmpIDs, payrollTypeID);
//foreach (Employee oEmp in oEmps)
//{
// if (nTaxParamID == systemTaxParamID)
// {
// oincometaxes = new IncomeTaxService().Get(GetEnumForSalaryIT(oEmp.ID, nextPayProcessDate), oEmp.ID, nTaxParamID);
// }
// else
// {
// oincometaxes = new IncomeTaxService().Get(EnumIncomeTaxDataFrom.ProcessedData, oEmp.ID, nTaxParamID);
// ITStatus = false;
// }
//}
DataSet ds = new DataSet();
List<Employee> oEMployees = new EmployeeService().GetEmpsWithDiscontinue(sEmpIDs, payrollTypeID);
PayrollDataSet.PayrollDataSet.EmployeeDataTable dEmpTable = new PayrollDataSet.PayrollDataSet.EmployeeDataTable();
DataRow dr = null;
foreach (Employee oEmp in oEMployees)
{
dr = dEmpTable.NewRow();
dr["EmployeeID"] = oEmp.ID.ToString();
dr["EmployeeNo"] = oEmp.EmployeeNo.ToString();
dr["EmployeeName"] = oEmp.Name;
dr["TINNo"] = oEmp.TinNo;
dr["Designation"] = oEmp.Designation.Name;
dr["Location"] = oEmp.Location.Name;
dr["Department"] = oEmp.Department.Name;
string m = Enum.GetName(typeof(EnumGender), (int)oEmp.Gender);
dr["Gender"] = m.ToString();
dEmpTable.Rows.Add(dr);
}
dEmpTable.TableName = "PayrollDataSet_Employee";
ds.Tables.Add(dEmpTable);
//dEmpTable.TableName = "PayrollDataSet_BanglaPaySlipNew";
//ds.Tables.Add(dEmpTable);
DataSet dsSub = new DataSet();
dsSub = this.PrepareDatasetMultipleEmployeeTaxCard(sEmpIDs, oEMployees, ITStatus, nTaxParamID, systemTaxParamID, nextPayProcessDate, payrollTypeID);
//dsSub = this.PrepareDatasetMultipleEmployeeTaxCard(sEmpIDs, ITStatus, nTaxParamID, systemTaxParamID, nextPayProcessDate, payrollTypeID);
//dTable.TableName = "PayrollDataSet_BanglaPaySlipNewProdBonus";
//dsSub.Tables.Add(dTable);
//dTChallan.TableName = "dsBonusDataSet_BanglaPSlipBonus";
//dsSub.Tables.Add(dTChallan);
if (_isPrvs == false)
{
RDLCName = "NewTaxCard.rdlc";
}
else
{
if (_taxParameter.FiscalyearDatefrom < new DateTime(2022, 7, 1))
{
RDLCName = "PrevTaxCard.rdlc";
}
else
{
RDLCName = "PrevTaxCardNew.rdlc";
}
}
bool otherInvestment = false;
var companyNameObj = new SystemConfigarationService().GetconfigValue(EnumConfigurationType.Logic, "system", "company");
string companyName = Convert.ToString(companyNameObj);
//if (companyName == "SGS Bangladesh Limited")
// otherInvestment = true;
List<ReportParameter> _parameters = new List<ReportParameter>();
ReportParameter parameter = new ReportParameter("AssesmentYear", _taxParameter.AssessmentYear);
_parameters.Add(parameter);
parameter = new ReportParameter("FiscalYear", _taxParameter.FiscalYear);
_parameters.Add(parameter);
parameter = new ReportParameter("OtherInvestment", otherInvestment.ToString());
_parameters.Add(parameter);
return form.CommonReportViewForReports(null, ds, dsSub, RDLCName, _parameters, true, payrollTypeID, reportType);
}
public DataSet PrepareDatasetMultipleEmployeeTaxCard(string sEmpIDs, List<Employee> oEMployees, bool ITStatus, int nTaxParamID, int systemTaxParamID, DateTime nextPayProcessDate, int payrollTypeID)
{
DataSet _dTaxtables = new DataSet();
//_TaxParameterID = nTaxParamID;
string sSalaryEmp = string.Empty;
string sProcessTempEmp = string.Empty;
//List<Employee> oEMployees = new EmployeeService().GetEmpsWithDiscontinue(sEmpIDs, payrollTypeID);
List<IncomeTax> oTaxes = new List<IncomeTax>();
List<IncomeTax> oSalaryTaxes = new List<IncomeTax>();
List<IncomeTax> oTempTaxes = new List<IncomeTax>();
PayrollDataSet.PayrollDataSet.TaxRebeatInvestmentDataTable dTable = new PayrollDataSet.PayrollDataSet.TaxRebeatInvestmentDataTable();
PayrollDataSet.PayrollDataSet.TaxChallanDataTable dTChallan = new PayrollDataSet.PayrollDataSet.TaxChallanDataTable();
DataRow dChallan = null;
DataRow dr = null;
_taxParameter = new TaxParameterService().Get(nTaxParamID);
IncomeTaxService incomeTaxService = new IncomeTaxService();
if (nTaxParamID == systemTaxParamID)
{
foreach (Employee oem in oEMployees)
{
EnumIncomeTaxDataFrom oEnum = incomeTaxService.GetEnumForSalaryIT(oem.ID);
if (oEnum == EnumIncomeTaxDataFrom.SalaryITTempData)
{
if (sSalaryEmp == string.Empty)
{
sSalaryEmp = oem.ID.ToString();
}
else
{
sSalaryEmp = sSalaryEmp + "," + oem.ID.ToString();
}
}
else
{
if (sProcessTempEmp == string.Empty)
{
sProcessTempEmp = oem.ID.ToString();
}
else
{
sProcessTempEmp = sProcessTempEmp + "," + oem.ID.ToString();
}
}
}
//bool bSalaryProcessed = SalaryMonthly.IsSalaryProcessed(Payroll.BO.SystemInformation.CurrentSysInfo.NextPayProcessDate);
if (sSalaryEmp != string.Empty)
{
oSalaryTaxes = incomeTaxService.Get(EnumIncomeTaxDataFrom.SalaryITTempData, sSalaryEmp, nTaxParamID);
}
if (sProcessTempEmp != string.Empty)
{
oTempTaxes = incomeTaxService.Get(EnumIncomeTaxDataFrom.ProcessTempData, sProcessTempEmp, nTaxParamID);
}
if (oSalaryTaxes.Count > 0)
{
if (oTempTaxes.Count > 0)
{
oTaxes = oSalaryTaxes.Concat(oTempTaxes).ToList();
}
else
{
oTaxes = oSalaryTaxes;
}
}
else
{
if (oTempTaxes.Count > 0)
{
oTaxes = oTempTaxes;
}
}
foreach (Employee oEmp in oEMployees)
{
_employee = oEmp;
_incometaxes = oTaxes.Where(x => x.EmployeeID == _employee.ID).ToList();
if (_incometaxes.Count == 0)
{
continue;
}
_dSet = PrepareDatasetMultipleTaxCard(oEmp, payrollTypeID);
if (_dSet.Tables.Count > 0)
{
_dTaxtables.Merge(_dSet);
}
IncomeTax pf = incomeTaxService.Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Company_Contri_PF,
(int)EnumIncomeTaxItemGroup.Company_Contri_PF);
double PFInvestment = 0.0;
if (pf != null)
PFInvestment = pf.TotalAmount;
dr = dTable.NewRow();
dr["TaxPercent"] = _taxParameter.MaxInvestPercent;
dr["TaxableIncome"] = _20Investment;
dr["MaxInvestment"] = _taxParameter.MaxInvAmount;
dr["PFInvestment"] = PFInvestment;
dr["EmpID"] = _employee.ID.ToString();
dTable.Rows.Add(dr);
dChallan = dTChallan.NewRow();
List<TaxChallan> oTaxChallanIndEmp = new List<TaxChallan>();
//oTaxChallanIndEmp = oTaxChallans.Where(x => x.EmployeeID == oEmp.ID).ToList();
oTaxChallanIndEmp = new TaxChallanService().Get(oEmp.ID, nTaxParamID);
int count = 1;
string sChallanNo = "";
if (oTaxChallanIndEmp != null && oTaxChallanIndEmp.Count > 0)
{
sChallanNo = "Challan No. : ";
foreach (TaxChallan oItem in oTaxChallanIndEmp)
{
if (count == oTaxChallanIndEmp.Count)
{
sChallanNo += oItem.ChallanNo + "/" + oItem.DepositDate.ToString("ddMMMyy") + ", ";
}
else
{
sChallanNo += oItem.ChallanNo + "/" + oItem.DepositDate.ToString("ddMMMyy") + ", ";
count++;
}
}
}
dChallan["ChallanNo"] = sChallanNo;
double _taxInvestment = _actualInvestment;
dChallan["TaxInvestment"] = _taxInvestment;
dChallan["EmpID"] = oEmp.ID.ToString();
dTChallan.Rows.Add(dChallan);
}
dTChallan.TableName = "PayrollDataSet_TaxChallan";
_dTaxtables.Tables.Add(dTChallan);
dTable.TableName = "PayrollDataSet_TaxRebeatInvestment";
_dTaxtables.Tables.Add(dTable);
}
else
{
List<TaxChallan> oTaxChallanIndEmp = new List<TaxChallan>();
List<TaxChallan> oTaxChallans = new List<TaxChallan>();
oTaxes = incomeTaxService.Get(EnumIncomeTaxDataFrom.ProcessedData, sEmpIDs, nTaxParamID);
oTaxChallans = new TaxChallanService().Get(sEmpIDs, nTaxParamID);
_isPrvs = true;
foreach (Employee oEmp in oEMployees)
{
_incometaxes = oTaxes.Where(x => x.EmployeeID == oEmp.ID).ToList();
_dSet = PrepareDatasetMultipleTaxCard(oEmp, payrollTypeID);
if (_dSet.Tables.Count > 0)
{
_dTaxtables.Merge(_dSet);
}
IncomeTax pf = incomeTaxService.Get(_incometaxes, oEmp.ID, EnumIncomeTaxItemGroup.Company_Contri_PF,
(int)EnumIncomeTaxItemGroup.Company_Contri_PF);
double PFInvestment = 0.0;
if (pf != null)
PFInvestment = pf.TotalAmount;
dr = dTable.NewRow();
dr["TaxPercent"] = _taxParameter.MaxInvestPercent;
dr["TaxableIncome"] = _20Investment;
dr["MaxInvestment"] = _taxParameter.MaxInvAmount;
dr["PFInvestment"] = PFInvestment;
dr["EmpID"] = oEmp.ID.ToString();
dTable.Rows.Add(dr);
dChallan = dTChallan.NewRow();
//oTaxChallanIndEmp = oTaxChallans.Where(x => x.EmployeeID == oEmp.ID).ToList();
oTaxChallanIndEmp = new TaxChallanService().Get(oEmp.ID, nTaxParamID);
int count = 1;
string sChallanNo = "This is a computer-generated document. No signature is required.";// \nCertified that the above-mentioned amount of tax has already been deposited based on the employers confirmation of investment amount in allowed instruments.
if (oTaxChallanIndEmp != null && oTaxChallanIndEmp.Count > 0)
{
sChallanNo = "Challan No. : ";
foreach (TaxChallan oItem in oTaxChallanIndEmp)
{
if (count == oTaxChallanIndEmp.Count)
{
sChallanNo += oItem.ChallanNo + "/" + oItem.DepositDate.ToString("ddMMMyy") + ", ";
}
else
{
sChallanNo += oItem.ChallanNo + "/" + oItem.DepositDate.ToString("ddMMMyy") + ", ";
count++;
}
}
}
dChallan["ChallanNo"] = sChallanNo;
double _taxInvestment = _actualInvestment;
dChallan["TaxInvestment"] = _taxInvestment;
dChallan["EmpID"] = oEmp.ID.ToString();
dTChallan.Rows.Add(dChallan);
}
dTChallan.TableName = "PayrollDataSet_TaxChallan";
_dTaxtables.Tables.Add(dTChallan);
dTable.TableName = "PayrollDataSet_TaxRebeatInvestment";
_dTaxtables.Tables.Add(dTable);
//dEmpTable.TableName = "PayrollDataSet_Employee";
//_dTaxtables.Tables.Add(dEmpTable);
}
//if (_dTaxtables.Tables.Count > 0)
//{
// form.ShowMultipleEmployeeTaxCard(_taxParameter, _item, _dTaxtables, _taxParameter.AssessmentYear, _taxParameter.FiscalYear, _isPrvs);
//}
return _dTaxtables;
}
private DataSet PrepareDatasetMultipleTaxCard(Employee _employee, int payrollTypeID)
{
DataSet orootDataset = new DataSet();
DataRow dr = null;
IncomeTax oIncomeTax = new IncomeTax();
var companyNameObj = new SystemConfigarationService().GetconfigValue(EnumConfigurationType.Logic, "system", "company");
string companyName = Convert.ToString(companyNameObj);
PayrollDataSet.PayrollDataSet.IncomeTaxDataTable dTable1 = new PayrollDataSet.PayrollDataSet.IncomeTaxDataTable();
PayrollDataSet.PayrollDataSet.IncomeTaxDataTable dTable2 = new PayrollDataSet.PayrollDataSet.IncomeTaxDataTable();
DataRow houseRent = null;
DataRow Conveyance = null;
DataRow Medical = null;
DataRow lfa = null;
DataRow wppf = null;
DataRow TotalSalaryExepted = null;
DataRow TotalAnnualExepted = null;
_InvestmentAmount = 0.0;
_TotalTaxAmount = 0.0;
_LessExemptedAmount = 0.0;
_PaidTillDateAmount = 0.0;
_ThisMonthAmount = 0.0;
_ProjectedAmount = 0.0;
_AmountPerAnnum = 0.0;
_TotalSalaryExempted = 0.0;
_TotalAnnuaExempted = 0.0;
_TPaidTillDateAmount = 0.0;
_TThisMonthAmount = 0.0;
_TProjectedAmount = 0.0;
_TAmountPerAnnum = 0.0;
_pfInvestment = 0;
_otherInvestment = 0;
_investmentAllowed = 0;
_20Investment = 0;
foreach (IncomeTax oItem in _incometaxes)
{
if (oItem.ItemGroup == EnumIncomeTaxItemGroup.Exemption_Conveyance_Allowance ||
oItem.ItemGroup == EnumIncomeTaxItemGroup.Exemption_House_Rent_Allowance ||
oItem.ItemGroup == EnumIncomeTaxItemGroup.Exemption_Medical_Allowance ||
oItem.ItemGroup == EnumIncomeTaxItemGroup.Exemption_LFA_Allowance ||
oItem.ItemGroup == EnumIncomeTaxItemGroup.WPPF_Examption)
continue;
if (oItem.Side == EnumIncomeTaxSide.Inc_SalaryIncome || oItem.Side == EnumIncomeTaxSide.Dec_SalaryIncome)
{
dr = dTable1.NewRow();
dTable1.Rows.Add(this.getARow(dr, oItem, _employee));
if (oItem.ItemGroup == EnumIncomeTaxItemGroup.House_Rent_Allowance)
houseRent = dr;
if (oItem.ItemGroup == EnumIncomeTaxItemGroup.Medical_Allowance)
Medical = dr;
if (oItem.ItemGroup == EnumIncomeTaxItemGroup.Conveyance_Allowance)
Conveyance = dr;
if (oItem.ItemGroup == EnumIncomeTaxItemGroup.LFA_Allowance)
lfa = dr;
if (oItem.ItemGroup == EnumIncomeTaxItemGroup.WPPF_Allowance)
wppf = dr;
}
}
if (houseRent != null)
{
IncomeTax taxAmount = new IncomeTaxService().Get(_incometaxes, _employee.ID,
EnumIncomeTaxItemGroup.Exemption_House_Rent_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_House_Rent_Allowance);
if (taxAmount != null)
{
_TotalSalaryExempted += taxAmount.TotalAmount;
houseRent["LessExaempted"] = GlobalFunctions.TakaFormat(taxAmount.TotalAmount);
}
}
if (Medical != null)
{
IncomeTax taxAmount = new IncomeTaxService().Get(_incometaxes, _employee.ID,
EnumIncomeTaxItemGroup.Exemption_Medical_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_Medical_Allowance);
if (taxAmount != null)
{
_TotalSalaryExempted += taxAmount.TotalAmount;
Medical["LessExaempted"] = GlobalFunctions.TakaFormat(taxAmount.TotalAmount);
}
}
if (Conveyance != null)
{
IncomeTax taxAmount = new IncomeTaxService().Get(_incometaxes, _employee.ID,
EnumIncomeTaxItemGroup.Exemption_Conveyance_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_Conveyance_Allowance);
if (taxAmount != null)
{
_TotalSalaryExempted += taxAmount.TotalAmount;
Conveyance["LessExaempted"] = GlobalFunctions.TakaFormat(taxAmount.TotalAmount);
}
}
if (lfa != null)
{
IncomeTax taxAmount = new IncomeTaxService().Get(_incometaxes, _employee.ID,
EnumIncomeTaxItemGroup.Exemption_LFA_Allowance, (int)EnumIncomeTaxItemGroup.Exemption_LFA_Allowance);
if (taxAmount != null)
{
_TotalSalaryExempted += taxAmount.TotalAmount;
lfa["LessExaempted"] = GlobalFunctions.TakaFormat(taxAmount.TotalAmount);
}
}
if (wppf != null)
{
IncomeTax taxAmount = new IncomeTaxService().Get(_incometaxes, _employee.ID,
EnumIncomeTaxItemGroup.WPPF_Examption, (int)EnumIncomeTaxItemGroup.WPPF_Examption);
if (taxAmount != null)
{
_TotalSalaryExempted += taxAmount.TotalAmount;
wppf["LessExaempted"] = GlobalFunctions.TakaFormat(taxAmount.TotalAmount);
}
}
IncomeTax salaryIncome = new IncomeTaxService().Get(_incometaxes, _employee.ID,
EnumIncomeTaxItemGroup.Annual_Salary_Income, (int)EnumIncomeTaxItemGroup.Annual_Salary_Income);
if (salaryIncome != null)
{
dr = dTable1.NewRow();
dTable1.Rows.Add(this.getARow(dr, salaryIncome, _employee));
TotalSalaryExepted = dr;
TotalSalaryExepted["LessExaempted"] = _TotalSalaryExempted;
}
foreach (IncomeTax oItem in _incometaxes)
{
if (oItem.Side == EnumIncomeTaxSide.Inc_AnnualIncome || oItem.Side == EnumIncomeTaxSide.Dec_AnnualIncome)
{
if (oItem.ItemID != -305)
{
dr = dTable1.NewRow();
dTable1.Rows.Add(this.getARow(dr, oItem, _employee));
}
//_TotalAnnuaExempted = oItem.TotalAmount;
}
}
IncomeTax totalAnnualExemption = new IncomeTaxService().Get(_incometaxes, _employee.ID,
EnumIncomeTaxItemGroup.AnnualExemption, (int)EnumIncomeTaxItemGroup.AnnualExemption);
if (totalAnnualExemption != null)
{
dr = dTable1.NewRow();
totalAnnualExemption.ProjectedAmount *= -1;
totalAnnualExemption.TotalAmount *= -1;
dTable1.Rows.Add(this.getARow(dr, totalAnnualExemption, _employee));
}
IncomeTax totalAnnualIncome = new IncomeTaxService().Get(_incometaxes, _employee.ID,
EnumIncomeTaxItemGroup.Annual_Income, (int)EnumIncomeTaxItemGroup.Annual_Income);
if (totalAnnualIncome != null)
{
dr = dTable1.NewRow();
dTable1.Rows.Add(this.getARow(dr, totalAnnualIncome, _employee));
TotalAnnualExepted = dr;
TotalAnnualExepted["LessExaempted"] = _TotalSalaryExempted;
}
dTable1.TableName = "PayrollDataSet_IncomeTax";
orootDataset.Tables.Add(dTable1);
// Crate Slab Data
double ngrossTax = 0;
PayrollDataSet.PayrollDataSet.IncomeTaxSlabDataTable dTable = new PayrollDataSet.PayrollDataSet.IncomeTaxSlabDataTable();
_InvestmentAmount = _taxParameter.MaxInvAmount;
if (totalAnnualIncome != null)
{
PayrollType pType = new PayrollTypeService().Get(payrollTypeID);
List<TaxParameterSlab> empTaxSlabs = new TaxParameterService().CalculateTaxOnSlab(pType, _taxParameter, _employee, totalAnnualIncome.TotalAmount);
int index = 0;
dr = null;
foreach (TaxParameterSlab drr in empTaxSlabs)
{
dr = dTable.NewRow();
dr["CurrentRate"] = drr.TaxPercent.ToString() + "%";
dr["EmpID"] = _employee.ID.ToString();
if (index == 0)
dr["Parameter"] = "On First BDT-" + drr.IncomeAmount.ToString();
else if (index + 1 == empTaxSlabs.Count)
dr["Parameter"] = "On Remaining Balance";// + drr.IncomeAmount.ToString();
else
dr["Parameter"] = "On Next BDT-" + drr.IncomeAmount.ToString();
dr["TaxableIncome"] = drr.SlabTaxableAmount.ToString();
dr["IndividualTaxLiability"] = drr.SlabTaxAmount.ToString();
index++;
dTable.Rows.Add(dr);
ngrossTax = ngrossTax + drr.SlabTaxAmount;
}
}
dTable.TableName = "PayrollDataSet_IncomeTaxSlab";
orootDataset.Tables.Add(dTable);
//Create other items
PayrollDataSet.PayrollDataSet.IncomeTaxOtherDataTable oDTable = new PayrollDataSet.PayrollDataSet.IncomeTaxOtherDataTable();
// DataSet oIncomeTaxOth = IncomeTax.GetEmpIDforOthTax(dataFrom, nEmpID);
DataRow oDRow = null;
//IncomeTax oInvestment = IncomeTax.Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Tax_Credit_On_Investment,
// (int)EnumIncomeTaxItemGroup.Tax_Credit_On_Investment);
//if (oInvestment != null)
//{
// oDRow = oDTable.NewRow();
// oDRow["DataColumn1"] = oInvestment.Description;
// oDRow["DataColumn2"] = "";
// oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oInvestment.TotalAmount);
// oDTable.Rows.Add(oDRow);
//}
IncomeTax investmentCapdo;
if (_investmentwithoutPF == false)
{
investmentCapdo = new IncomeTaxService().Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Annual_Income,
(int)EnumIncomeTaxItemGroup.Annual_Income);
if (investmentCapdo != null)
_20Investment = (investmentCapdo.TotalAmount * _taxParameter.MaxInvestPercent) / 100;
}
else
{
investmentCapdo = new IncomeTaxService().Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Annual_Salary_Income,
(int)EnumIncomeTaxItemGroup.Annual_Salary_Income);
if (investmentCapdo != null)
_20Investment = (investmentCapdo.TotalAmount * _taxParameter.MaxInvestPercent) / 100;
}
IncomeTax acinvestment = new IncomeTaxService().Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Investment_Actual,
(int)EnumIncomeTaxItemGroup.Investment_Actual);
if (acinvestment != null)
_actualInvestment = acinvestment.TotalAmount;
IncomeTax taxRebate = new IncomeTaxService().Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Investment_Allowed,
(int)EnumIncomeTaxItemGroup.Investment_Allowed);
if (taxRebate != null)
{
_investmentAllowed = taxRebate.TotalAmount;
string spf = "";
IncomeTax pf = new IncomeTaxService().Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Company_Contri_PF,
(int)EnumIncomeTaxItemGroup.Company_Contri_PF);
if (pf != null)
{
_pfInvestment = pf.TotalAmount;
double npfamount = 0;
double otherAmount = 0;
IncomeTax actualInvestment = new IncomeTaxService().Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Investment_Actual,
(int)EnumIncomeTaxItemGroup.Investment_Actual);
npfamount = (pf.TotalAmount * 2 > taxRebate.TotalAmount) ? taxRebate.TotalAmount : pf.TotalAmount * 2;
if (actualInvestment == null)
{
otherAmount = taxRebate.TotalAmount - pf.TotalAmount * 2;
if (otherAmount < 0) otherAmount = 0;
_otherInvestment = otherAmount;
}
else
{
otherAmount = actualInvestment.TotalAmount;
_otherInvestment = otherAmount;
}
if (ngrossTax <= 0) _otherInvestment = 0;
// spf = "PF: " + GlobalFunctions.TakaFormat(npfamount) + ", Other: " + GlobalFunctions.TakaFormat(otherAmount);
spf = "";
}
oDRow = oDTable.NewRow();
oDRow["DataColumn1"] = taxRebate.Description;
oDRow["DataColumn2"] = spf;
oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(taxRebate.TotalAmount);
oDRow["EmpID"] = _employee.ID.ToString();
// oDTable.Rows.Add(oDRow);
}
bool bAIT = false;
double dNetTax = 0;
foreach (IncomeTax oItem in _incometaxes)
{
if (companyName == "SGS Bangladesh Limited")
{
//if ((oItem.Side == EnumIncomeTaxSide.Inc_GrossTax || oItem.Side == EnumIncomeTaxSide.Dec_GrossTax) && oItem.ItemID != 4 && oItem.ItemID != 12)
if ((oItem.Side == EnumIncomeTaxSide.Dec_GrossTax && oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Credit_On_Investment && oItem.ItemID == -210)
|| (oItem.Side == EnumIncomeTaxSide.Dec_GrossTax && oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Gross_OtherRebate && oItem.ItemID == -227))
{
oDRow = oDTable.NewRow();
if (oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Credit_On_Investment || oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Gross_OtherRebate)
{
if (oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Gross_OtherRebate)
{
oDRow["DataColumn1"] = oItem.Description;//"AIT WPPF";
bAIT = true;
}
else
oDRow["DataColumn1"] = oItem.Description;
//if (ngrossTax > 0)
if (oItem.Side == EnumIncomeTaxSide.Dec_GrossTax)
oDRow["DataColumn3"] = "(" + GlobalFunctions.TakaFormat(oItem.TotalAmount) + ")";//.ToString("#,##")
else oDRow["DataColumn3"] = "(0.00)";
}
else
{
oDRow["DataColumn1"] = oItem.Description;
oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oItem.TotalAmount);//.ToString("#,##");
}
oDRow["DataColumn2"] = "";
oDRow["EmpID"] = _employee.ID.ToString();
oDTable.Rows.Add(oDRow);
}
}
else
{
if (oItem.Side == EnumIncomeTaxSide.Inc_GrossTax || oItem.Side == EnumIncomeTaxSide.Dec_GrossTax)
{
oDRow = oDTable.NewRow();
if (oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Credit_On_Investment || oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Gross_OtherRebate)
{
if (oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Gross_OtherRebate)
{
oDRow["DataColumn1"] = oItem.Description;//"AIT WPPF";
bAIT = true;
}
else
oDRow["DataColumn1"] = oItem.Description;
if (ngrossTax > 0)
oDRow["DataColumn3"] = "(" + oItem.TotalAmount.ToString("#,##") + ")";
else oDRow["DataColumn3"] = "(0)";
}
else
{
oDRow["DataColumn1"] = oItem.Description;
oDRow["DataColumn3"] = oItem.TotalAmount.ToString("#,##");
}
oDRow["DataColumn2"] = "";
oDRow["EmpID"] = _employee.ID.ToString();
oDTable.Rows.Add(oDRow);
}
}
}
IncomeTax oNetTaxPayable = new IncomeTaxService().Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Net_Payable,
(int)EnumIncomeTaxItemGroup.Net_Payable);
IncomeTax oTaxDeducted = new IncomeTaxService().Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Tax_Deducted,
(int)EnumIncomeTaxItemGroup.Tax_Deducted);
if (oNetTaxPayable != null)
{
oDRow = oDTable.NewRow();
oDRow["DataColumn1"] = oNetTaxPayable.Description;
oDRow["DataColumn2"] = "";
//if (bAIT == true && oNetTaxPayable.TotalAmount < 5000)//(oTaxDeducted.TotalAmount <= 6000) &&
//{
// //oDRow["DataColumn3"] = oNetTaxPayable.TotalAmount.ToString("#,##");
// oDRow["DataColumn3"] = Convert.ToDouble(5000).ToString("#,##");
// dNetTax = Convert.ToDouble(oDRow["DataColumn3"]);
//}
//else
//{
oDRow["DataColumn3"] = oNetTaxPayable.TotalAmount.ToString("#,##");
dNetTax = oNetTaxPayable.TotalAmount;
//}
oDRow["EmpID"] = _employee.ID.ToString();
oDTable.Rows.Add(oDRow);
}
// IncomeTax oTaxRefund = IncomeTax.Get(_incometaxes, _employee.ID, EnumIncomeTaxItemGroup.Tax_Refund_On_Current_Year,
//(int)EnumIncomeTaxItemGroup.Tax_Refund_On_Current_Year);
if (_isPrvs)
{
if (oTaxDeducted != null)
{
oDRow = oDTable.NewRow();
//oDRow["DataColumn1"] = "Tax deducted from salary";
oDRow["DataColumn1"] = "Total Tax Paid to The Government";
oDRow["DataColumn2"] = "";
oDRow["DataColumn3"] = (oTaxDeducted.TotalAmount).ToString("#,##");
oDRow["EmpID"] = _employee.ID.ToString();
oDTable.Rows.Add(oDRow);
}
}
else
{
if (oTaxDeducted != null)
{
oDRow = oDTable.NewRow();
oDRow["DataColumn1"] = "Tax paid up to previous month";
oDRow["DataColumn2"] = "";
oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oTaxDeducted.PreviousAmount);
oDRow["EmpID"] = _employee.ID.ToString();
oDTable.Rows.Add(oDRow);
oDRow = oDTable.NewRow();
oDRow["DataColumn1"] = "Tax paid this month";
oDRow["DataColumn2"] = "";
oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(oTaxDeducted.ThisMonthAmount);
oDRow["EmpID"] = _employee.ID.ToString();
oDTable.Rows.Add(oDRow);
oDRow = oDTable.NewRow();
oDRow["DataColumn1"] = "Tax to be paid upto June";
oDRow["DataColumn2"] = "";
oDRow["EmpID"] = _employee.ID.ToString();
if (oNetTaxPayable != null)
{
oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(dNetTax - oTaxDeducted.TotalAmount);
}
oDTable.Rows.Add(oDRow);
}
}
////this condition is added for Sgs
//if (companyName == "SGS Bangladesh Limited")
//{
// double netAmmountSGS = ngrossTax;
// foreach (IncomeTax oItem in _incometaxes)
// {
// if (netAmmountSGS == 0)
// {
// break;
// }
// if ((oItem.Side == EnumIncomeTaxSide.Dec_GrossTax && oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Credit_On_Investment && oItem.ItemID == -210)
// || (oItem.Side == EnumIncomeTaxSide.Dec_GrossTax && oItem.ItemGroup == EnumIncomeTaxItemGroup.Tax_Gross_OtherRebate && oItem.ItemID == -227))
// netAmmountSGS = netAmmountSGS - oItem.TotalAmount;
// if (netAmmountSGS < 0 || (netAmmountSGS > 0 && netAmmountSGS < 5000))
// {
// DataTable dtTaxRegion = null;
// dtTaxRegion = new SGSExceptionReportService().GetTaxRegionDTByEmpId(oItem.TaxParameterID, _employee.ID);
// if (dtTaxRegion.Rows.Count > 0)
// {
// foreach (DataRow row in dtTaxRegion.Rows)
// {
// short regionType = (short)row["TaxRegionType"];
// if (regionType == 2)
// {
// netAmmountSGS = 4000;
// }
// if (regionType == 3)
// {
// netAmmountSGS = 3000;
// }
// }
// }
// else
// netAmmountSGS = 5000;
// }
// }
// if (oNetTaxPayable != null)
// {
// oDRow = oDTable.NewRow();
// oDRow["DataColumn1"] = oNetTaxPayable.Description;
// oDRow["DataColumn2"] = "";
// oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(netAmmountSGS);//.ToString("#,##");
// dNetTax = netAmmountSGS;
// oDRow["EmpID"] = _employee.ID.ToString();
// oDTable.Rows.Add(oDRow);
// }
// if (_isPrvs)
// {
// if (oTaxDeducted != null)
// {
// oDRow = oDTable.NewRow();
// //oDRow["DataColumn1"] = "Tax deducted from salary";
// oDRow["DataColumn1"] = "Total Tax Paid to The Government";
// oDRow["DataColumn2"] = "";
// oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(netAmmountSGS);//.ToString("#,##");
// oDRow["EmpID"] = _employee.ID.ToString();
// oDTable.Rows.Add(oDRow);
// }
// }
// else
// {
// if (oTaxDeducted != null)
// {
// oDRow = oDTable.NewRow();
// oDRow["DataColumn1"] = "Tax paid up to previous month";
// oDRow["DataColumn2"] = "";
// oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(netAmmountSGS);
// oDRow["EmpID"] = _employee.ID.ToString();
// oDTable.Rows.Add(oDRow);
// oDRow = oDTable.NewRow();
// oDRow["DataColumn1"] = "Tax paid this month";
// oDRow["DataColumn2"] = "";
// oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(netAmmountSGS);
// oDRow["EmpID"] = _employee.ID.ToString();
// oDTable.Rows.Add(oDRow);
// oDRow = oDTable.NewRow();
// oDRow["DataColumn1"] = "Tax to be paid upto June";
// oDRow["DataColumn2"] = "";
// oDRow["EmpID"] = _employee.ID.ToString();
// if (oNetTaxPayable != null)
// {
// oDRow["DataColumn3"] = GlobalFunctions.TakaFormat(dNetTax - netAmmountSGS);
// }
// oDTable.Rows.Add(oDRow);
// }
// }
//}
//else
//{
//}
oDTable.TableName = "PayrollDataSet_IncomeTaxOther";
orootDataset.Tables.Add(oDTable);
//PayrollDataSet.PayrollDataSet.ITHeaderDataTable oMulIT = new Payroll.Report.PayrollDataSet.PayrollDataSet.ITHeaderDataTable();
//Employee oEmp = Employee.Get(nEmpID);
//oDRow = oMulIT.NewRow();
//oDRow["EmpNo"] = oEmp.EmployeeNo;
//oDRow["EmpName"] = oEmp.Name;
//oDRow["TINNo"] = oEmp.TinNo;
//oDRow["AssesmentYear"] = _taxParameter.AssessmentYear;
//oDRow["FiscalYear"] = _taxParameter.FiscalYear;
//oMulIT.Rows.Add(oDRow);
//oMulIT.TableName = "PayrollDataSet_ITHeader";
//orootDataset.Tables.Add(oMulIT);
return orootDataset;
}
private DataRow getARow(DataRow orow, IncomeTax oItem, Employee _employee)
{
double _salaryIncomeCertificateEarning = 0;
if (oItem.ItemGroup == EnumIncomeTaxItemGroup.Annual_Salary_Income)
{
DataRow dr = orow;
dr["EmpID"] = oItem.EmployeeID;
dr["Name"] = _employee.Name;
dr["TinNo"] = _employee.TinNo;
dr["ItemCode"] = oItem.ItemGroup;
dr["ItemID"] = oItem.ItemID;
dr["IncomeHead"] = oItem.Description;
dr["AmountPerAnnum"] = GlobalFunctions.TakaFormat(_AmountPerAnnum); //oDRow["AmountPerannum"];
dr["ThisMonth"] = GlobalFunctions.TakaFormat(_ThisMonthAmount);
dr["PaidTillDate"] = GlobalFunctions.TakaFormat(_PaidTillDateAmount);//oDRow["PaidTillDate"];
dr["Projected"] = GlobalFunctions.TakaFormat(_ProjectedAmount);
dr["Position"] = oItem.Position;
dr["Side"] = oItem.Side;
dr["LessExaempted"] = "0";
dr["RowSequence"] = oItem.Position;
_salaryIncomeCertificateEarning = _salaryIncomeCertificateEarning + Math.Round(_AmountPerAnnum);
return dr;
}
else if (oItem.ItemGroup == EnumIncomeTaxItemGroup.Annual_Income)
{
DataRow dr = orow;
dr["EmpID"] = oItem.EmployeeID;
dr["Name"] = _employee.Name;
dr["TinNo"] = _employee.TinNo;
dr["ItemCode"] = oItem.ItemGroup;
dr["ItemID"] = oItem.ItemID;
dr["IncomeHead"] = oItem.Description;
dr["AmountPerAnnum"] = GlobalFunctions.TakaFormat(_TAmountPerAnnum); //oDRow["AmountPerannum"];
dr["ThisMonth"] = GlobalFunctions.TakaFormat(_TThisMonthAmount);
dr["PaidTillDate"] = GlobalFunctions.TakaFormat(_TPaidTillDateAmount);//oDRow["PaidTillDate"];
dr["Projected"] = GlobalFunctions.TakaFormat(_TProjectedAmount);
dr["Position"] = oItem.Position;
dr["Side"] = oItem.Side;
dr["LessExaempted"] = "0";
dr["RowSequence"] = oItem.Position;
_salaryIncomeCertificateEarning = _salaryIncomeCertificateEarning + Math.Round(_TAmountPerAnnum);
return dr;
}
else
{
DataRow dr = orow;
dr["EmpID"] = oItem.EmployeeID;
dr["Name"] = _employee.Name;
dr["TinNo"] = _employee.TinNo;
dr["ItemCode"] = oItem.ItemGroup;
dr["ItemID"] = oItem.ItemID;
dr["IncomeHead"] = oItem.Description;
dr["AmountPerAnnum"] = GlobalFunctions.TakaFormat(oItem.TotalAmount); //oDRow["AmountPerannum"];
dr["ThisMonth"] = GlobalFunctions.TakaFormat(oItem.ThisMonthAmount);
dr["PaidTillDate"] = GlobalFunctions.TakaFormat(oItem.PreviousAmount);//oDRow["PaidTillDate"];
dr["Projected"] = GlobalFunctions.TakaFormat(oItem.ProjectedAmount);
dr["Position"] = oItem.Position;
dr["Side"] = oItem.Side;
if (!(oItem.ItemGroup == EnumIncomeTaxItemGroup.Company_Contri_PF))
{
_AmountPerAnnum += oItem.TotalAmount;
_ThisMonthAmount += oItem.ThisMonthAmount;
_PaidTillDateAmount += oItem.PreviousAmount;
_ProjectedAmount += oItem.ProjectedAmount;
}
_TAmountPerAnnum += oItem.TotalAmount;
_TThisMonthAmount += oItem.ThisMonthAmount;
_TPaidTillDateAmount += oItem.PreviousAmount;
_TProjectedAmount += oItem.ProjectedAmount;
dr["LessExaempted"] = "0";
dr["RowSequence"] = oItem.Position;
_salaryIncomeCertificateEarning = _salaryIncomeCertificateEarning + Math.Round(oItem.TotalAmount);
return dr;
}
}
public byte[] ShowITPfAndOtherDetails(string reportType,string sEmpID, int payrollTypeId, int taxParameterId)
{
List<TaxParameter> _TaxParameters = null;
_TaxParameters = new TaxParameterService().GetbyPayrolltype(payrollTypeId);
string[] sEmps = sEmpID.Split(',');
List<Employee> allEmps = new EmployeeService().Get();
List<EmployeeTaxInvestment> oEmpsITInvestment = new EmployeeTaxInvestmentService().GetAllUsersInfo(taxParameterId);
Dictionary<int, Employee> mapAllEmps = new Dictionary<int, Employee>();
Dictionary<int, EmployeeTaxInvestment> mapITInvestment = new Dictionary<int, EmployeeTaxInvestment>();
foreach (EmployeeTaxInvestment oEmpInvestment in oEmpsITInvestment)
{
mapITInvestment.Add(oEmpInvestment.EmployeeID, oEmpInvestment);
}
foreach (Employee emp in allEmps)
{
if (!mapAllEmps.ContainsKey(emp.ID))
{
mapAllEmps.Add(emp.ID, emp);
}
}
PayrollDataSet.PayrollDataSet.ITPfAndOtherDetailsDataTable dTPFAndInvestment = new PayrollDataSet.PayrollDataSet.ITPfAndOtherDetailsDataTable();
foreach (string oEmp in sEmps)
{
IncomeTaxService oIncomeTax = new IncomeTaxService();
DataRow dr = dTPFAndInvestment.NewRow();
int eid = Convert.ToInt32(oEmp);
//int eid = FromInteger(id);
List<IncomeTax> _IncomeTaxs = new IncomeTaxService().Get(oIncomeTax.GetEnumForSalaryIT(eid), eid, _TaxParameters[0].ID);
int count = 0;
dr["EmployeeNo"] = String.Empty;
dr["EmployeeName"] = String.Empty;
if (mapAllEmps.ContainsKey(Convert.ToInt32(oEmp)))
{
dr["EmployeeName"] = mapAllEmps[Convert.ToInt32(oEmp)].Name;
dr["EmployeeNo"] = mapAllEmps[Convert.ToInt32(oEmp)].EmployeeNo;
}
if (mapITInvestment.ContainsKey(Convert.ToInt32(oEmp)))
{
dr["CumulativeAmount"] = mapITInvestment[Convert.ToInt32(oEmp)].Amount;
}
else dr["CumulativeAmount"] = 0.0;
double total = 0.0, pfamount = 0.0;
foreach (IncomeTax tetax in _IncomeTaxs)
{
if (tetax.ItemID == -220)
{
total = tetax.PreviousAmount + tetax.ProjectedAmount + tetax.ThisMonthAmount;
count++;
}
if (tetax.ItemID == -207)
{
pfamount = (tetax.PreviousAmount + tetax.ProjectedAmount + tetax.ThisMonthAmount) * 2;
count++;
}
if (count == 2) break;
}
if (pfamount != 0.0)
{
dr["TotalPFAmount"] = pfamount;
}
else
{
}
if (total - pfamount != 0.0)
{
dr["InvestmentAllowed"] = total - pfamount;
}
else
{
}
if (pfamount == 0.0 && (total - pfamount) == 0.0) continue;
if (pfamount == 0.0)
{
dr["TotalPFAmount"] = 0.0;
}
if (total - pfamount == 0.0)
{
dr["InvestmentAllowed"] = 0.0;
}
dTPFAndInvestment.Rows.Add(dr);
}
DataSet ds = new DataSet();
dTPFAndInvestment.TableName = "PayrollDataSet_ITPfAndOtherDetails";
ds.Tables.Add(dTPFAndInvestment);
ReportProcessor reportProcessor = new ReportProcessor();
return reportProcessor.ShowShowAllPFandDetails(reportType,ds, payrollTypeId);
}
public byte[] ShowTaxPerquisite(DateTime fromDate, DateTime toDate, string sEmpNo, int payrollTypeId, string reportType)
{
DateTime startDate, endDate;
startDate = endDate = DateTime.Now;
int nGroupID = 1;
startDate = fromDate.FirstDateOfMonth();
endDate = toDate.LastDateOfMonth();
MiscellaneousDatasetService miscellaneousDatasetService = new MiscellaneousDatasetService();
ArrearProcessService arrearProcessService = new ArrearProcessService();
DataRow oDR = null;
DataSet oPayrollPerquisite = null;
oEmployees = new EmployeeService().GetAllEmps();
oGrades = new GradeService().Get(EnumStatus.Active);
oDepartments = new DepartmentService().GetAll();
oDesignations = new DesignationService().GetAll();
oEmployeeCostCenters = new EmployeeCostCenterService().Get();
DataSet dsPerquisite = miscellaneousDatasetService.GetPerquisiteData(startDate, endDate, sEmpNo, payrollTypeId);
oArrearProcessDetails = arrearProcessService.GetArrearProcessDetails(sEmpNo, startDate, endDate, payrollTypeId);
PayrollDataSet.dsCompany.dtPerquisiteDataTable oDatatable = new PayrollDataSet.dsCompany.dtPerquisiteDataTable();
if (dsPerquisite.Tables[0].Rows.Count > 0)
{
nIndex = 0;
foreach (DataRow oRow in dsPerquisite.Tables["EmpWiseSalary"].Rows)
{
oDR = oDatatable.NewRow();
CreateNewRow(oDR, oRow, 1);
oDatatable.Rows.Add(oDR);
foreach (DataRow orr in oDatatable.Rows)
{
if (oDR["AmountDescription"].ToString() == orr["AmountDescription"].ToString())
{
if (orr["GroupID"].ToString() == "")
{
nGroupID++;
oDR["GroupID"] = nGroupID;
}
else
{
oDR["GroupID"] = Convert.ToInt32(orr["GroupID"]);
}
break;
}
}
}
}
nIndex = 0;
foreach (DataRow oRow in dsPerquisite.Tables["EmpWiseBonus"].Rows)
{
oDR = oDatatable.NewRow();
CreateNewRow(oDR, oRow, 2);
oDatatable.Rows.Add(oDR);
foreach (DataRow orr in oDatatable.Rows)
{
if (oDR["AmountDescription"].ToString() == orr["AmountDescription"].ToString())
{
if (orr["GroupID"].ToString() == "")
{
nGroupID++;
oDR["GroupID"] = nGroupID;
}
else
{
oDR["GroupID"] = Convert.ToInt32(orr["GroupID"]);
}
break;
}
}
}
nIndex = 0;
foreach (DataRow oRow in dsPerquisite.Tables["EmpWisePF"].Rows)
{
oDR = oDatatable.NewRow();
CreateNewRow(oDR, oRow, 3);
oDatatable.Rows.Add(oDR);
foreach (DataRow orr in oDatatable.Rows)
{
if (oDR["AmountDescription"].ToString() == orr["AmountDescription"].ToString())
{
if (orr["GroupID"].ToString() == "")
{
nGroupID++;
oDR["GroupID"] = nGroupID;
}
else
{
oDR["GroupID"] = Convert.ToInt32(orr["GroupID"]);
}
break;
}
}
}
string salaryMonth = startDate.ToString("MMM yyyy");
string salaryMonth2 = endDate.ToString("MMM yyyy");
ReportProcessor reportProcessor = new ReportProcessor();
return reportProcessor.ShowPerquisiteReport(oDatatable, salaryMonth, salaryMonth2, payrollTypeId, reportType);
}
private void CreateNewRow(DataRow oDR, DataRow oRow, int nType)
{
nIndex++;
double ArrearAmount = 0.0;
int tempEmpID = Convert.ToInt32(oRow["EMPLOYEEID"].ToString());
if (empID == 0 || tempEmpID != empID)
{
oEmp = oEmployees.Where(o => o.ID == tempEmpID).Single();
}
if (nType == 1 || nType == 3)
{
ArrearAmount = GetEmployeeWiseSalaryArrearAmount(tempEmpID, oArrearProcessDetails, (EnumSalaryItemCode)Convert.ToInt32(oRow["ITEMCODE"].ToString().Trim()), Convert.ToInt32(oRow["ITEMID"].ToString().Trim()), (EnumSalaryGroup)Convert.ToInt32(oRow["ITEMGROUP"].ToString().Trim()));
}
else if (nType == 2)
{
ArrearAmount = GeEmpWiseBonusArrearAmount(oEmp, oArrearProcessDetails, Convert.ToInt32(oRow["BonusId"].ToString().Trim()));
}
oDR["EmpNo"] = oEmp.EmployeeNo;
oDR["Name"] = oEmp.Name;
if (oEmp.GradeID != null)
{
oGrade = oGrades.Where(o => o.ID == oEmp.GradeID).Single();
}
oDR["Grade"] = oGrade.Name;
if (oEmp.DepartmentID != null)
{
oDepartment = oDepartments.Where(o => o.ID == oEmp.DepartmentID).Single();
}
oDR["Department"] = oDepartment.Name;
if (oEmp.DesignationID != null)
{
oDesignation = oDesignations.Where(o => o.ID == oEmp.DesignationID).Single();
}
oDR["Designation"] = oDesignation.Name;
EmployeeCostCenter ecc = oEmployeeCostCenters.Where(x => x.EmployeeID == oEmp.ID && x.IsCurrentCC == true).FirstOrDefault();
if (ecc != null)
{
if (ecc.Costcenter != null)
{
oDR["CC"] = ecc.Costcenter.Code;
}
else
{
oDR["CC"] = "";
}
}
else
{
oDR["CC"] = "";
}
oDR["DOJ"] = oEmp.JoiningDate.ToString("dd MMM yyyy");
oDR["DOB"] = oEmp.BirthDate.ToString("dd MMM yyyy");
oDR["AmountDescription"] = oRow["Description"].ToString();
if (oDR["AmountDescription"].ToString() == "Ordinary Amount" || oDR["AmountDescription"].ToString() == "Basic")
{
oDR["AmountDescription"] = "Basic";
oDR["GroupID"] = 1;
}
if ((nType == 1 && Convert.ToInt32(oRow["ITEMGROUP"].ToString().Trim()) != 8) || nType == 2 || nType == 3)
oDR["Amount"] = Convert.ToDouble(oRow["Amount"].ToString()) + ArrearAmount;
else
oDR["Amount"] = Convert.ToDouble(oRow["Amount"].ToString());
}
private double GetEmployeeWiseSalaryArrearAmount(int employeeID, List<ArrearProcessDetail> oArrearProcessDetails, EnumSalaryItemCode salaryItemCode, int salarytItemID, EnumSalaryGroup salaryGroup)
{
double amount = 0.0;
enumPayrollComponentType enmArrPrsType;
if (salaryGroup == EnumSalaryGroup.Gross)
{
if (salaryItemCode == EnumSalaryItemCode.Basic_Salary)
{
enmArrPrsType = enumPayrollComponentType.Ordinary_Hour;
}
}
int ItemID;
GetArrearItemTypeAndItemIDForSalary(salaryItemCode, salarytItemID, salaryGroup, out enmArrPrsType, out ItemID);
if (ItemID == 0)
{
amount = oArrearProcessDetails
.Where(o => o.EmployeeID == employeeID)
.Sum(o => o.ArrearProcessDetailItems
.Where(ob => ob.ItemType == enmArrPrsType)
.Sum(obj => obj.ChangedAmount));
}
else
{
amount = oArrearProcessDetails
.Where(o => o.EmployeeID == employeeID)
.Sum(o => o.ArrearProcessDetailItems
.Where(ob => ob.ItemType == enmArrPrsType && ob.ItemID == ItemID)
.Sum(obj => obj.ChangedAmount));
}
return amount;
}
private void GetArrearItemTypeAndItemIDForSalary(EnumSalaryItemCode SalaryItemCode, int SalaryItemID, EnumSalaryGroup SalGroup, out enumPayrollComponentType enmArrPrsType, out int ItemID)
{
ItemID = 0;
switch (SalaryItemCode)
{
case EnumSalaryItemCode.Basic_Salary:
enmArrPrsType = enumPayrollComponentType.Ordinary_Hour;
break;
case EnumSalaryItemCode.Over_Time_Amount:
enmArrPrsType = enumPayrollComponentType.Over_Time;
ItemID = SalaryItemID;
break;
case EnumSalaryItemCode.Bonus:
enmArrPrsType = enumPayrollComponentType.Bonus;
break;
case EnumSalaryItemCode.PF_Contribution:
enmArrPrsType = enumPayrollComponentType.PF;
break;
case EnumSalaryItemCode.Inc_Tax_Deduction:
enmArrPrsType = enumPayrollComponentType.IncomeTax;
break;
case EnumSalaryItemCode.Allowance:
enmArrPrsType = enumPayrollComponentType.Allowance;
ItemID = SalaryItemID;
break;
case EnumSalaryItemCode.Deduction:
enmArrPrsType = enumPayrollComponentType.Deduction;
ItemID = SalaryItemID;
break;
default:
enmArrPrsType = enumPayrollComponentType.Net_pay;
break;
}
}
private double GeEmpWiseBonusArrearAmount(Employee emp, List<ArrearProcessDetail> oArrearProcessDetails, int bonusItemID)
{
double amount = 0.0;
amount = oArrearProcessDetails
.Where(o => o.EmployeeID == emp.ID)
.Sum(o => o.ArrearProcessDetailItems
.Where(ob => ob.ItemType == enumPayrollComponentType.Bonus && ob.ItemID == bonusItemID)
.Sum(obj => obj.ChangedAmount));
return amount;
}
}
}