CEL_Payroll/Payroll.BO/Common/BasicDataUploadProcess.cs

1042 lines
54 KiB
C#
Raw Permalink Normal View History

2024-09-17 14:30:13 +06:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Ease.CoreV35.Model;
using SpreadsheetGear;
using Ease.CoreV35.Utility;
using System.Windows.Forms;
namespace Payroll.BO
{
[Serializable]
public class BasicDataUploadProcess : BasicBaseObject
{
#region Class variable
private ObjectsTemplate<Category> _categorys = new ObjectsTemplate<Category>();
private ObjectsTemplate<Grade> _grades = new ObjectsTemplate<Grade>();
private ObjectsTemplate<Department> _departments = new ObjectsTemplate<Department>();
private ObjectsTemplate<Location> _locations = new ObjectsTemplate<Location>();
private ObjectsTemplate<Religion> _religions = new ObjectsTemplate<Religion>();
private ObjectsTemplate<Designation> _designations = new ObjectsTemplate<Designation>();
private ObjectsTemplate<Bank> _banks = new ObjectsTemplate<Bank>();
private ObjectsTemplate<Branch> _branches = new ObjectsTemplate<Branch>();
private List<UploadErrorOrSuccess> _errorOrSuccessList;
private ObjectsTemplate<Employee> _employees = new ObjectsTemplate<Employee>();
private ObjectsTemplate<IncomeTax> _incomeTaxs = new ObjectsTemplate<IncomeTax>();
private ObjectsTemplate<AccessCard> _accessCards = new ObjectsTemplate<AccessCard>();
#endregion Class variable
private int _departmentid = 0;
private int _locationid = 0;
private int _categoryID = 0;
private int _religionID = 0;
private int _designationid = 0;
private int _gradeid = 0;
private int _branchid = 0;
private int _bankid = 0;
private int _emloyeeId = 0;
private int _accessCardID = 0;
public BasicDataUploadProcess()
{
_errorOrSuccessList = new List<UploadErrorOrSuccess>();
}
public event ProgressStatus ProgressStatus;
public event ProcessStatus ProcessStatus;
private void UpdateProgressStatus(EnumProcessStatus status)
{
if (ProgressStatus != null) ProgressStatus(status);
}
private void UpdateprocessStatus(string statusString)
{
if (ProcessStatus != null) ProcessStatus(statusString);
}
public void RefreshObject()
{
_departments = Department.Get();
int maxID = 0;
if (_departments.Count > 0)
{
maxID = (from detail in _departments
select detail.ID.Integer).Max();
_departmentid = maxID;
}
_categorys = Category.Get(EnumStatus.Regardless);
if (_categorys.Count > 0)
{
maxID = (from detail in _categorys
select detail.ID.Integer).Max();
_categoryID = maxID;
}
_grades = Grade.Get(EnumStatus.Regardless);
if (_grades.Count > 0)
{
maxID = (from detail in _grades
select detail.ID.Integer).Max();
_gradeid = maxID;
}
// _grades = new ObjectsTemplate<Grade>();
_locations = Location.Get();
if (_locations.Count > 0)
{
maxID = (from detail in _locations
select detail.ID.Integer).Max();
_locationid = maxID;
}
_religions = Religion.Get(EnumStatus.Regardless);
if (_religions.Count > 0)
{
maxID = (from detail in _religions
select detail.ID.Integer).Max();
_religionID = maxID;
}
_designations = Designation.Get(EnumStatus.Regardless);
if (_designations.Count > 0)
{
maxID = (from detail in _designations
select detail.ID.Integer).Max();
_designationid = maxID;
}
_banks = Bank.Get(EnumStatus.Regardless);
if (_banks.Count > 0)
{
maxID = (from detail in _banks
select detail.ID.Integer).Max();
_bankid = maxID;
}
_branches = Branch.Get(EnumStatus.Regardless);
if (_branches.Count > 0)
{
maxID = (from detail in _branches
select detail.ID.Integer).Max();
_branchid = maxID;
}
SearchManager omanager = new SearchManager(EnumSearchFrom.Employee);
omanager.Parameter.Remove(EnumSearchParameter.PayrollTypeID);
ObjectsTemplate<SearchEmployee> oemployees = omanager.Find();
if (oemployees.Count > 0)
{
maxID = (from detail in oemployees
select detail.EmployeeID.Integer).Max();
_emloyeeId = maxID;
}
_accessCards = AccessCard.Get();
if (_accessCards.Count > 0)
{
maxID = (from detail in _accessCards
select detail.ID.Integer).Max();
_accessCardID = maxID;
}
_accessCards = new ObjectsTemplate<AccessCard>();
}
public List<UploadErrorOrSuccess> ErrorOrSuccessList
{
get
{
return _errorOrSuccessList;
}
}
public bool ProcessBasicData(DataTable uploadTable)
{
bool CodeautoGenerate = false;
RefreshObject();
ConfigurationManager ocManager = new ConfigurationManager();
ObjectsTemplate<Configaration> deptConfig = ocManager.GetChilds("department", EnumConfigurationType.Logic);
ObjectsTemplate<Configaration> deptTiers = ocManager.GetChilds(deptConfig, "tiernames");
ObjectsTemplate<Configaration> locConfig = ocManager.GetChilds("location", EnumConfigurationType.Logic);
ObjectsTemplate<Configaration> locTiers = ocManager.GetChilds(locConfig, "tiernames");
Employee oemployee = new Employee();
int nRow = 0;
int nIndex = 0;
int count = 0;
foreach (DataRow row in uploadTable.Rows)
{
Application.DoEvents();
_emloyeeId = _emloyeeId + 1;
count++;
oemployee = new Employee();
oemployee.EmployeeNo = row["Employee Code"].ToString();
oemployee.SetObjectID(_emloyeeId + 1);
object[] obj = row.ItemArray;
nRow = nRow + 1;
//uploadStatus.Text = string.Format("Processing Basic Data... {0}/{1}", index, uploadTable.Rows.Count);
//uploadStatus.Refresh();
/// <summary>
/// Process category whether it is already in the system or new category
/// </summary>
#region Category upload
//Category oCategory = null;
//CodeautoGenerate = ConfigurationManager.GetBoolValue("category", "codeautogenerate", EnumConfigurationType.Logic);
//if (CodeautoGenerate == false)
// oCategory = _categorys.Find(delegate(Category item) { return item.Code == row["Category Code"].ToString(); });
//else
// oCategory = _categorys.Find(delegate(Category item) { return item.Name == row["Category Name"].ToString(); });
//if (oCategory == null)
//{
// oCategory = new Category();
// oCategory.Name = row["Category Name"].ToString();
// oCategory.Status = EnumStatus.Active;
// if (CodeautoGenerate == false)
// oCategory.Code = row["Category Code"].ToString();
// _categoryID = _categoryID + 1;
// oemployee.CategoryID = ID.FromInteger(_categoryID);
// oCategory.SetObjectID(_categoryID);
// _categorys.Add(oCategory);
//}
//else
//{
// oemployee.CategoryID = oCategory.ID;
//}
#endregion Category upload
/// <summary>
/// Process grade whether it is already in the system or new grade
/// </summary>
///
#region Grade upload
Grade ograde = null;
CodeautoGenerate = ConfigurationManager.GetBoolValue("grade", "codeautogenerate", EnumConfigurationType.Logic);
if (CodeautoGenerate == false)
ograde = _grades.Find(delegate(Grade item) { return item.Code == row["Grade Code"].ToString(); });
else
ograde = _grades.Find(delegate(Grade item) { return item.Name == row["Grade Name"].ToString(); });
if (ograde == null)
{
ograde = new Grade();
ograde.Status = EnumStatus.Active;
ograde.GradeSegmentID = ID.FromInteger(1);
ograde.HasPayscale = ConfigurationManager.GetBoolValue("grade", "payscaleapplicable ", EnumConfigurationType.Logic);
ograde.HasGrossConcept = ConfigurationManager.GetBoolValue("grade", "grossapplicable", EnumConfigurationType.Logic);
ograde.Name = row["Grade Name"].ToString().Trim();
ograde.PayrollTypeID = SystemInformation.CurrentSysInfo.PayrollTypeID;
if (CodeautoGenerate == false)
ograde.Code = row["Grade Code"].ToString().Trim();
_gradeid = _gradeid + 1;
oemployee.GradeID = ID.FromInteger(_gradeid);
ograde.SetObjectID(_gradeid);
_grades.Add(ograde);
if (Grade.Get(ograde.Code) != null)
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Grade", nRow, "Grade already exist in other payroll type."));
}
else
{
oemployee.GradeID = ograde.ID;
}
#endregion Grade upload
/// <summary>
/// Process Department whether it is already in the system or new location
/// </summary>
#region Department
int nparentid = 0;
ID tempid = ID.FromInteger(0);
nIndex = 0;
foreach (Configaration oconfig in deptTiers)
{
string sValue = oconfig.ConAttributes.GetAttributeValue("tier");
if (sValue == "") continue;
nIndex = nIndex + 1;
if (row[oconfig.Value + " Name"].ToString() == "") continue;
Department odepartment = null;
CodeautoGenerate = ConfigurationManager.GetBoolValue("department", "codeautogenerate", EnumConfigurationType.Logic);
if (CodeautoGenerate == false)
{
if (nIndex > 1)
odepartment = _departments.Find(delegate(Department item) { return item.Code == row[oconfig.Value + " Code"].ToString().Trim() && item.Tier == nIndex && item.ParentID.Integer == nparentid; });
else
odepartment = _departments.Find(delegate(Department item) { return item.Code == row[oconfig.Value + " Code"].ToString().Trim() && item.Tier == nIndex; });
}
else
{
if (nIndex > 1)
odepartment = _departments.Find(delegate(Department item) { return item.Name == row[oconfig.Value + " Name"].ToString().Trim() && item.Tier == nIndex && item.ParentID.Integer == nparentid; });
else
odepartment = _departments.Find(delegate(Department item) { return item.Name == row[oconfig.Value + " Name"].ToString().Trim() && item.Tier == nIndex; });
}
if (odepartment == null)
{
odepartment = new Department();
odepartment.Name = row[oconfig.Value + " Name"].ToString().Trim();
odepartment.Tier = nIndex;
odepartment.Status = EnumStatus.Active;
if (CodeautoGenerate == false)
{
odepartment.Code = row[oconfig.Value + " Code"].ToString().Trim();
if (odepartment.Code == "")
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create(oconfig.Value + " Code", nRow, oconfig.Value + " Code can't be empty"));
}
if (nIndex > 1) odepartment.ParentID = ID.FromInteger(nparentid);
_departmentid = _departmentid + 1;
nparentid = _departmentid;
oemployee.DepartmentID = ID.FromInteger(_departmentid);
odepartment.SetObjectID(_departmentid);
_departments.Add(odepartment);
}
else
{
nparentid = odepartment.ID.Integer;
oemployee.DepartmentID = odepartment.ID;
}
//if (nIndex > 1) odepartment.ParentID = ID.FromInteger(nparentid);
//nparentid = odepartment.ID.Integer;
}
#endregion
/// <summary>
/// Process location whether it is already in the system or new location
/// </summary>
#region Location
//nparentid = 0;
//nIndex = 0;
//foreach (Configaration oconfig in locConfig)
//{
// string sValue = oconfig.ConAttributes.GetAttributeValue("tier");
// if (sValue == "") continue;
// nIndex = nIndex + 1;
// if (row[oconfig.Value + " Name"].ToString() == "") continue;
// Location olocation = null;
// CodeautoGenerate = ConfigurationManager.GetBoolValue("location", "codeautogenerate", EnumConfigurationType.Logic);
// //if (CodeautoGenerate == false)
// //{
// // if (nIndex > 1)
// // {
// // olocation = _locations.Find(delegate(Location item) { return item.Code == row[oconfig.Value + " Code"].ToString().Trim() && item.Tier == nIndex && item.ParentID.Integer == nparentid; });
// // }
// // else
// // {
// // olocation = _locations.Find(delegate(Location item) { return item.Code == row[oconfig.Value + " Code"].ToString().Trim() && item.Tier == nIndex; });
// // }
// //}
// //else
// //{
// // if (nIndex > 1)
// // {
// // olocation = _locations.Find(delegate(Location item) { return item.Name == row[oconfig.Value + " Name"].ToString().Trim() && item.Tier == nIndex && item.ParentID.Integer == nparentid; });
// // }
// // else
// // {
// // olocation = _locations.Find(delegate(Location item) { return item.Name == row[oconfig.Value + " Name"].ToString().Trim() && item.Tier == nIndex; });
// // }
// //}
// //if (olocation == null)
// //{
// // olocation = new Location();
// // olocation.Name = row[oconfig.Value + " Name"].ToString().Trim();
// // olocation.Tier = nIndex;
// // olocation.Status = EnumStatus.Active;
// // if (olocation.Name == "")
// // _errorOrSuccessList.Add(UploadErrorOrSuccess.Create(oconfig.Value + " Name", nRow, oconfig.Value + " Name can't be empty"));
// // if (CodeautoGenerate == false)
// // {
// // olocation.Code = row[oconfig.Value + " Code"].ToString().Trim();
// // if (olocation.Code == "")
// // _errorOrSuccessList.Add(UploadErrorOrSuccess.Create(oconfig.Value + " Code", nRow, oconfig.Value + " Code can't be empty"));
// // }
// // if (nIndex > 1) olocation.ParentID = ID.FromInteger(nparentid);
// // _locationid = _locationid + 1;
// // nparentid = _locationid;
// // oemployee.LocationID = ID.FromInteger(_locationid);
// // olocation.SetObjectID(_locationid);
// // _locations.Add(olocation);
// //}
// //else
// //{
// // nparentid = olocation.ID.Integer;
// // oemployee.LocationID = olocation.ID;
// //}
//}
#endregion
/// <summary>
/// Process religion whether it is already in the system or new religion
/// </summary>
#region Religion upload
Religion oreligion = null;
CodeautoGenerate = ConfigurationManager.GetBoolValue("religion", "codeautogenerate", EnumConfigurationType.Logic);
if (CodeautoGenerate == false)
oreligion = _religions.Find(delegate(Religion item) { return item.Code == row["Religion Code"].ToString().Trim(); });
else
oreligion = _religions.Find(delegate(Religion item) { return item.Name == row["Religion Name"].ToString().Trim(); });
if (oreligion == null)
{
oreligion = new Religion();
oreligion.Name = row["Religion Name"].ToString().Trim();
if (CodeautoGenerate == false)
{
oreligion.Code = row["Religion Name"].ToString().Trim();
}
_religionID = _religionID + 1;
oemployee.ReligionID = ID.FromInteger(_religionID);
oreligion.SetObjectID(_religionID);
_religions.Add(oreligion);
}
else
{
oemployee.ReligionID = oreligion.ID;
}
#endregion Religion upload
/// <summary>
/// Process designation whether it is already in the system or new designation
/// </summary>
#region Designation upload
Designation odesignation = null;
CodeautoGenerate = ConfigurationManager.GetBoolValue("designation", "codeautogenerate", EnumConfigurationType.Logic);
if (CodeautoGenerate == false)
odesignation = _designations.Find(delegate(Designation item) { return item.Code == row["Designation Code"].ToString().Trim(); });
else
odesignation = _designations.Find(delegate(Designation item) { return item.Name == row["Designation Name"].ToString().Trim(); });
if (odesignation == null)
{
odesignation = new Designation();
odesignation.Name = row["Designation Name"].ToString().Trim();
if (CodeautoGenerate == false)
odesignation.Code = row["Designation Code"].ToString().Trim();
_designationid = _designationid + 1;
oemployee.DesignationID = ID.FromInteger(_designationid);
odesignation.SetObjectID(_designationid);
odesignation.Status = EnumStatus.Active;
_designations.Add(odesignation);
}
else
{
oemployee.DesignationID = odesignation.ID;
}
#endregion Designation upload
#region Bank & Branch upload
if (row["Salary Bank Name"].ToString().Trim() != "")
{
Bank obank = null;
CodeautoGenerate = ConfigurationManager.GetBoolValue("bank", "codeautogenerate", EnumConfigurationType.Logic);
if (CodeautoGenerate == false)
{
obank = _banks.Where(x =>
x.Code.ToUpper().Trim() == row["Salary Bank Code"].ToString().ToUpper().Trim())
.FirstOrDefault();
}
else
{
obank = _banks.Where(x =>
x.Name.ToUpper().Trim() == row["Salary Bank Name"].ToString().ToUpper().Trim())
.FirstOrDefault();
}
if (obank == null)
{
obank = new Bank();
obank.Name = row["Salary Bank Name"].ToString().Trim();
if (CodeautoGenerate == false)
obank.Code = row["Salary Bank Code"].ToString().Trim();
_bankid = _bankid + 1;
obank.SetObjectID(_bankid);
_banks.Add(obank);
}
if (row["Salary Branch Name"].ToString() != "")
{
Branch oBranch = null;
CodeautoGenerate = ConfigurationManager.GetBoolValue("branch", "codeautogenerate", EnumConfigurationType.Logic);
if (CodeautoGenerate == false)
{
oBranch = _branches.Where(item=>
item.Code.ToUpper().Trim() == row["Salary Branch Code"].ToString().ToUpper().Trim()
&& item.BankID.Integer == obank.ID.Integer)
.FirstOrDefault();
}
else
{
oBranch = _branches.Where(item =>
item.Name.ToUpper().Trim() == row["Salary Branch Name"].ToString().ToUpper().Trim()
&& item.BankID.Integer == obank.ID.Integer)
.FirstOrDefault();
}
if (oBranch == null)
{
oBranch = new Branch();
oBranch.Name = row["Salary Branch Name"].ToString().Trim();
if (CodeautoGenerate == false)
oBranch.Code = row["Salary Branch Code"].ToString().Trim();
_branchid = _branchid + 1;
oBranch.BankID = obank.ID;
oBranch.SetObjectID(_branchid);
oemployee.BranchID = ID.FromInteger(_branchid);
_branches.Add(oBranch);
}
else
{
oemployee.BranchID = oBranch.ID;
}
}
}
//bool isOPISeparateAcountApplicable = ConfigurationManager.GetBoolValue("opi", "separateaccount", EnumConfigurationType.Logic);
//if (isOPISeparateAcountApplicable)
//{
// if (row["OPI Bank Name"].ToString() != "")
// {
// Bank obank = null;
// CodeautoGenerate = ConfigurationManager.GetBoolValue("bank", "codeautogenerate", EnumConfigurationType.Logic);
// if (CodeautoGenerate == false)
// {
// obank = _banks.Where(x =>
// x.Code.ToUpper().Trim() == row["OPI Bank Code"].ToString().ToUpper().Trim())
// .FirstOrDefault();
// }
// else
// {
// obank = _banks.Where(x =>
// x.Name.ToUpper().Trim() == row["OPI Bank Name"].ToString().ToUpper().Trim())
// .FirstOrDefault();
// }
// if (obank == null)
// {
// obank = new Bank();
// obank.Name = row["OPI Bank Name"].ToString().Trim();
// if (CodeautoGenerate == false)
// obank.Code = row["OPI Bank Code"].ToString().Trim();
// _bankid = _bankid + 1;
// obank.SetObjectID(_bankid);
// _banks.Add(obank);
// }
// if (row["OPI Branch Name"].ToString() != "")
// {
// Branch oBranch = null;
// CodeautoGenerate = ConfigurationManager.GetBoolValue("branch", "codeautogenerate", EnumConfigurationType.Logic);
// if (CodeautoGenerate == false)
// {
// oBranch = _branches.Where(item =>
// item.Code.ToUpper().Trim() == row["OPI Branch Code"].ToString().ToUpper().Trim()
// && item.BankID.Integer == obank.ID.Integer)
// .FirstOrDefault();
// }
// else
// {
// oBranch = _branches.Where(item =>
// item.Name.ToUpper().Trim() == row["OPI Branch Name"].ToString().ToUpper().Trim()
// && item.BankID.Integer == obank.ID.Integer)
// .FirstOrDefault();
// }
// if (oBranch == null)
// {
// oBranch = new Branch();
// oBranch.Name = row["OPI Branch Name"].ToString().Trim();
// if (CodeautoGenerate == false)
// oBranch.Code = row["OPI Branch Code"].ToString().Trim();
// _branchid = _branchid + 1;
// oBranch.BankID = obank.ID;
// oBranch.SetObjectID(_branchid);
// oemployee.OutPayBranchID = ID.FromInteger(_branchid);
// _branches.Add(oBranch);
// }
// else
// {
// oemployee.OutPayBranchID = oBranch.ID;
// }
// }
//}
//}
#endregion Bank & Branch upload
_employees.Add(oemployee);
}
return true;
}
private BasicCodeItem ExistingItem(object ItemByCode, object ItemByName)
{
if (ItemByCode != null) return BasicCodeItem.Code;
else return BasicCodeItem.Name;
}
public void Save()
{
try
{
foreach (Employee item in _employees)
{
item.PayrollTypeID = SystemInformation.CurrentSysInfo.PayrollTypeID;
}
RegularDataUpload.Save(_categorys, _grades, _departments, _locations, _religions,
_designations, _banks, _branches, _employees, _accessCards);
}
catch (Exception ex)
{
throw new ServiceException(ex.Message);
}
}
#region Save Tax Data
public void SaveTaxData()
{
try
{
IncomeTax.Save(_incomeTaxs, EnumIncomeTaxDataFrom.ProcessTempData);
}
catch (Exception ex)
{
throw new ServiceException(ex.Message);
}
}
#endregion
public void ImportEmpBasicInfoRegularly (DataTable odataTable)
{
Employee oemployee = null;
#region Refresh Objects
if (ProcessBasicData(odataTable) == false) return;
int nRow = 0;
try
{
foreach (DataRow dr in odataTable.Rows)
{
Application.DoEvents();
nRow = nRow + 1;
oemployee = _employees.Find(delegate(Employee emp) { return emp.EmployeeNo == dr["Employee Code"].ToString(); });
if (oemployee == null) throw new ServiceException("Employee not found in the collection; employeeNo:" + dr["Employee Code"].ToString());
oemployee.Name = dr["Employee Name"].ToString().Trim();
oemployee.FatherName = dr["Father's Name"].ToString().Trim();
oemployee.BirthDate = Convert.ToDateTime(dr["Date of Birth"]);
oemployee.JoiningDate = Convert.ToDateTime(dr["Date of Joining"]);
//For Novartis Discontinue Employee Upload and Fund Management Data Issue
//oemployee.Status = EnumEmployeeStatus.Discontinued;
oemployee.Gender = (dr["Gender"].ToString().Trim().ToUpper() == "M") ? EnumGender.Male : EnumGender.Female;
oemployee.MaritalStatus = (dr["Marital Status"].ToString().Trim().ToUpper() == "MARRIED") ? EnumMaritalStatus.Married : EnumMaritalStatus.UnMarried;
//oemployee.TaxCircle = dr["Tax Circle"].ToString() != string.Empty ? (EnumTaxCircle)Enum.Parse(typeof(EnumTaxCircle), dr["Tax Circle"].ToString(), true) : EnumTaxCircle.Employee;
oemployee.TaxCircle = dr["Tax Circle"].ToString().Trim();
oemployee.TinNo = dr["TIN"].ToString().Trim();
if (dr["Confirmation Date"].ToString() != "") oemployee.ConfirDate = Convert.ToDateTime(dr["Confirmation Date"]);
if (oemployee.ConfirDate != DateTime.MinValue)
oemployee.IsConfirmed = true;
if (dr["PF Membership"].ToString().ToUpper().Trim() == "Y")
oemployee.PFMemberType = EnumPFMembershipType.Live;
oemployee.ForeignExPat = dr["Is Foreign Expatriate"].ToString() != string.Empty ? (dr["Is Foreign Expatriate"].ToString() == "YES" ? true : false) : false;
//Refresh Employee Grade Salary
if (oemployee.GradeID != null)
{
Grade ograde = _grades.GetItem(oemployee.GradeID);
oemployee.EmployeeGradeSalary.SetObjectID(oemployee.ID.Integer);
oemployee.EmployeeGradeSalary.GradeID = oemployee.GradeID;
oemployee.EmployeeGradeSalary.GradeSalaryTypeID = ID.FromInteger(1);
if (ograde.HasGrossConcept == true) oemployee.EmployeeGradeSalary.GrossSalary = dr["Gross Salary"].ToString() != string.Empty ? Convert.ToDouble(dr["Gross Salary"]) : 0.0;
oemployee.EmployeeGradeSalary.BasicSalary = dr["Basic Salary"].ToString() != string.Empty ? Convert.ToDouble(dr["Basic Salary"]) : 0.0;
oemployee.BasicSalary = oemployee.EmployeeGradeSalary.BasicSalary;
oemployee.GrossSalary = oemployee.EmployeeGradeSalary.GrossSalary;
oemployee.EmployeeGradeSalary.EffectDate = oemployee.JoiningDate;
oemployee.EmployeeGradeSalary.EmployeeID = oemployee.ID;
ObjectsTemplate<EmployeeGradeSalary> itemsToSave = oemployee.EmployeeGradeSalary.process();
oemployee.EmployeeGradeSalarys = new ObjectsTemplate<EmployeeGradeSalary>();
foreach (EmployeeGradeSalary item in itemsToSave)
{
oemployee.EmployeeGradeSalarys.Add(item);
}
}
//Refresh Employee Posting
oemployee.EmployeePosting.EffectDate = oemployee.JoiningDate;
oemployee.EmployeePosting.SetObjectID(oemployee.ID.Integer);
oemployee.EmployeePosting.DepartmentID = oemployee.DepartmentID;
oemployee.EmployeePosting.LocationID = oemployee.LocationID;
oemployee.EmployeePosting.DesignationID = oemployee.DesignationID;
//Refresh Emloyee Bank Account
if (oemployee.BranchID != null)
{
if (dr["Salary Account Number"].ToString() != "")
{
oemployee.AccountNo = dr["Salary Account Number"].ToString();
// oemployee.EmployeeBankAccount.SetObjectID(oemployee.ID.Integer);
oemployee.PaymentMode = EnumPaymentMode.BankTransfer;
oemployee.EmployeeBankAccount.EffectDate = oemployee.JoiningDate;
oemployee.EmployeeBankAccount.BranchID = oemployee.BranchID;
oemployee.EmployeeBankAccount.AccountType = EnumBankAccountType.SalaryAccount;
oemployee.EmployeeBankAccount.AccountNo = dr["Salary Account Number"].ToString();
}
else
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Salary Account Number", nRow, "'Salary Account Number' Column not found for the employee No:" + oemployee.EmployeeNo, oemployee.EmployeeNo, oemployee.Name));
}
if(oemployee.OutPayBranchID!=null)
{
if (dr["OPI Account Number"].ToString() != "")
{
oemployee.OutPayAccountNo = dr["OPI Account Number"].ToString();
// oemployee.EmployeeOPIBankAccount.SetObjectID(oemployee.ID.Integer);
oemployee.OutPayPaymentMode = EnumPaymentMode.BankTransfer;
oemployee.EmployeeOPIBankAccount.EffectDate = oemployee.JoiningDate;
oemployee.EmployeeOPIBankAccount.BranchID = oemployee.OutPayBranchID;
oemployee.EmployeeOPIBankAccount.AccountType = EnumBankAccountType.OutPayAccount;
oemployee.EmployeeOPIBankAccount.AccountNo = dr["OPI Account Number"].ToString();
}
else
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("OPI Account Number", nRow, "'OPI Account Number' Column not found for the employee No:" + oemployee.EmployeeNo, oemployee.EmployeeNo, oemployee.Name));
}
if (dr["PROXID"].ToString() != "")
{
_accessCardID = _accessCardID + 1;
oemployee.CardID = ID.FromInteger(_accessCardID);
AccessCard ocard = new AccessCard();
ocard.SetObjectID(_accessCardID);
ocard.CardNumber = dr["PROXID"].ToString();
ocard.TypeID = ID.FromInteger(1);
ocard.Status = EnumCardStatus.Attached;
ocard.CardOperation.EmployeeID = oemployee.ID;
ocard.CardOperation.CardID = ocard.ID;
ocard.CardOperation.AssignDate = oemployee.JoiningDate;
_accessCards.Add(ocard);
}
}
}
catch (Exception ex)
{
throw new ServiceException("Error occered on row:" + nRow + " Reason:" + ex.Message);
}
#endregion
}
public void ImportEmpBasicInfo(DataTable odataTable)
{
Employee oemployee = null;
#region Refresh Objects
if (ProcessBasicData(odataTable) == false) return;
int nRow = 0;
try
{
foreach (DataRow dr in odataTable.Rows)
{
Application.DoEvents();
nRow = nRow + 1;
oemployee = _employees.Find(delegate(Employee emp) { return emp.EmployeeNo == dr["Employee Code"].ToString(); });
if (oemployee == null) throw new ServiceException("Employee not found in the collection; employeeNo:" + dr["Employee Code"].ToString());
oemployee.Name = dr["Employee Name"].ToString().Trim();
oemployee.FatherName = dr["Father's Name"].ToString().Trim();
oemployee.BirthDate = Convert.ToDateTime(dr["Date of Birth"]);
oemployee.JoiningDate = Convert.ToDateTime(dr["Date of Joining"]);
//For Novartis Discontinue Employee Upload and Fund Management Data Issue
//oemployee.Status = EnumEmployeeStatus.Discontinued;
if ((dr["Gender"].ToString().Trim().ToUpper() == "MALE") || (dr["Gender"].ToString().Trim().ToUpper() == "M"))
{
oemployee.Gender = EnumGender.Male;
}
else
{
oemployee.Gender = EnumGender.Female;
}
//oemployee.Gender = ((dr["Gender"].ToString().Trim().ToUpper() == "M") || (dr["Gender"].ToString().Trim().ToUpper() == "Male")) ? EnumGender.Male : EnumGender.Female;
oemployee.MaritalStatus = (dr["Marital Status"].ToString().Trim().ToUpper() == "MARRIED") ? EnumMaritalStatus.Married : EnumMaritalStatus.UnMarried;
//oemployee.TaxCircle = dr["Tax Circle"].ToString() != string.Empty ? (EnumTaxCircle)Enum.Parse(typeof(EnumTaxCircle), dr["Tax Circle"].ToString(), true) : EnumTaxCircle.Employee;
oemployee.TaxCircle = dr["Tax Circle"].ToString().Trim();
oemployee.TinNo = dr["TIN"].ToString().Trim();
if (dr["Confirmation Date"].ToString() != "") oemployee.ConfirDate = Convert.ToDateTime(dr["Confirmation Date"]);
if (oemployee.ConfirDate != DateTime.MinValue)
oemployee.IsConfirmed = true;
//if (dr["PF Membership"].ToString().ToUpper().Trim() == "Y")
// oemployee.PFMemberType = EnumPFMembershipType.Live;
//oemployee.ForeignExPat = dr["Is Foreign Expatriate"].ToString() != string.Empty ? (dr["Is Foreign Expatriate"].ToString() == "YES" ? true : false) : false;
oemployee.MobileNo = dr["Mobile No"].ToString().Trim();
oemployee.EmailAddress = dr["Email Address"].ToString().Trim();
//Refresh Employee Grade Salary
if (oemployee.GradeID != null)
{
Grade ograde = _grades.GetItem(oemployee.GradeID);
oemployee.EmployeeGradeSalary.SetObjectID(oemployee.ID.Integer);
oemployee.EmployeeGradeSalary.GradeID = oemployee.GradeID;
oemployee.EmployeeGradeSalary.GradeSalaryTypeID = ID.FromInteger(1);
if (ograde.HasGrossConcept == true) oemployee.EmployeeGradeSalary.GrossSalary = dr["Gross Salary"].ToString() != string.Empty ? Convert.ToDouble(dr["Gross Salary"]) : 0.0;
oemployee.EmployeeGradeSalary.BasicSalary = dr["Basic Salary"].ToString() != string.Empty ? Convert.ToDouble(dr["Basic Salary"]) : 0.0;
oemployee.BasicSalary = oemployee.EmployeeGradeSalary.BasicSalary;
oemployee.GrossSalary = oemployee.EmployeeGradeSalary.GrossSalary;
oemployee.EmployeeGradeSalary.EffectDate = oemployee.JoiningDate;
oemployee.EmployeeGradeSalarys = new ObjectsTemplate<EmployeeGradeSalary>();
oemployee.EmployeeGradeSalarys.Add(oemployee.EmployeeGradeSalary);
}
//Refresh Employee Posting
oemployee.EmployeePosting.EffectDate = oemployee.JoiningDate;
oemployee.EmployeePosting.SetObjectID(oemployee.ID.Integer);
oemployee.EmployeePosting.DepartmentID = oemployee.DepartmentID;
oemployee.EmployeePosting.LocationID =ID.FromInteger(1);
oemployee.EmployeePosting.DesignationID = oemployee.DesignationID;
//Refresh Emloyee Bank Account
if (oemployee.BranchID != null)
{
if (dr["Salary Account Number"].ToString() != "")
{
oemployee.AccountNo = dr["Salary Account Number"].ToString();
// oemployee.EmployeeBankAccount.SetObjectID(oemployee.ID.Integer);
oemployee.PaymentMode = EnumPaymentMode.BankTransfer;
oemployee.EmployeeBankAccount.EffectDate = oemployee.JoiningDate;
oemployee.EmployeeBankAccount.BranchID = oemployee.BranchID;
oemployee.EmployeeBankAccount.AccountType = EnumBankAccountType.SalaryAccount;
oemployee.EmployeeBankAccount.AccountNo = dr["Salary Account Number"].ToString();
}
else
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Salary Account Number", nRow, "'Salary Account Number' Column not found for the employee No:" + oemployee.EmployeeNo, oemployee.EmployeeNo, oemployee.Name));
}
//if(oemployee.OutPayBranchID!=null)
//{
// if (dr["OPI Account Number"].ToString() != "")
// {
// oemployee.OutPayAccountNo = dr["OPI Account Number"].ToString();
// // oemployee.EmployeeOPIBankAccount.SetObjectID(oemployee.ID.Integer);
// oemployee.OutPayPaymentMode = EnumPaymentMode.BankTransfer;
// oemployee.EmployeeOPIBankAccount.EffectDate = oemployee.JoiningDate;
// oemployee.EmployeeOPIBankAccount.BranchID = oemployee.OutPayBranchID;
// oemployee.EmployeeOPIBankAccount.AccountType = EnumBankAccountType.OutPayAccount;
// oemployee.EmployeeOPIBankAccount.AccountNo = dr["OPI Account Number"].ToString();
// }
// else
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("OPI Account Number", nRow, "'OPI Account Number' Column not found for the employee No:" + oemployee.EmployeeNo, oemployee.EmployeeNo, oemployee.Name));
//}
//if (dr["PROXID"].ToString() != "")
//{
// _accessCardID = _accessCardID + 1;
// oemployee.CardID = ID.FromInteger(_accessCardID);
// AccessCard ocard = new AccessCard();
// ocard.SetObjectID(_accessCardID);
// ocard.CardNumber = dr["PROXID"].ToString();
// ocard.TypeID = ID.FromInteger(1);
// ocard.Status = EnumCardStatus.Attached;
// ocard.CardOperation.EmployeeID = oemployee.ID;
// ocard.CardOperation.CardID = ocard.ID;
// ocard.CardOperation.AssignDate = oemployee.JoiningDate;
// _accessCards.Add(ocard);
//}
}
}
catch (Exception ex)
{
throw new ServiceException("Error occered on row:" + nRow + " Reason:" + ex.Message);
}
#endregion
}
public void ImportTaxAdjustmentData(DataTable odataTable, DataUploadColumnDefinition columnDefinition)
{
ObjectsTemplate<TaxMergeMaster> oTaxMergeMasters = new ObjectsTemplate<TaxMergeMaster>();
oTaxMergeMasters = TaxMergeMaster.GetbyTaxParameter(SystemInformation.CurrentSysInfo.TaxParamID);
Employee oemployee = null;
IncomeTax oIncomeTax = null;
TaxMergeMaster oTaxMergeMaster = null;
_employees = Employee.Get();
ObjectsTemplate<ProcessItem> processItems = ProcessItem.Get();
#region Refresh Objects
int nRow = 0;
ObjectsTemplate<IncomeTax> savedData = IncomeTax.Get(EnumIncomeTaxDataFrom.ProcessTempData);
try
{
foreach (DataRow dr in odataTable.Rows)
{
nRow = nRow + 1;
oemployee = _employees.Find(delegate(Employee emp) { return emp.EmployeeNo == dr["Employee No"].ToString(); });//Employee.Get(dr["Employee Code"].ToString());
if (oemployee == null)
{
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee Code", nRow, "Employee Code not found: " + dr["Employee No"].ToString()));
continue;
}
for (int i = 1; i < odataTable.Columns.Count; i++)
{
oIncomeTax = TaxMergeMaster.Extract(oTaxMergeMasters, EnumTaxMergeType.TaxAdjustItem, columnDefinition.SelectedItemOneID.Integer);
if (oIncomeTax == null)
{
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create(odataTable.Columns[i].ColumnName, nRow, "Tax head grouping net yet created for the selected item", oemployee.EmployeeNo, oemployee.Name));
continue;
}
ProcessItem pitem = processItems.Find(delegate(ProcessItem item)
{ return item.ItemCode == (int)oIncomeTax.ItemGroup; });
if (pitem == null)
{
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create(odataTable.Columns[i].ColumnName, nRow, " Tax process item code not found in the process collection; Item Code:" + oTaxMergeMaster.ItemGroup.ToString(), oemployee.EmployeeNo, oemployee.Name));
continue;
}
oIncomeTax.EmployeeID = oemployee.ID;
double nAmount = 0;
if (double.TryParse(dr[odataTable.Columns[i].ColumnName].ToString(), out nAmount) == false)
{
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create(odataTable.Columns[i].ColumnName, nRow, odataTable.Columns[i].ColumnName + " contains Invalid value:" + dr[odataTable.Columns[i].ColumnName].ToString(), oemployee.EmployeeNo, oemployee.Name));
continue;
}
IncomeTax oNewItem = IncomeTax.Get(savedData, oemployee.ID, oIncomeTax.ItemGroup, oIncomeTax.ItemID); //.Get(savedData, oemployee.ID, oTaxMergeMaster.ItemGroup, oTaxMergeMaster.ItemID);
if (oNewItem != null)
oIncomeTax = oNewItem;
else
{
oIncomeTax.Side = (EnumIncomeTaxSide)pitem.ItemGroup;
oIncomeTax.Position = pitem.Position;
}
// if (oIncomeTax == null) oIncomeTax = new IncomeTax();
oIncomeTax.EmployeeID = oemployee.ID;
oIncomeTax.PreviousAmount = oIncomeTax.PreviousAmount + nAmount;
if (oIncomeTax.PreviousAmount != 0)
_incomeTaxs.Add(oIncomeTax);
}
}
}
catch (Exception ex)
{
throw new ServiceException("Error occered on row:" + nRow + " Reason:" + ex.Message);
}
#endregion
}
public void ImportTaxDataInfo(DataTable odataTable)
{
ObjectsTemplate<TaxMergeMaster> oTaxMergeMasters = new ObjectsTemplate<TaxMergeMaster>();
oTaxMergeMasters = TaxMergeMaster.GetbyTaxParameter(SystemInformation.CurrentSysInfo.TaxParamID);
Employee oemployee = null;
IncomeTax oIncomeTax = null;
TaxMergeMaster oTaxMergeMaster = null;
_employees = Employee.Get();
ObjectsTemplate<ProcessItem> processItems = ProcessItem.Get();
#region Refresh Objects
int nRow = 0;
ObjectsTemplate<IncomeTax> savedData = IncomeTax.Get(EnumIncomeTaxDataFrom.ProcessTempData);
try
{
foreach (DataRow dr in odataTable.Rows)
{
nRow = nRow + 1;
oemployee = _employees.Find(delegate(Employee emp) { return emp.EmployeeNo == dr["Employee Code"].ToString(); });//Employee.Get(dr["Employee Code"].ToString());
if (oemployee == null)
{
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee Code", nRow, "Employee Code not found: " + dr["Employee Code"].ToString()));
continue;
}
for (int i = 1; i < odataTable.Columns.Count; i++)
{
oIncomeTax = new IncomeTax();
oTaxMergeMaster = oTaxMergeMasters.Find(delegate(TaxMergeMaster taxMerge)
{ return taxMerge.Description == odataTable.Columns[i].ColumnName; });
if (oTaxMergeMaster == null)
{
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create(odataTable.Columns[i].ColumnName, nRow, odataTable.Columns[i].ColumnName + " not found in the tax head groping", oemployee.EmployeeNo, oemployee.Name));
continue;
}
ProcessItem pitem = processItems.Find(delegate(ProcessItem item)
{ return item.ItemCode == (int)oTaxMergeMaster.ItemGroup; });
if (pitem == null)
{
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create(odataTable.Columns[i].ColumnName, nRow, " Tax process item code not found in the process collection; Item Code:" + oTaxMergeMaster.ItemGroup.ToString(), oemployee.EmployeeNo, oemployee.Name));
continue;
}
if (oTaxMergeMaster != null)
{
oIncomeTax.EmployeeID = oemployee.ID;
double nAmount = 0;
if (double.TryParse(dr[odataTable.Columns[i].ColumnName].ToString(), out nAmount) == false)
{
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create(odataTable.Columns[i].ColumnName, nRow, odataTable.Columns[i].ColumnName + " contains Invalid value:" + dr[odataTable.Columns[i].ColumnName].ToString(), oemployee.EmployeeNo, oemployee.Name));
continue;
}
oIncomeTax = IncomeTax.Get(savedData, oemployee.ID, oTaxMergeMaster.ItemGroup, oTaxMergeMaster.ItemID);
if (oIncomeTax == null) oIncomeTax = new IncomeTax();
oIncomeTax.EmployeeID = oemployee.ID;
oIncomeTax.ItemGroup = oTaxMergeMaster.ItemGroup;
oIncomeTax.ItemID = oTaxMergeMaster.ItemID;
oIncomeTax.PreviousAmount = oIncomeTax.PreviousAmount + nAmount;
oIncomeTax.Description = oTaxMergeMaster.Description;
oIncomeTax.Side = (EnumIncomeTaxSide)pitem.ItemGroup;
oIncomeTax.Position = pitem.Position;
if (oIncomeTax.PreviousAmount != 0)
_incomeTaxs.Add(oIncomeTax);
}
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create(odataTable.Columns[i].ColumnName, nRow, "Column not found in tax setup", oemployee.EmployeeNo, oemployee.Name));
}
}
}
catch (Exception ex)
{
throw new ServiceException("Error occered on row:" + nRow + " Reason:" + ex.Message);
}
#endregion
}
}
}