using System; using Ease.Core.Model; using Ease.Core.DataAccess; using HRM.BO; using Ease.Core.Utility; using System.Collections.Generic; using System.Data; using Ease.Core; using Payroll.Service; using Microsoft.Data.SqlClient; namespace HRM.DA { public class IncomeTaxService : ServiceTemplate, IIncomeTaxService { private EnumIncomeTaxDataFrom _dataFrom; private int _sequentialId; public IncomeTaxService() { _sequentialId = 0; } private void MapObject(IncomeTax oIncomeTax, DataReader oReader) { _sequentialId = _sequentialId + 1; base.SetObjectID(oIncomeTax, _sequentialId); oIncomeTax.EmployeeID = oReader.GetInt32("EmployeeID", 0); oIncomeTax.ItemID = oReader.GetInt32("Itemid").Value; //Itemid oIncomeTax.ItemGroup = (EnumIncomeTaxItemGroup)oReader.GetInt32("itemCode").Value; oIncomeTax.DataTo = _dataFrom; if (_dataFrom != EnumIncomeTaxDataFrom.ProcessedData) { oIncomeTax.PreviousAmount = oReader.GetDouble("previousAmount").Value; oIncomeTax.ThisMonthAmount = oReader.GetDouble("thisMonthAmount").Value; oIncomeTax.ProjectedAmount = oReader.GetDouble("projectedAmount").Value; oIncomeTax.ModifiedBy = oReader.GetInt32("ModifiedBy"); oIncomeTax.ModifiedDate = oReader.GetDateTime("ModifiedDate"); } else { oIncomeTax.TotalAmount = oReader.GetDouble("totalAmount").Value; oIncomeTax.TaxParameterID = oReader.GetInt32("taxParamID", 0); } oIncomeTax.Position = oReader.GetInt32("position").Value; oIncomeTax.Description = oReader.GetString("description"); oIncomeTax.Side = (EnumIncomeTaxSide)oReader.GetInt32("side").Value; this.SetObjectState(oIncomeTax, Ease.Core.ObjectState.Saved); } protected override T CreateObject(DataReader oReader) { IncomeTax oIncomeTax = new IncomeTax(); MapObject(oIncomeTax, oReader); return oIncomeTax as T; } #region Service implementation public IncomeTax Get(List Incometaxs, int employeeId, EnumIncomeTaxItemGroup groupCode, int itemId) { IncomeTax ReturnItem = new IncomeTax(); ReturnItem = Incometaxs.Find(delegate (IncomeTax taxItem) { return taxItem.EmployeeID == employeeId && taxItem.ItemGroup == groupCode && taxItem.ItemID == itemId; }); return ReturnItem; } public double GetAmount(List Incometaxs, int employeeId, EnumIncomeTaxItemGroup groupCode) { double amount = 0; foreach (IncomeTax item in Incometaxs) { if (item.ItemGroup == groupCode && item.EmployeeID == employeeId) amount = amount + item.TotalAmount; } return amount; } public List Get(int employeeid, EnumIncomeTaxDataFrom dataFrom) { List incomeTaxs = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); _dataFrom = dataFrom; DataReader dr = new DataReader(IncomeTaxDA.GetFromRunningYear(tc, employeeid, dataFrom)); incomeTaxs = this.CreateObjects(dr); dr.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return incomeTaxs; } public List GetByEmployeeIds(string sEmployeeId, EnumIncomeTaxDataFrom dataFrom) { List incomeTaxs = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); _dataFrom = dataFrom; DataReader dr = new DataReader(IncomeTaxDA.GetFromRunningYearByEmployeeIds(tc, sEmployeeId, dataFrom)); incomeTaxs = this.CreateObjects(dr); dr.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return incomeTaxs; } public List Get(EnumIncomeTaxDataFrom dataFrom, string sEmpIDs, int nTaxParamID) { List incomeTaxs = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); _dataFrom = dataFrom; DataReader dr = new DataReader(IncomeTaxDA.Get(tc, dataFrom, sEmpIDs, nTaxParamID)); incomeTaxs = this.CreateObjects(dr); dr.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return incomeTaxs; } public List Get(EnumIncomeTaxDataFrom dataFrom, string sEmpIds, EnumIncomeTaxItemGroup groupCode, int itemID) { List incomeTaxs = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); _dataFrom = dataFrom; DataReader dr = new DataReader(IncomeTaxDA.Get(tc, dataFrom, sEmpIds, groupCode, itemID)); incomeTaxs = this.CreateObjects(dr); dr.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return incomeTaxs; } public IncomeTax Get(EnumIncomeTaxDataFrom dataFrom, int nEmpID, EnumIncomeTaxItemGroup groupCode, int itemID) { IncomeTax oIncomeTax = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader oreader = new DataReader(IncomeTaxDA.Get(tc, dataFrom, nEmpID, groupCode, itemID)); if (oreader.Read()) { oIncomeTax = this.CreateObject(oreader); } oreader.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return oIncomeTax; } public bool hasTaxDataInSalaryTemp(int employeeID) { bool DataExist = false; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataExist = IncomeTaxDA.hasTaxDataInSalaryTemp(tc, employeeID); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return DataExist; } public EnumIncomeTaxDataFrom currentYeardataSource(int employeeID) { EnumIncomeTaxDataFrom DataExist = EnumIncomeTaxDataFrom.ProcessTempData; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataExist = IncomeTaxDA.TaxDataFrom(tc, employeeID); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return DataExist; } public bool hasTaxDataInSalaryTemp(string empids) { bool DataExist = false; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataExist = IncomeTaxDA.hasTaxDataInSalaryTemp(tc, empids); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return DataExist; } public DataSet GetByEmpID(EnumIncomeTaxDataFrom dataFrom, int employeeid) { DataSet incomeTaxs = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); incomeTaxs = IncomeTaxDA.GetByEmpID(tc, dataFrom, employeeid); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return incomeTaxs; } public DataSet GetEmpIDforOthTax(EnumIncomeTaxDataFrom dataFrom, int employeeid) { DataSet incomeTaxs = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); incomeTaxs = IncomeTaxDA.GetEmpIDforOthTax(tc, dataFrom, employeeid); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return incomeTaxs; } public List Get(EnumIncomeTaxDataFrom dataFrom, int payrollTypeID) { List incomeTaxs = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); _dataFrom = dataFrom; DataReader dr = new DataReader(IncomeTaxDA.Get(tc, dataFrom, payrollTypeID)); incomeTaxs = this.CreateObjects(dr); dr.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return incomeTaxs; } public List Get(EnumIncomeTaxDataFrom dataFrom, string empids, int payrollTypeID, int? taxparamID) { List incomeTaxs = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); _dataFrom = dataFrom; DataReader dr = new DataReader(IncomeTaxDA.Get(tc, dataFrom, empids, payrollTypeID, taxparamID)); incomeTaxs = this.CreateObjects(dr); dr.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return incomeTaxs; } internal void DeleteEncashTax(TransactionContext tc, List objectsTemplate, EnumIncomeTaxDataFrom enumIncomeTaxDataFrom) { IncomeTaxDA.DeleteTempData(tc, enumIncomeTaxDataFrom, objectsTemplate[0].EmployeeID, EnumIncomeTaxItemGroup.Earned_Leave, 100); } public List Get(EnumIncomeTaxDataFrom dataFrom, int nEmpID, int nTaxParamID) { List incomeTaxs = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); _dataFrom = dataFrom; DataReader dr = new DataReader(IncomeTaxDA.Get(tc, dataFrom, nEmpID, nTaxParamID)); incomeTaxs = this.CreateObjects(dr); dr.Close(); tc.End(); if (incomeTaxs != null) { incomeTaxs.ForEach(x => { x.DataTo = dataFrom; }); } } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return incomeTaxs; } public List GetPrvYear(int Taxparameterid, int payrollTypeID) { List incomeTaxs = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); _dataFrom = EnumIncomeTaxDataFrom.ProcessedData; DataReader dr = new DataReader(IncomeTaxDA.GetPrvYear(tc, Taxparameterid, payrollTypeID)); incomeTaxs = this.CreateObjects(dr); dr.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return incomeTaxs; } public List GetPrvYear(int Taxparameterid, EnumIncomeTaxItemGroup groupCode, int ItemId) { List incomeTaxs = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); _dataFrom = EnumIncomeTaxDataFrom.ProcessedData; DataReader dr = new DataReader(IncomeTaxDA.GetPrvYear(tc, _dataFrom, Taxparameterid, groupCode, ItemId)); incomeTaxs = this.CreateObjects(dr); dr.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return incomeTaxs; } public void DoYearEndReProcess(int taxParameterID, int payrollTypeID) { TransactionContext tc = null; try { TaxCalculator cal = new TaxCalculator(); cal.TaxParameter = new TaxParameterService().Get(taxParameterID); cal.payrolltype = new PayrollTypeService().Get(payrollTypeID); var oIncometaxes = cal.RecalculateTax(taxParameterID); tc = TransactionContext.Begin(true); IncomeTaxDA.DeleteYearlyData(tc, taxParameterID, payrollTypeID); //foreach (IncomeTax oItem in oIncometaxes) //{ // this.SetObjectState(oItem, ObjectState.New); // oItem.CreatedBy = oItem.CreatedBy; // this.Insert(tc, oItem, EnumIncomeTaxDataFrom.ProcessedData); //} // this.Delete(tc, new IncomeTax().getEmpID(oIncometaxes), EnumIncomeTaxDataFrom.ProcessTempData); this.SaveBulk(tc, oIncometaxes, EnumIncomeTaxDataFrom.ProcessedData); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } public void DoTaxYearEnd(int payrollTypeID) { TransactionContext tc = null; try { PayrollType ptyp = new PayrollTypeService().Get(payrollTypeID); TaxParameter param = new TaxParameterService().Get((int)ptyp.TaxParamID); TaxCalculator ocal = new TaxCalculator((int)ptyp.TaxParamID, payrollTypeID); List oIncometaxes = ocal.DoTaxYearEnd(payrollTypeID); tc = TransactionContext.Begin(true); this.Delete(tc, new IncomeTax().getEmpID(oIncometaxes), EnumIncomeTaxDataFrom.ProcessTempData); this.SaveBulk(tc, oIncometaxes, EnumIncomeTaxDataFrom.ProcessedData); SystemInformationDA.DoTaxYearEnd(tc, param.FiscalyearDateTo, payrollTypeID); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } public int Save(IncomeTax oIncomeTax, EnumIncomeTaxDataFrom saveto) { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); if (oIncomeTax.IsNew) { // int id = tc.GenerateID(IncomeTaxDA.GetTableName(saveto), "IncomeTaxID"); // base.SetObjectID(oIncomeTax, (id)); IncomeTaxDA.Insert(tc, oIncomeTax, saveto); } else { IncomeTaxDA.Update(tc, oIncomeTax, saveto); } tc.End(); return oIncomeTax.ID; } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } public void SaveBulk(TransactionContext tc, List oIncomeTaxs, EnumIncomeTaxDataFrom saveto) { try { DataTable tax = new DataTable(IncomeTaxDA.GetTableName(saveto)); //tax.Columns.Add(new DataColumn("ITEMID", typeof(int))); //tax.Columns.Add(new DataColumn("PREVIOUSAMOUNT", typeof(double))); //tax.Columns.Add(new DataColumn("THISMONTHAMOUNT", typeof(double))); //tax.Columns.Add(new DataColumn("PROJECTEDAMOUNT", typeof(double))); // NULL //tax.Columns.Add(new DataColumn("SIDE", typeof(int))); // NULL //tax.Columns.Add(new DataColumn("POSITION", typeof(int))); // NULL //tax.Columns.Add(new DataColumn("ISCHANGED", typeof(bool))); //tax.Columns.Add(new DataColumn("EMPLOYEEID", typeof(int))); //tax.Columns.Add(new DataColumn("ITEMCODE", typeof(int))); //tax.Columns.Add(new DataColumn("HEADID", typeof(int))); //tax.Columns.Add(new DataColumn("DESCRIPTION", typeof(string))); // NULL //tax.Columns.Add(new DataColumn("THISYEARTOTAL", typeof(double))); //tax.Columns.Add(new DataColumn("MODIFIEDBY", typeof(int))); //tax.Columns.Add(new DataColumn("MODIFIEDDATE", typeof(DateTime))); if (saveto == EnumIncomeTaxDataFrom.ProcessTempData || saveto == EnumIncomeTaxDataFrom.BonusITTempData || saveto == EnumIncomeTaxDataFrom.SalaryITTempData) { tax.Columns.Add(new DataColumn("EMPLOYEEID", typeof(int))); tax.Columns.Add(new DataColumn("ITEMCODE", typeof(int))); tax.Columns.Add(new DataColumn("ITEMID", typeof(int))); tax.Columns.Add(new DataColumn("DESCRIPTION", typeof(string))); // NULL tax.Columns.Add(new DataColumn("THISYEARTOTAL", typeof(double))); tax.Columns.Add(new DataColumn("PREVIOUSAMOUNT", typeof(double))); tax.Columns.Add(new DataColumn("THISMONTHAMOUNT", typeof(double))); tax.Columns.Add(new DataColumn("PROJECTEDAMOUNT", typeof(double))); // NULL tax.Columns.Add(new DataColumn("SIDE", typeof(int))); // NULL tax.Columns.Add(new DataColumn("POSITION", typeof(int))); // NULL tax.Columns.Add(new DataColumn("MODIFIEDBY", typeof(int))); tax.Columns.Add(new DataColumn("MODIFIEDDATE", typeof(DateTime))); tax.Columns.Add(new DataColumn("HEADID", typeof(int))); tax.Columns.Add(new DataColumn("ISCHANGED", typeof(int))); foreach (IncomeTax tx in oIncomeTaxs) { tax.Rows.Add(tx.EmployeeID, tx.ItemGroup, tx.ItemID, tx.Description, tx.TotalAmount, tx.PreviousAmount, tx.ThisMonthAmount, tx.ProjectedAmount, tx.Side, tx.Position, tx.ModifiedBy, tx.ModifiedDate, null, tx.IsChanged); } } else { tax.Columns.Add(new DataColumn("ITEMCODE", typeof(int))); tax.Columns.Add(new DataColumn("DESCRIPTION", typeof(string))); // NULL tax.Columns.Add(new DataColumn("TOTALAMOUNT", typeof(double))); tax.Columns.Add(new DataColumn("SIDE", typeof(int))); // NULL tax.Columns.Add(new DataColumn("POSITION", typeof(int))); // NULL tax.Columns.Add(new DataColumn("USERID", typeof(int))); // NULL tax.Columns.Add(new DataColumn("ISCHANGED", typeof(int))); tax.Columns.Add(new DataColumn("ITEMID", typeof(int))); tax.Columns.Add(new DataColumn("EMPLOYEEID", typeof(int))); tax.Columns.Add(new DataColumn("TAXPARAMID", typeof(int))); tax.Columns.Add(new DataColumn("HEADID", typeof(int))); foreach (IncomeTax tx in oIncomeTaxs) { tax.Rows.Add(tx.ItemGroup, tx.Description, tx.TotalAmount, tx.Side, tx.Position, 1, tx.IsChanged, tx.ItemID, tx.EmployeeID, tx.TaxParameterID, null); } } using (SqlBulkCopy bulkCopy = new SqlBulkCopy((SqlConnection)tc.Connection, SqlBulkCopyOptions.Default, (SqlTransaction)tc.Transaction)) { bulkCopy.BulkCopyTimeout = 6000; // in seconds if (saveto == EnumIncomeTaxDataFrom.ProcessTempData || saveto == EnumIncomeTaxDataFrom.BonusITTempData || saveto == EnumIncomeTaxDataFrom.SalaryITTempData) { bulkCopy.ColumnMappings.Add("EMPLOYEEID", "EMPLOYEEID"); bulkCopy.ColumnMappings.Add("ITEMCODE", "ITEMCODE"); bulkCopy.ColumnMappings.Add("ITEMID", "ITEMID"); bulkCopy.ColumnMappings.Add("DESCRIPTION", "DESCRIPTION"); bulkCopy.ColumnMappings.Add("THISYEARTOTAL", "THISYEARTOTAL"); bulkCopy.ColumnMappings.Add("PREVIOUSAMOUNT", "PREVIOUSAMOUNT"); bulkCopy.ColumnMappings.Add("THISMONTHAMOUNT", "THISMONTHAMOUNT"); bulkCopy.ColumnMappings.Add("PROJECTEDAMOUNT", "PROJECTEDAMOUNT"); bulkCopy.ColumnMappings.Add("SIDE", "SIDE"); bulkCopy.ColumnMappings.Add("POSITION", "POSITION"); bulkCopy.ColumnMappings.Add("MODIFIEDBY", "MODIFIEDBY"); bulkCopy.ColumnMappings.Add("MODIFIEDDATE", "MODIFIEDDATE"); bulkCopy.ColumnMappings.Add("HEADID", "HEADID"); bulkCopy.ColumnMappings.Add("ISCHANGED", "ISCHANGED"); } else { bulkCopy.ColumnMappings.Add("ITEMCODE", "ITEMCODE"); bulkCopy.ColumnMappings.Add("DESCRIPTION", "DESCRIPTION"); // NULL bulkCopy.ColumnMappings.Add("TOTALAMOUNT", "TOTALAMOUNT"); bulkCopy.ColumnMappings.Add("SIDE", "SIDE"); // NULL bulkCopy.ColumnMappings.Add("POSITION", "POSITION"); // NULL bulkCopy.ColumnMappings.Add("USERID", "USERID"); // NULL bulkCopy.ColumnMappings.Add("ISCHANGED", "ISCHANGED"); bulkCopy.ColumnMappings.Add("ITEMID", "ITEMID"); bulkCopy.ColumnMappings.Add("EMPLOYEEID", "EMPLOYEEID"); bulkCopy.ColumnMappings.Add("TAXPARAMID", "TAXPARAMID"); bulkCopy.ColumnMappings.Add("HEADID", "HEADID"); } bulkCopy.DestinationTableName = IncomeTaxDA.GetTableName(saveto); bulkCopy.WriteToServer(tax); } } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } public int Save(TransactionContext tc, IncomeTax oIncomeTax, EnumIncomeTaxDataFrom saveto) { try { if (oIncomeTax.IsNew) { // int id = tc.GenerateID(IncomeTaxDA.GetTableName(saveto), "IncomeTaxID"); // base.SetObjectID(oIncomeTax, ID.FromInteger(id)); IncomeTaxDA.Insert(tc, oIncomeTax, saveto); } else { IncomeTaxDA.Update(tc, oIncomeTax, saveto); } return oIncomeTax.ID; } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } public void UpdateOT(List otProcess) { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); foreach (var process in otProcess) { IncomeTaxDA.UpdateOT(tc, process); } } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } public int SaveForEdit(TransactionContext tc, IncomeTax oIncomeTax, EnumIncomeTaxDataFrom saveto) { try { if (oIncomeTax.IsNew) { // int id = tc.GenerateID(IncomeTaxDA.GetTableName(saveto), "IncomeTaxID"); // base.SetObjectID(oIncomeTax, ID.FromInteger(id)); IncomeTaxDA.InsertforEdit(tc, oIncomeTax, saveto); } else { IncomeTaxDA.Update(tc, oIncomeTax, saveto); } return oIncomeTax.ID; } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } public void Save(List _IncomeTaxs, EnumIncomeTaxDataFrom saveto) { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); if (saveto == EnumIncomeTaxDataFrom.ProcessTempData) { foreach (IncomeTax oIncomeTax in _IncomeTaxs) { if (oIncomeTax.IsNew) { IncomeTaxDA.Insert(tc, oIncomeTax, saveto); } else { IncomeTaxDA.Update(tc, oIncomeTax, saveto); } } } else { int nTaxParamid = _IncomeTaxs[0].TaxParameterID; if (nTaxParamid == 0) throw new ServiceException("Tax-Parameter int is not found"); IncomeTaxDA.DeleteYearlyData(tc, _IncomeTaxs[0].TaxParameterID, EnumIncomeTaxDataFrom.ProcessedData, _IncomeTaxs[0].EmployeeID); foreach (IncomeTax oIncomeTax in _IncomeTaxs) { oIncomeTax.TaxParameterID = nTaxParamid; oIncomeTax.CreatedBy = oIncomeTax.CreatedBy; IncomeTaxDA.Insert(tc, oIncomeTax, EnumIncomeTaxDataFrom.ProcessedData); } } tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } public void Save(TransactionContext tc, List _IncomeTaxs, EnumIncomeTaxDataFrom saveto) { try { if (saveto == EnumIncomeTaxDataFrom.ProcessTempData) { foreach (IncomeTax oIncomeTax in _IncomeTaxs) { if (oIncomeTax.IsNew) { IncomeTaxDA.Insert(tc, oIncomeTax, saveto); } else { IncomeTaxDA.Update(tc, oIncomeTax, saveto); } } } else { IncomeTaxDA.DeleteYearlyData(tc, _IncomeTaxs[0].TaxParameterID, EnumIncomeTaxDataFrom.ProcessedData, _IncomeTaxs[0].EmployeeID); foreach (IncomeTax oIncomeTax in _IncomeTaxs) { IncomeTaxDA.Insert(tc, oIncomeTax, EnumIncomeTaxDataFrom.ProcessedData); } } } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } public void Delete(int nEmpId, EnumIncomeTaxDataFrom deletefrom, EnumIncomeTaxItemGroup ItemGroup, int ItemID) { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); IncomeTaxDA.Delete(tc, nEmpId, deletefrom, ItemGroup, ItemID); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } public void Delete(TransactionContext tc, string EmpIds, EnumIncomeTaxDataFrom deletefrom) { try { IncomeTaxDA.Delete(tc, EmpIds, deletefrom); } catch (Exception e) { #region Handle Exception ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } public void DeleteYearlyData(int TaxParamID, EnumIncomeTaxDataFrom deletefrom, int nEmpID, EnumIncomeTaxItemGroup ItemGroup, int ItemID) { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); IncomeTaxDA.DeleteYearlyData(tc, TaxParamID, deletefrom, nEmpID, ItemGroup, ItemID); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } public void DoTaxTempReProcess(List oIncometaxes, int taxParameterID, EnumIncomeTaxDataFrom saveTo, int payrollTypeID) { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); IncomeTaxDA.DeleteTaxTempData(tc, saveTo, payrollTypeID); foreach (IncomeTax oItem in oIncometaxes) { this.SetObjectState(oItem, ObjectState.New); oItem.CreatedBy = oItem.CreatedBy; this.Save(tc, oItem, saveTo); } tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } public List GetByYear(int Taxparameterid, EnumIncomeTaxDataFrom dataFrom, int payrollTypeID) { List incomeTaxs = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); _dataFrom = dataFrom; DataReader dr = new DataReader(IncomeTaxDA.GetByYear(tc, Taxparameterid, dataFrom, payrollTypeID)); incomeTaxs = this.CreateObjects(dr); dr.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return incomeTaxs; } public DataSet GetTaxRefreshedData(DateTime fromDate, DateTime toDate) { DataSet oSalaryMonthlys = new DataSet(); TransactionContext tc = null; try { tc = TransactionContext.Begin(); oSalaryMonthlys = IncomeTaxDA.GetTaxRefreshedData(tc, fromDate, toDate); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return oSalaryMonthlys; } public EnumIncomeTaxDataFrom GetEnumForSalaryIT(int nEmpID) { EnumIncomeTaxDataFrom nType; bool isprocessed = false; isprocessed = this.hasTaxDataInSalaryTemp(nEmpID); if (isprocessed == true) { nType = EnumIncomeTaxDataFrom.SalaryITTempData; } else { nType = EnumIncomeTaxDataFrom.ProcessTempData; } return nType; } /// /// following function is used for salary edit tax calculation, so tax thismonth amount cleared to zero /// /// /// public List calculateTaxFromSalary(SalaryMonthly salaries) { PayrollType payrollType = new PayrollTypeService().Get(salaries.PayrollTypeID); TaxCalculator taxCalculator = new TaxCalculator((int)payrollType.TaxParamID, salaries.PayrollTypeID); taxCalculator.TaxParameter = new TaxParameterService().Get((int)payrollType.TaxParamID); taxCalculator.payrolltype = payrollType; taxCalculator.AdParameters = new ADParameterService().GetWithDetail(EnumStatus.Regardless, salaries.PayrollTypeID); bool bfixedAmount = false; //ConfigurationManager.GetBoolValue("incometax", "fixedamount", EnumConfigurationType.Logic); bool isOtherItem = false;// ConfigurationManager.GetBoolValue("incometax", "taxissalaryotheritem", EnumConfigurationType.Logic); salaries.Incometaxes = new List(); if (salaries.IsNew == false) // salary is processed, so data should be taken form Salary Temp { taxCalculator.CurrentYearTax = new IncomeTaxService().Get(salaries.EmployeeID, EnumIncomeTaxDataFrom.SalaryITTempData); } if (bfixedAmount == false) { taxCalculator.Salary = salaries; taxCalculator.Employee = new EmployeeService().Get(salaries.EmployeeID); taxCalculator.AllowanceDeductions = new AllowanceDeductionService().Get(EnumStatus.Regardless); try { foreach (IncomeTax item in taxCalculator.CurrentYearTax) { item.ThisMonthAmount = 0; item.ProjectedAmount = 0; } salaries.Incometaxes = taxCalculator.SalaryTax(); } catch (ServiceException sx) { throw new Exception(sx.Message); } catch (Exception ex) { throw new Exception(ex.Message); } } return salaries.Incometaxes; } #endregion } }