4122 lines
220 KiB
C#
4122 lines
220 KiB
C#
|
using System;
|
|||
|
using Ease.Core.Model;
|
|||
|
using Ease.Core.DataAccess;
|
|||
|
using Ease.Core.Utility;
|
|||
|
using System.Collections.Generic;
|
|||
|
using HRM.BO;
|
|||
|
using System.Data;
|
|||
|
using System.Linq;
|
|||
|
using System.IO;
|
|||
|
using HRM.DA.Service.Tax;
|
|||
|
using System.Globalization;
|
|||
|
using static iTextSharp.text.pdf.AcroFields;
|
|||
|
using Microsoft.AspNetCore.Http;
|
|||
|
using System.Xml;
|
|||
|
using Org.BouncyCastle.Asn1.Pkcs;
|
|||
|
using static System.Runtime.InteropServices.JavaScript.JSType;
|
|||
|
|
|||
|
namespace HRM.DA
|
|||
|
{
|
|||
|
public class RegularDataUploadService : ServiceTemplate //, IRegularDataUploadService
|
|||
|
{
|
|||
|
private DataUploadColumnDefinationService _columndefinfationService;
|
|||
|
private List<UploadErrorOrSuccess> _errorOrSuccessList;
|
|||
|
private DataTable _uplodedData;
|
|||
|
private DataSet _uploadHRData;
|
|||
|
private DataSet _upLoadCVData;
|
|||
|
private BonusProcess _BonusProcess = null;
|
|||
|
private HREmployee _HREmployee = new HREmployee();
|
|||
|
private CV _CV = new CV();
|
|||
|
private List<HREmployee> _HREmployees = null;
|
|||
|
private List<Occupation> _Occupations = null;
|
|||
|
private List<Nationality> _Nationalites = null;
|
|||
|
private List<District> _Districts = null;
|
|||
|
private List<Thana> _Thanas = null;
|
|||
|
private List<Relation> _Relations = null;
|
|||
|
private List<EducationLevel> _EducationLevels = null;
|
|||
|
private List<NatureOfTraining> _NatureOfTrainings = null;
|
|||
|
private List<Institution> _Institutions = null;
|
|||
|
private List<Country> _Contries = null;
|
|||
|
private List<EducationType> _EducationTypes = null;
|
|||
|
private List<Discipline> _Disciplines = null;
|
|||
|
private List<ResultType> _ResultTypes = null;
|
|||
|
private List<NominationPurpose> _NominationPurposes = null;
|
|||
|
private List<GuarantorDocumentType> _GuarantorDocumentTypes = null;
|
|||
|
private List<TrainingType> _TrainingTypes = null;
|
|||
|
private List<HRJoiningQuestionary> _HRJoiningQuestionaries = null;
|
|||
|
private List<EmployeeTaxInvestment> _EmployeeTaxInvestments = null;
|
|||
|
private List<EmpTaxAit> _EmpTaxAitList = null;
|
|||
|
private List<TaxChallan> _TaxChallans = null;
|
|||
|
private List<DailyAttnProcess> _DailyAttnProcess = null;
|
|||
|
List<HREmployee> _CheckHREmployees = null;
|
|||
|
private List<PFTransaction> _PFTransactions = null;
|
|||
|
private List<ArrearProcessDetailItem> aProcessDetailItems = null;
|
|||
|
private List<EmpLifeCycle> _empLifeCycles = null;
|
|||
|
private List<IncomeTax> _incomeTaxes = new List<IncomeTax>();
|
|||
|
int nMasterCount = 0;
|
|||
|
int _payrollTypeID = 0;
|
|||
|
int _userID = 0;
|
|||
|
int nOrgRowCount;
|
|||
|
List<OrganogramBasic> oParentOrganogramNodes = null;
|
|||
|
List<OrganogramBasic> _oOrganogramNodes = new List<OrganogramBasic>();
|
|||
|
private List<Employee> _employeesForSave = null;
|
|||
|
private List<Employee> _employeesForUpdate = null;
|
|||
|
private DataUploadException _uploadException;
|
|||
|
public RegularDataUploadService()
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
#region Service Implementation
|
|||
|
|
|||
|
//public DataTable LoadData(string fileName)
|
|||
|
//{
|
|||
|
// return this.LoadExcelData(fileName);
|
|||
|
// #region Old Code
|
|||
|
// //DataTable dt = new DataTable("ImportedData");
|
|||
|
// //try
|
|||
|
// //{
|
|||
|
// // using (FileStream fs = new FileStream(fileName, FileMode.Open))
|
|||
|
// // {
|
|||
|
// // XlsReader reader = new XlsReader(fs, true);
|
|||
|
// // dt = reader.Data.Tables[0].Copy();
|
|||
|
// // fs.Close();
|
|||
|
// // fs.Dispose();
|
|||
|
|
|||
|
// // reader = null;
|
|||
|
// // }
|
|||
|
// //}
|
|||
|
// //catch (Exception e)
|
|||
|
// //{
|
|||
|
// // throw new ServiceException(e.Message, e);
|
|||
|
// //}
|
|||
|
// //return dt;
|
|||
|
// #endregion
|
|||
|
//}
|
|||
|
|
|||
|
//public DataTable LoadData(string fileName, string sheetName)
|
|||
|
//{
|
|||
|
// return this.LoadExcelData(fileName, sheetName);
|
|||
|
|
|||
|
// #region Old Code
|
|||
|
// //DataTable dt = new DataTable(sheetName);
|
|||
|
// //try
|
|||
|
// //{
|
|||
|
// // using (FileStream fs = new FileStream(fileName, FileMode.Open))
|
|||
|
// // {
|
|||
|
// // XlsReader reader = new XlsReader(fs, true);
|
|||
|
|
|||
|
|
|||
|
// // dt = reader.Data.Tables[0].Copy();
|
|||
|
// // fs.Close();
|
|||
|
// // fs.Dispose();
|
|||
|
|
|||
|
// // reader = null;
|
|||
|
// // }
|
|||
|
// //}
|
|||
|
// //catch (Exception e)
|
|||
|
// //{
|
|||
|
// // throw new ServiceException(e.Message, e);
|
|||
|
// //}
|
|||
|
// //return dt;
|
|||
|
// #endregion
|
|||
|
//}
|
|||
|
|
|||
|
//public DataTable LoadExcelData(string fileName, string sheetName)
|
|||
|
//{
|
|||
|
// string connectionString = string.Empty;
|
|||
|
|
|||
|
// if (fileName.EndsWith("xls"))
|
|||
|
// //Connection string for office 2003
|
|||
|
// connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;", fileName);
|
|||
|
// else
|
|||
|
// //Connection string for office 2007
|
|||
|
// connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0 Xml;", fileName);
|
|||
|
|
|||
|
// DataTable dt = new DataTable(sheetName);
|
|||
|
|
|||
|
// try
|
|||
|
// {
|
|||
|
// OleDbConnection connection = new OleDbConnection(connectionString);
|
|||
|
// connection.Open();
|
|||
|
// DataTable excelTable = connection.GetSchema("Tables");
|
|||
|
// string tableName;
|
|||
|
|
|||
|
// if (excelTable.Rows.Count > 0)
|
|||
|
// {
|
|||
|
// tableName = Convert.ToString(excelTable.Rows[0]["TABLE_NAME"]);
|
|||
|
// OleDbDataAdapter dataAdapter = new OleDbDataAdapter(string.Format("SELECT * FROM [{0}]", sheetName + "$"), connection);
|
|||
|
// //dt.TableName = sheetName;
|
|||
|
// dataAdapter.Fill(dt);
|
|||
|
// dataAdapter = null;
|
|||
|
// }
|
|||
|
|
|||
|
// connection.Close();
|
|||
|
// connection = null;
|
|||
|
// }
|
|||
|
// catch (Exception ex)
|
|||
|
// {
|
|||
|
// throw new Exception(ex.Message);
|
|||
|
// }
|
|||
|
|
|||
|
// return dt;
|
|||
|
|
|||
|
|
|||
|
//}
|
|||
|
|
|||
|
//public DataTable LoadExcelData(string fileName)
|
|||
|
//{
|
|||
|
// string connectionString = string.Empty;
|
|||
|
|
|||
|
// if(fileName.EndsWith("xls"))
|
|||
|
// //Connection string for office 2003
|
|||
|
// connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;", fileName);
|
|||
|
// else
|
|||
|
// //Connection string for office 2007
|
|||
|
// connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0 Xml;", fileName);
|
|||
|
|
|||
|
// DataTable dt = new DataTable();
|
|||
|
|
|||
|
// try
|
|||
|
// {
|
|||
|
// OleDbConnection connection = new OleDbConnection(connectionString);
|
|||
|
// connection.Open();
|
|||
|
// DataTable excelTable = connection.GetSchema("Tables");
|
|||
|
// string tableName;
|
|||
|
|
|||
|
// if (excelTable.Rows.Count > 0)
|
|||
|
// {
|
|||
|
// tableName = Convert.ToString(excelTable.Rows[0]["TABLE_NAME"]);
|
|||
|
// OleDbDataAdapter dataAdapter = new OleDbDataAdapter(string.Format("SELECT DISTINCT * FROM [{0}]", tableName), connection);
|
|||
|
// dt.TableName = tableName.Substring(0, tableName.Length - 1);
|
|||
|
// dataAdapter.Fill(dt);
|
|||
|
// dataAdapter = null;
|
|||
|
// }
|
|||
|
|
|||
|
// connection.Close();
|
|||
|
// connection = null;
|
|||
|
// }
|
|||
|
// catch (Exception ex)
|
|||
|
// {
|
|||
|
// throw new Exception(ex.Message);
|
|||
|
// }
|
|||
|
|
|||
|
// return dt;
|
|||
|
//}
|
|||
|
|
|||
|
|
|||
|
public List<UploadErrorOrSuccess> ValidateUploadedData(DataUploadColumnDefinition columnDefinition, DataTable uploadedData)
|
|||
|
{
|
|||
|
DataUploadValidation ovalidation = new DataUploadValidation();
|
|||
|
ovalidation.ColumnNameValidation(columnDefinition, uploadedData);
|
|||
|
if (ovalidation.ErrorOrSuccessList.Count > 0) return ovalidation.ErrorOrSuccessList;
|
|||
|
ovalidation.ValidateInput(columnDefinition, uploadedData);
|
|||
|
return ovalidation.ErrorOrSuccessList;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Regular Data Upload
|
|||
|
/// </summary>
|
|||
|
/// <param name="categorys"></param>
|
|||
|
/// <param name="grades"></param>
|
|||
|
/// <param name="departments"></param>
|
|||
|
/// <param name="locations"></param>
|
|||
|
/// <param name="religions"></param>
|
|||
|
/// <param name="designations"></param>
|
|||
|
/// <param name="banks"></param>
|
|||
|
/// <param name="branches"></param>
|
|||
|
/// <param name="employees"></param>
|
|||
|
/// <param name="oaccessCards"></param>
|
|||
|
/// <param name="payrollTypeID"></param>
|
|||
|
///
|
|||
|
|
|||
|
|
|||
|
public List<UploadErrorOrSuccess> UploadData(int uploadId, DataUploadColumnDefinition oColumnDefination,
|
|||
|
System.IO.Stream fileStream, int payrollTypeID, int userID, int? itemid, DateTime selecteDate)
|
|||
|
{
|
|||
|
_uplodedData = ExtractFromExcel(fileStream, oColumnDefination.SheetName);
|
|||
|
_errorOrSuccessList = this.ValidateUploadedData(oColumnDefination, _uplodedData);
|
|||
|
oColumnDefination.PayrollTypeID = payrollTypeID;
|
|||
|
//oColumnDefination.SelectedItemOneID = itemid != null ? (int)itemid : 0;
|
|||
|
this._payrollTypeID = oColumnDefination.PayrollTypeID;
|
|||
|
this._userID = userID;
|
|||
|
if (_errorOrSuccessList.Count > 0) return _errorOrSuccessList;
|
|||
|
|
|||
|
switch (uploadId)
|
|||
|
{
|
|||
|
case (int)EnumRegularDataUpload.EmployeeWithBasic:
|
|||
|
this.ImportEmpBasicInfo(uploadId);
|
|||
|
break;
|
|||
|
case (int)EnumRegularDataUpload.EmployeeRegularUpload:
|
|||
|
this.ImportEmpBasicInfo(uploadId);
|
|||
|
break;
|
|||
|
case (int)EnumRegularDataUpload.EmployeeProfileUpload:
|
|||
|
this.ImportEmployeeProfileInfo();
|
|||
|
break;
|
|||
|
|
|||
|
case (int)EnumRegularDataUpload.LifeCycle:
|
|||
|
this.importLifeCycle(oColumnDefination);
|
|||
|
break;
|
|||
|
|
|||
|
//case (int)EnumRegularDataUpload.EmployeeDepartmentBasic:
|
|||
|
|
|||
|
// this.ImportDeptInfo();
|
|||
|
// break;
|
|||
|
|
|||
|
case (int)EnumRegularDataUpload.Allowance:
|
|||
|
this.ImportEmpIndividualAllowanceDeduction(oColumnDefination, EnumAllowOrDeduct.Allowance);
|
|||
|
break;
|
|||
|
case (int)EnumRegularDataUpload.TaxInvestment:
|
|||
|
this.ImportTaxInvestmentData(oColumnDefination, (int)itemid);
|
|||
|
break;
|
|||
|
//case (int)EnumRegularDataUpload.LTAdata:
|
|||
|
// this.ImportLTAData(oColumnDefination);
|
|||
|
// break;
|
|||
|
|
|||
|
//case (int)EnumRegularDataUpload.ExceptionAllowance:
|
|||
|
// this.ImportEmpExceptionAllowance(oColumnDefination);
|
|||
|
// break;
|
|||
|
//case (int)EnumRegularDataUpload.EmpWorkPlanSetup:
|
|||
|
// this.ImportEmpWorkPlanSetup(oColumnDefination);
|
|||
|
// break;
|
|||
|
|
|||
|
//case (int)EnumRegularDataUpload.NotApplicableAllowance:
|
|||
|
// this.ImportEmpNotApplicableAllowance(oColumnDefination);
|
|||
|
// break;
|
|||
|
//case (int)EnumRegularDataUpload.TaxChallan:
|
|||
|
|
|||
|
// this.ImportITChallan(oColumnDefination);
|
|||
|
// break;
|
|||
|
//case (int)EnumRegularDataUpload.EmpCardInfo:
|
|||
|
|
|||
|
// this.ImportEmpCardInfo(oColumnDefination);
|
|||
|
// break;
|
|||
|
|
|||
|
case (int)EnumRegularDataUpload.Deduction:
|
|||
|
|
|||
|
this.ImportEmpIndividualAllowanceDeduction(oColumnDefination, EnumAllowOrDeduct.Deduction);
|
|||
|
break;
|
|||
|
|
|||
|
//case (int)EnumRegularDataUpload.EmpDiscontinue:
|
|||
|
|
|||
|
// break;
|
|||
|
|
|||
|
case (int)EnumRegularDataUpload.EmployeeBankAccount:
|
|||
|
|
|||
|
this.ImportEmpBankAccount(oColumnDefination);
|
|||
|
break;
|
|||
|
|
|||
|
//case (int)EnumRegularDataUpload.EmployeeConfirmation:
|
|||
|
|
|||
|
// break;
|
|||
|
|
|||
|
//case (int)EnumRegularDataUpload.ESB:
|
|||
|
|
|||
|
// break;
|
|||
|
|
|||
|
//case (int)EnumRegularDataUpload.ITInvestment:
|
|||
|
|
|||
|
// this.ImportITInvestment(oColumnDefination);
|
|||
|
// break;
|
|||
|
|
|||
|
//case (int)EnumRegularDataUpload.Leave:
|
|||
|
|
|||
|
// break;
|
|||
|
|
|||
|
case (int)EnumRegularDataUpload.OPI:
|
|||
|
|
|||
|
|
|||
|
this.ImportOPIDataNew(oColumnDefination);
|
|||
|
|
|||
|
break;
|
|||
|
|
|||
|
//case (int)EnumRegularDataUpload.SalaryData:
|
|||
|
|
|||
|
// break;
|
|||
|
|
|||
|
//case (int)EnumRegularDataUpload.SalaryRemarks:
|
|||
|
|
|||
|
// break;
|
|||
|
|
|||
|
case (int)EnumRegularDataUpload.TaxAdjustCurrYear:
|
|||
|
|
|||
|
this.ImportTaxAdjustmentData(oColumnDefination);
|
|||
|
break;
|
|||
|
//case (int)EnumRegularDataUpload.WPPFAllowance:
|
|||
|
|
|||
|
// this.ImportWPPFAllowance(oColumnDefination);
|
|||
|
// break;
|
|||
|
//case (int)EnumRegularDataUpload.TC:
|
|||
|
|
|||
|
// break;
|
|||
|
|
|||
|
//case (int)EnumRegularDataUpload.EmpGradeSalary:
|
|||
|
|
|||
|
// this.ImportEmpGradeSalaryAssignment(oColumnDefination);
|
|||
|
// break;
|
|||
|
//case (int)EnumRegularDataUpload.Organogram:
|
|||
|
|
|||
|
// this.ImportOrganogram(oColumnDefination);
|
|||
|
// break;
|
|||
|
case (int)EnumRegularDataUpload.EmployeeAttendance:
|
|||
|
case (int)EnumRegularDataUpload.EmployeeAttendanceLM:
|
|||
|
case (int)EnumRegularDataUpload.EmployeeAttendanceCordinator:
|
|||
|
this.ImportEmployeeAttendance(oColumnDefination, payrollTypeID);
|
|||
|
break;
|
|||
|
|
|||
|
case (int)EnumRegularDataUpload.TaxData:
|
|||
|
|
|||
|
this.ImportTaxDataInfo(oColumnDefination);
|
|||
|
break;
|
|||
|
|
|||
|
case (int)EnumRegularDataUpload.EmployeeLoan:
|
|||
|
|
|||
|
this.ImportEmpLoanInformation(oColumnDefination);
|
|||
|
break;
|
|||
|
|
|||
|
//case (int)EnumRegularDataUpload.EmployeeLoanSetup:
|
|||
|
|
|||
|
// this.ImportEmpLoanSetup(oColumnDefination);
|
|||
|
// break;
|
|||
|
|
|||
|
case (int)EnumRegularDataUpload.EmpSalaryComponent:
|
|||
|
|
|||
|
this.ImportSalaryComponent(oColumnDefination);
|
|||
|
break;
|
|||
|
|
|||
|
case (int)EnumRegularDataUpload.EmpCC:
|
|||
|
|
|||
|
this.ImportEmpCC(oColumnDefination);
|
|||
|
break;
|
|||
|
|
|||
|
case (int)EnumRegularDataUpload.PFOpening:
|
|||
|
this.ImportPFOpening(oColumnDefination);
|
|||
|
break;
|
|||
|
case (int)EnumRegularDataUpload.PFYearlyInterest:
|
|||
|
this.ImportPFYearlyInterest(oColumnDefination);
|
|||
|
break;
|
|||
|
|
|||
|
//case (int)EnumRegularDataUpload.EmpVendorCode:
|
|||
|
// this.ImportEmpVendorCode(oColumnDefination);
|
|||
|
// break;
|
|||
|
|
|||
|
//case (int)EnumRegularDataUpload.OPI_Parameter_Individual:
|
|||
|
// //this.ImportOPIData(oColumnDefination);
|
|||
|
// this.ImportOPIParamInividual(oColumnDefination);
|
|||
|
// break;
|
|||
|
|
|||
|
//case (int)EnumRegularDataUpload.EmpAddressData:
|
|||
|
// //this.ImportOPIData(oColumnDefination);
|
|||
|
// //this.ImportOPIParamInividual(oColumnDefination);
|
|||
|
// this.ImportAllEmpContactInfo(oColumnDefination);
|
|||
|
// break;
|
|||
|
//case (int)EnumRegularDataUpload.OrganogramData:
|
|||
|
// this.ImportOrganogramData(oColumnDefination);
|
|||
|
// break;
|
|||
|
case (int)EnumRegularDataUpload.EmployeeLineManagerUpload:
|
|||
|
this.ImportLineManager(oColumnDefination);
|
|||
|
break;
|
|||
|
case (int)EnumRegularDataUpload.LeaveBalance:
|
|||
|
this.ImportLeaveBalance(oColumnDefination);
|
|||
|
break;
|
|||
|
case (int)EnumRegularDataUpload.LeaveEncashDays:
|
|||
|
this.ImportLeaveEncashDays(oColumnDefination);
|
|||
|
break;
|
|||
|
case (int)EnumRegularDataUpload.LeaveEntry:
|
|||
|
this.ImportLeaveEntry(oColumnDefination);
|
|||
|
break;
|
|||
|
case (int)EnumRegularDataUpload.LeaveEntryLf: //Only For Li&Fung
|
|||
|
this.ImportLeaveEntryLf(oColumnDefination, userID);
|
|||
|
break;
|
|||
|
case (int)EnumRegularDataUpload.AitUpload:
|
|||
|
this.ImportAitData(oColumnDefination);
|
|||
|
break;
|
|||
|
case (int)EnumRegularDataUpload.OTImport:
|
|||
|
this.ImportOtUpload(oColumnDefination, payrollTypeID, selecteDate, userID);
|
|||
|
break;
|
|||
|
case (int)EnumRegularDataUpload.EmpWorkplanUpload:
|
|||
|
this.ImportEmployeeWorkplan(oColumnDefination, payrollTypeID, userID);
|
|||
|
break;
|
|||
|
case (int)EnumRegularDataUpload.TemporaryShiftAssignmentUpload:
|
|||
|
this.ImportTemporaryShiftAssignment(payrollTypeID, userID);
|
|||
|
break;
|
|||
|
case (int)EnumRegularDataUpload.CoordinatorUpload:
|
|||
|
this.ImportCoOrdinator(oColumnDefination);
|
|||
|
break;
|
|||
|
case (int)EnumRegularDataUpload.TaxAdjustmentDataUpload:
|
|||
|
this.ImportTaxAdjustmentData(oColumnDefination);
|
|||
|
break;
|
|||
|
case (int)EnumRegularDataUpload.EmpCardInfo:
|
|||
|
this.ImportAssingedCard(oColumnDefination, payrollTypeID);
|
|||
|
break;
|
|||
|
case (int)EnumRegularDataUpload.TaxChallan:
|
|||
|
this.ImportITChallan(oColumnDefination);
|
|||
|
break;
|
|||
|
default:
|
|||
|
this.ImportException(uploadId, oColumnDefination);
|
|||
|
break;
|
|||
|
}
|
|||
|
return _errorOrSuccessList;
|
|||
|
}
|
|||
|
|
|||
|
#region Import CoOrdinator
|
|||
|
public void ImportCoOrdinator(DataUploadColumnDefinition _columnDefinition)
|
|||
|
{
|
|||
|
List<Employee> _oemployees = new EmployeeService().GetAllEmps();
|
|||
|
List<EmployeeCordinator> _oemployeecordinators = new List<EmployeeCordinator>();
|
|||
|
Employee oemployee = null;
|
|||
|
EmployeeCordinator item;
|
|||
|
int nRow = 0;
|
|||
|
int a;
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
item = new EmployeeCordinator();
|
|||
|
nRow = nRow + 1;
|
|||
|
oemployee = _oemployees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr["Employee No"].ToString(); });
|
|||
|
//oEmployeeCordinator = _oemployeecordinators.Find(delegate (EmployeeCordinator empC) { return empC.EmployeeID == oemployee.ID; });
|
|||
|
//oEmployeeCordinator.EmployeeID = oemployee.ID;
|
|||
|
if (oemployee != null)
|
|||
|
{
|
|||
|
item.EmployeeID = oemployee.ID;
|
|||
|
if (dr["Attendance In Charge"].ToString() == string.Empty && dr["Employee No"].ToString() != string.Empty)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Attendance In Charge", nRow, "(" + dr["Attendance In Charge"].ToString() + ")" + "Attendance In Charge not found in the current context"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
if (dr["Employee No"].ToString() == string.Empty && dr["Attendance In Charge"].ToString() != string.Empty)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Attendance In Charge", nRow, "(" + dr["Attendance In Charge"].ToString() + ")" + "Can not assign empty field to Attendance In Charge"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
var lineManager = _oemployees.Where(o => o.EmployeeNo == dr["Attendance In Charge"].ToString().Trim()).FirstOrDefault();
|
|||
|
//coOrdinator.CordinatorID = lineManager.ID;
|
|||
|
if (lineManager == null)
|
|||
|
{ item.EmployeeID = oemployee.ID;
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Attendance In Charge", nRow, "(" + dr["Attendance In Charge"].ToString() + ")" + "Attendance In Charge is not found in Employee List."));
|
|||
|
continue;
|
|||
|
}
|
|||
|
item.CordinatorID = lineManager.ID;
|
|||
|
item.CreatedBy = this._userID;
|
|||
|
item.CreatedDate = DateTime.Today;
|
|||
|
if(dr["Emp Time Approve (Yes/No)"].ToString() !="")
|
|||
|
{
|
|||
|
var timeRequest = dr["Emp Time Approve (Yes/No)"].ToString();
|
|||
|
if(timeRequest.ToLower().ToLower() =="yes")
|
|||
|
{
|
|||
|
item.ApproveTimeRequest = true;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
_oemployeecordinators.Add(item);
|
|||
|
|
|||
|
}
|
|||
|
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee not found in the Employee List"));
|
|||
|
}
|
|||
|
|
|||
|
if (_errorOrSuccessList.Count == 0)
|
|||
|
{
|
|||
|
new EmployeeCordinatorService().Insert(_oemployeecordinators);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occurred on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
public void ImportTemporaryShiftAssignment(int payrollTypeId, int userID)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
int nRow = 0;
|
|||
|
List<ActingResponsibilitySetup> oActingResponsibilitySetup = new List<ActingResponsibilitySetup>();
|
|||
|
List<Employee> employees = new EmployeeService().GetAllEmps(payrollTypeId);
|
|||
|
List<Shift> shifts = new ShiftService().GetAllShiftByPayrollType(payrollTypeId);
|
|||
|
Employee tempEmployee = null;
|
|||
|
Shift tempShift = null;
|
|||
|
string shiftName = string.Empty;
|
|||
|
DateTime endDate = DateTime.Today.AddDays(30);
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow oDR in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
tempEmployee = employees.Find(item => item.EmployeeNo.ToLower().Trim() == Convert.ToString(oDR["Employee-ID"]).ToLower().Trim());
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
if (tempEmployee != null)
|
|||
|
{
|
|||
|
for (DateTime date = DateTime.Today; date < endDate; date = date.AddDays(1))
|
|||
|
{
|
|||
|
shiftName = Convert.ToString(oDR[date.ToString("dd-MMM-yyyy")]).ToLower().Trim();
|
|||
|
tempShift = shifts.Find(item => item.Code.Trim().ToLower() == shiftName || item.ShortName.Trim().ToLower() == shiftName);
|
|||
|
|
|||
|
if (tempShift != null)
|
|||
|
{
|
|||
|
oActingResponsibilitySetup.Add(new ActingResponsibilitySetup
|
|||
|
{
|
|||
|
EmployeeID = tempEmployee.ID,
|
|||
|
ShiftID = tempShift.ID,
|
|||
|
FromDate = date,
|
|||
|
ToDate = date,
|
|||
|
SalaryMonth = DateTime.Today,
|
|||
|
CreatedBy = userID,
|
|||
|
CreatedDate = DateTime.Today,
|
|||
|
payrollTypeID = payrollTypeId,
|
|||
|
ClaimWFStatus = EnumClaimWFStatus.LMApproved,
|
|||
|
IsHoliday = false
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee ID", nRow, "Employee ID not found: " + oDR["Employee-ID"].ToString()));
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Error occured on row:", nRow, " Reason:" + ex.Message));
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Error occured on row:", nRow, " Reason:" + ex.Message));
|
|||
|
}
|
|||
|
|
|||
|
if (_errorOrSuccessList.Count == 0) new ActingResponsibilitySetupService().Save(oActingResponsibilitySetup);
|
|||
|
}
|
|||
|
catch (Exception)
|
|||
|
{
|
|||
|
throw;
|
|||
|
}
|
|||
|
}
|
|||
|
public void ImportEmployeeWorkplan(DataUploadColumnDefinition columnDefinition, int payrollTypeId, int userID)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
int nRow = 0;
|
|||
|
List<EmployeeWorkPlanSetup> employeeWorkPlanSetups = new List<EmployeeWorkPlanSetup>();
|
|||
|
List<Employee> employees = new EmployeeService().GetAllEmps(payrollTypeId);
|
|||
|
Employee tempEmployee = null;
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow oDR in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
tempEmployee = employees.Find(item => item.EmployeeNo.ToLower().Trim() == Convert.ToString(oDR["Employee-ID"]).ToLower().Trim());
|
|||
|
|
|||
|
if (tempEmployee != null)
|
|||
|
{
|
|||
|
employeeWorkPlanSetups.Add(new EmployeeWorkPlanSetup
|
|||
|
{
|
|||
|
EmployeeID = tempEmployee.ID,
|
|||
|
WorkPlanGroupID = columnDefinition.SelectedItemOneID,
|
|||
|
StartDate = tempEmployee.JoiningDate,
|
|||
|
PayrolltypeID = payrollTypeId,
|
|||
|
CreatedBy = userID
|
|||
|
});
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee ID", nRow, "Employee ID not found: " + oDR["Employee-ID"].ToString()));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Error occured on row:", nRow, " Reason:" + ex.Message));
|
|||
|
}
|
|||
|
|
|||
|
if (_errorOrSuccessList.Count == 0) new EmployeeWorkPlanSetupService().Save(employeeWorkPlanSetups);
|
|||
|
}
|
|||
|
catch (Exception)
|
|||
|
{
|
|||
|
throw;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void ImportOtUpload(DataUploadColumnDefinition columnDefinition, int payrollTypeId, DateTime selecteDate, int userID)
|
|||
|
{
|
|||
|
List<EmployeeOverTime> employeeOverTimes = new List<EmployeeOverTime>();
|
|||
|
try
|
|||
|
{
|
|||
|
Employee oEmp = null;
|
|||
|
Term oTerm = null;
|
|||
|
TermParameter oTermParamerer = null;
|
|||
|
List<TermParameter> oTermParamerers = new TermParameterService().GetByPayrollTypeID(payrollTypeId);
|
|||
|
List<Employee> employees = new EmployeeService().GetAllEmps();
|
|||
|
List<string> OTCodes = new List<string>();
|
|||
|
List<Term> terms = new TermService().Get(EnumStatus.Active, payrollTypeId);
|
|||
|
PayrollType ptype = new PayrollTypeService().Get(payrollTypeId);
|
|||
|
bool fixedotmonth = new SystemConfigarationService().GetconfigBooleanValue(EnumConfigurationType.Logic, "overtime", "fixedotmonth");
|
|||
|
for (int i = fixedotmonth ? 2 : 3; i < columnDefinition.ColumnName.Count; i++)
|
|||
|
{
|
|||
|
OTCodes.Add(columnDefinition.ColumnName[i]);
|
|||
|
}
|
|||
|
|
|||
|
double otHour = 0;
|
|||
|
int nRow = 0;
|
|||
|
|
|||
|
foreach (DataRow oDR in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
|
|||
|
foreach (string otCode in OTCodes)
|
|||
|
{
|
|||
|
EmployeeOverTime oEmpOverTime = new EmployeeOverTime();
|
|||
|
|
|||
|
//throw new ServiceException("Invalid Term:" + otCode + " , Term not exist in the System; Row:" + nRow.ToString());
|
|||
|
oEmp = employees.Find(delegate (Employee oEmp1) { return oEmp1.EmployeeNo.ToLower().Trim() == Convert.ToString(oDR["Employee No"]).ToLower().Trim(); });
|
|||
|
if (oEmp == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee Code", nRow, "Employee Code not found: " + oDR["Employee No"].ToString()));
|
|||
|
continue;
|
|||
|
}
|
|||
|
oTerm = terms.Find(delegate (Term oTM) { return oTM.Name.Trim().ToLower() == otCode.Trim().ToLower(); });
|
|||
|
if (oTerm == null)
|
|||
|
{
|
|||
|
//_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee Code", nRow, "Overtime/Term notfound: " + oDR["EmEmployee No"].ToString()));
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee Code", nRow, "Overtime/Term notfound: " + oDR["Employee No"].ToString()));
|
|||
|
continue;
|
|||
|
|
|||
|
}
|
|||
|
if (oEmp.GradeID == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee Code", nRow, "Grade not found: " + oDR["Employee No"].ToString()));
|
|||
|
continue;
|
|||
|
}
|
|||
|
List<TermParameter> termParameters = new TermParameterService().GetByGradeID((int)oEmp.GradeID);
|
|||
|
oTermParamerer = termParameters.Find(t => t.TermID == oTerm.ID);
|
|||
|
/*oTermParamerer = TermParameter.GetParameter(oTermParamerers, oEmp, oTerm.ID); // baad ei line*/
|
|||
|
if (oTermParamerer == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee Code", nRow, "OverTime Policy is not found: " + oDR["Employee No"].ToString()));
|
|||
|
continue;
|
|||
|
|
|||
|
}
|
|||
|
otHour = 0;
|
|||
|
//throw new ServiceException("Invalid Parameter, Term parameter/rule not found for the employee:" + oEmp.EmployeeNo + " Row:" + nRow.ToString());
|
|||
|
if (oDR[otCode].ToString() != "")
|
|||
|
{
|
|||
|
if (double.TryParse(oDR[otCode].ToString(), out otHour) == false)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee Code", nRow, "Invalid Hour Amount, Term parameter/rule not exist in the System Row: " + oDR["Employee No"].ToString()));
|
|||
|
continue;
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
otHour = Convert.ToDouble(oDR[otCode]);
|
|||
|
}
|
|||
|
}
|
|||
|
//throw new ServiceException("Invalid Hour Amount, Term parameter/rule not exist in the System Row:" + nRow.ToString());
|
|||
|
|
|||
|
|
|||
|
if (!fixedotmonth)
|
|||
|
{
|
|||
|
if (oDR["OT Month"].ToString() == "")
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee Code", nRow, "OT Month is not found: " + oDR["Employee No"].ToString()));
|
|||
|
continue;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
selecteDate = GlobalFunctions.LastDateOfMonth(Convert.ToDateTime(oDR["OT Month"]));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
oEmpOverTime.TermID = oTermParamerer.TermID;
|
|||
|
oEmpOverTime.TermParameterID = oTermParamerer.ID;
|
|||
|
oEmpOverTime.OTHours = otHour;
|
|||
|
oEmpOverTime.EmployeeID = oEmp.ID;
|
|||
|
oEmpOverTime.Value = oTermParamerer.Amount;
|
|||
|
oEmpOverTime.MonthDate = ptype.NextPayProcessDate;
|
|||
|
oEmpOverTime.OTMonth = GlobalFunctions.LastDateOfMonth(selecteDate);
|
|||
|
oEmpOverTime.PayrollTypeID = payrollTypeId;
|
|||
|
oEmpOverTime.CreatedBy = userID;
|
|||
|
|
|||
|
if (oEmpOverTime.OTHours > 0)
|
|||
|
employeeOverTimes.Add(oEmpOverTime);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception e)
|
|||
|
{
|
|||
|
Console.WriteLine(e);
|
|||
|
throw;
|
|||
|
}
|
|||
|
if (_errorOrSuccessList.Count == 0)
|
|||
|
new EmployeeOverTimeService().SaveByExcel(employeeOverTimes);
|
|||
|
}
|
|||
|
public void ImportEmployeeAttendance(DataUploadColumnDefinition columnDefinition, int payrollTypeId)
|
|||
|
{
|
|||
|
List<Employee> oemployees = new List<Employee>();
|
|||
|
if (columnDefinition.uploadID == (int)EnumRegularDataUpload.EmployeeAttendance)
|
|||
|
oemployees = new EmployeeService().GetAllEmps(columnDefinition.PayrollTypeID);
|
|||
|
else if (columnDefinition.uploadID == (int)EnumRegularDataUpload.EmployeeAttendanceLM)
|
|||
|
{
|
|||
|
User ouser = new UserService().Get(this._userID);
|
|||
|
Employee olm = new EmployeeService().Get(ouser.LoginID, columnDefinition.PayrollTypeID);
|
|||
|
oemployees = new EmployeeService().GetSubordinatesByLineManager(olm.ID);
|
|||
|
}
|
|||
|
else if (columnDefinition.uploadID == (int)EnumRegularDataUpload.EmployeeAttendanceCordinator)
|
|||
|
{
|
|||
|
User ouser = new UserService().Get(this._userID);
|
|||
|
Employee cordinator = new EmployeeService().Get(ouser.LoginID, columnDefinition.PayrollTypeID);
|
|||
|
oemployees = new EmployeeService().GetEmployeeByCoordinator(cordinator.ID);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
DailyAttnProcess oDailyAttnProcess = null;
|
|||
|
_DailyAttnProcess = new List<DailyAttnProcess>();
|
|||
|
|
|||
|
List<Shift> oshfits = new ShiftService().Get(EnumStatus.Regardless, this._payrollTypeID);
|
|||
|
Employee oemployee = null;
|
|||
|
int nRow = 0;
|
|||
|
DateTime selectedDate = new DateTime();
|
|||
|
DateTime MaxDate = DateTime.MinValue;
|
|||
|
DateTime MinDate = DateTime.MaxValue;
|
|||
|
try
|
|||
|
{
|
|||
|
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
oemployee = oemployees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr["EmployeeNo"].ToString(); });
|
|||
|
if (oemployee != null)
|
|||
|
{
|
|||
|
oDailyAttnProcess = new DailyAttnProcess();
|
|||
|
//oDailyAttnProcess.AttnDate = selecteDate;
|
|||
|
oDailyAttnProcess.EmployeeID = oemployee.ID;
|
|||
|
oDailyAttnProcess.Employee = oemployee;
|
|||
|
|
|||
|
if (dr["Shift"].ToString() != string.Empty)
|
|||
|
{
|
|||
|
var sft = oshfits.FirstOrDefault(x => x.ShortName.ToLower() == dr["Shift"].ToString().ToLower());
|
|||
|
if (sft != null)
|
|||
|
oDailyAttnProcess.ShiftID = sft.ID;
|
|||
|
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.",
|
|||
|
nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "Invalid shift: " + dr["Shift"].ToString()));
|
|||
|
}
|
|||
|
//else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.",
|
|||
|
// nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "Shift Not Found"));
|
|||
|
if (dr["Date"].ToString() != string.Empty)
|
|||
|
{
|
|||
|
DateTime date;
|
|||
|
bool isDateValid = DateTime.TryParse(dr["Date"].ToString(), out date);
|
|||
|
|
|||
|
if (isDateValid)
|
|||
|
{
|
|||
|
selectedDate = Convert.ToDateTime(dr["Date"]);
|
|||
|
oDailyAttnProcess.AttnDate = Convert.ToDateTime(dr["Date"]);
|
|||
|
|
|||
|
if (selectedDate > MaxDate)
|
|||
|
{
|
|||
|
MaxDate = selectedDate;
|
|||
|
}
|
|||
|
|
|||
|
if (selectedDate < MinDate)
|
|||
|
{
|
|||
|
MinDate = selectedDate;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.",
|
|||
|
nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "Date is not Valid: " + dr["Date"].ToString()));
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.",
|
|||
|
nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "Date Not Found"));
|
|||
|
}
|
|||
|
|
|||
|
#region Old Code
|
|||
|
|
|||
|
//int hour = 0, minutes = 0;
|
|||
|
//string stime = "";
|
|||
|
//stime = dr["InTime (24 Hour Format)"].ToString();
|
|||
|
//if(stime.Contains(':') ==false)
|
|||
|
//{
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.",
|
|||
|
// nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "Invalid Time Format: " + dr["InTime (24 Hour Format)"].ToString()));
|
|||
|
//}
|
|||
|
//else
|
|||
|
//{
|
|||
|
// string[] sptime = stime.Split(":");
|
|||
|
// if(sptime[0].Length > 2) sptime[0] = sptime[0].Substring(sptime[0].Length - 2);
|
|||
|
// if (int.TryParse(sptime[0], out hour) ==true)
|
|||
|
// {
|
|||
|
// if(hour <0 && hour > 23)
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.",
|
|||
|
// nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "Hour must be between 1 to 23, " + sptime[0].ToString()));
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.",
|
|||
|
// nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "Invalid Intime Hour: " + sptime[0].ToString()));
|
|||
|
// }
|
|||
|
|
|||
|
// if (int.TryParse(sptime[1], out minutes) == true)
|
|||
|
// {
|
|||
|
// if (minutes < 0 && minutes > 59)
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.",
|
|||
|
// nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "Minute must be between 1 to 59, " + sptime[0].ToString()));
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.",
|
|||
|
// nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "Invalid Intime Minutes: " + sptime[0].ToString()));
|
|||
|
// }
|
|||
|
// if (hour != 0 || minutes != 0)
|
|||
|
// {
|
|||
|
// DateTime dateTime = new DateTime(oDailyAttnProcess.AttnDate.Year, oDailyAttnProcess.AttnDate.Month,
|
|||
|
// oDailyAttnProcess.AttnDate.Day, hour, minutes, 0);
|
|||
|
// oDailyAttnProcess.InTime = dateTime;
|
|||
|
// }
|
|||
|
//}
|
|||
|
//hour = 0; minutes = 0;
|
|||
|
//stime = "";
|
|||
|
//stime = dr["OutTime (24 Hour Format)"].ToString();
|
|||
|
//if (stime.Contains(':') == false)
|
|||
|
//{
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.",
|
|||
|
// nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "Invalid Time Format: " + dr["OutTime (24 Hour Format)"].ToString()));
|
|||
|
//}
|
|||
|
//else
|
|||
|
//{
|
|||
|
// string[] sptime = stime.Split(":");
|
|||
|
// if (sptime[0].Length > 2) sptime[0] = sptime[0].Substring(sptime[0].Length - 2);
|
|||
|
// if (int.TryParse(sptime[0], out hour) == true)
|
|||
|
// {
|
|||
|
// if (hour < 0 && hour > 23)
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.",
|
|||
|
// nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "Hour must be between 1 to 23, " + sptime[0].ToString()));
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.",
|
|||
|
// nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "Invalid Outtime Hour: " + sptime[0].ToString()));
|
|||
|
// }
|
|||
|
|
|||
|
// if (int.TryParse(sptime[1], out minutes) == true)
|
|||
|
// {
|
|||
|
// if (minutes < 0 && minutes > 59)
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.",
|
|||
|
// nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "Minute must be between 1 to 59, " + sptime[1].ToString()));
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.",
|
|||
|
// nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "Invalid Outtime Minutes: " + sptime[1].ToString()));
|
|||
|
// }
|
|||
|
// if (hour != 0 || minutes != 0)
|
|||
|
// {
|
|||
|
// DateTime dateTime = new DateTime(oDailyAttnProcess.AttnDate.Year, oDailyAttnProcess.AttnDate.Month,
|
|||
|
// oDailyAttnProcess.AttnDate.Day, hour, minutes, 0);
|
|||
|
// oDailyAttnProcess.OutTime = dateTime;
|
|||
|
// }
|
|||
|
//}
|
|||
|
#endregion
|
|||
|
|
|||
|
if (dr["InTime (24 Hour Exp: 00:00)"].ToString() != string.Empty && dr["OutTime (24 Hour Exp: 00:00)"].ToString() != string.Empty)
|
|||
|
{
|
|||
|
DateTime inTime, outTime;
|
|||
|
bool isInTimeValid = DateTime.TryParse(dr["InTime (24 Hour Exp: 00:00)"].ToString(), out inTime);
|
|||
|
bool isOutTimeValid = DateTime.TryParse(dr["OutTime (24 Hour Exp: 00:00)"].ToString(), out outTime);
|
|||
|
|
|||
|
if (isInTimeValid && isOutTimeValid)
|
|||
|
{
|
|||
|
DateTime newDate = Convert.ToDateTime(dr["InTime (24 Hour Exp: 00:00)"]);
|
|||
|
DateTime actualInTime = new DateTime(selectedDate.Year, selectedDate.Month, selectedDate.Day, newDate.Hour, newDate.Minute, newDate.Second, 0);
|
|||
|
oDailyAttnProcess.InTime = actualInTime;
|
|||
|
|
|||
|
newDate = Convert.ToDateTime(dr["OutTime (24 Hour Exp: 00:00)"]);
|
|||
|
DateTime actualOutTime = new DateTime(selectedDate.Year, selectedDate.Month, selectedDate.Day, newDate.Hour, newDate.Minute, newDate.Second, 0);
|
|||
|
oDailyAttnProcess.OutTime = actualOutTime;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (!isInTimeValid)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["EmployeeNo"].ToString() + ")" + " Invalid In Time Format"));
|
|||
|
}
|
|||
|
if (!isOutTimeValid)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["EmployeeNo"].ToString() + ")" + " Invalid Out Time Format"));
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//else
|
|||
|
//{
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["EmployeeNo"].ToString() + ")" + " In Time Or Out Time Could Not Found "));
|
|||
|
//}
|
|||
|
|
|||
|
if (dr["Reason"].ToString().Length > 200)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.",
|
|||
|
nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "Reason is too long, try not more than 200 character"));
|
|||
|
}
|
|||
|
else if (dr["Reason"].ToString() != string.Empty)
|
|||
|
{
|
|||
|
//if (dr["Status"].ToString() == "Present")
|
|||
|
//{
|
|||
|
// oDailyAttnProcess.AttenType = EnumAttendanceType.Present;
|
|||
|
// oDailyAttnProcess.Reason = dr["Status"].ToString();
|
|||
|
//}
|
|||
|
//else
|
|||
|
//{
|
|||
|
oDailyAttnProcess.Reason = dr["Reason"].ToString();
|
|||
|
//}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
oDailyAttnProcess.Reason = string.Empty;
|
|||
|
}
|
|||
|
|
|||
|
oDailyAttnProcess.OTHour = dr["OTHour"].ToString()==string.Empty? 0.00 : Convert.ToDouble(dr["OTHour"]);
|
|||
|
_DailyAttnProcess.Add(oDailyAttnProcess);
|
|||
|
}
|
|||
|
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "Employee not found for in the existing data"));
|
|||
|
}
|
|||
|
|
|||
|
List<MonthlyWorkPlan> workPlans = new MonthlyWorkPlanService().Get(MinDate, MaxDate, this._payrollTypeID);
|
|||
|
List<EmployeeWorkPlanSetup> empworkplans = new EmployeeWorkPlanSetupService().GetByPayrollTypeID(this._payrollTypeID);
|
|||
|
List<DailyAttnProcess> existingData = new DailyAttnProcessService().GetDateRange(MinDate,MaxDate, this._payrollTypeID);
|
|||
|
|
|||
|
foreach (DailyAttnProcess item in _DailyAttnProcess)
|
|||
|
{
|
|||
|
var attData = existingData.FirstOrDefault(x => x.EmployeeID == item.EmployeeID && x.AttnDate == item.AttnDate);
|
|||
|
if(attData != null ) {
|
|||
|
if(attData.WFStatus == EnumWFAttnStatus.EmpSubmitted ||
|
|||
|
attData.WFStatus == EnumWFAttnStatus.LMApproved)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", 0, "(" + item.Employee.EmployeeNo + ")" + "Data in approval stage, so not allowed to Edit"));
|
|||
|
}
|
|||
|
if (attData.IsFromMobile != EnumIsFromMobile.None)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", 0, "(" + item.Employee.EmployeeNo + ")" + "Check-in and Check-out from Mobile, so not allowed to Edit"));
|
|||
|
}
|
|||
|
}
|
|||
|
item.AttenType = EnumAttendanceType.Absent;
|
|||
|
if (item.InTime != null || item.OutTime != null)
|
|||
|
{
|
|||
|
item.AttenType = EnumAttendanceType.Present;
|
|||
|
}
|
|||
|
var empworkPlan = empworkplans.FirstOrDefault(x => x.EmployeeID == item.EmployeeID);
|
|||
|
|
|||
|
if(empworkPlan!=null)
|
|||
|
{
|
|||
|
var mplan = workPlans.FirstOrDefault(x => x.WorkDate == item.AttnDate && x.WorkPlanGroupID == empworkPlan.WorkPlanGroupID);
|
|||
|
if(mplan!=null) {
|
|||
|
if (item.ShiftID == null) item.ShiftID = mplan.ShiftID;
|
|||
|
item.WorkDayType = mplan.Type;
|
|||
|
}
|
|||
|
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", 0, "(" + item.Employee.EmployeeNo + ")" + "Employee Monthly workplan not found"));
|
|||
|
}
|
|||
|
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.",0, "(" + item.Employee.EmployeeNo + ")" + "Employee workplan not found"));
|
|||
|
item.CreatedBy = this._userID;
|
|||
|
item.CreatedDate = DateTime.Today;
|
|||
|
item.IsManualEntry = true;
|
|||
|
new AttendanceProcess().CalculateLateAndDelay(item, oshfits);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occured on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
if (_errorOrSuccessList.Count == 0)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
var attnProcessGroupedByDate = _DailyAttnProcess.GroupBy(x => x.AttnDate);
|
|||
|
|
|||
|
foreach (var attnProcess in attnProcessGroupedByDate)
|
|||
|
{
|
|||
|
new DailyAttnProcessService().Save(attnProcess.ToList(), new List<AttnMonthlyBenefit>());
|
|||
|
}
|
|||
|
}
|
|||
|
catch(Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Can not save data, Reason:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
public void ImportTaxAdjustmentData(DataUploadColumnDefinition columnDefinition)
|
|||
|
{
|
|||
|
{
|
|||
|
List<TaxMergeMaster> oTaxMergeMasters = new List<TaxMergeMaster>();
|
|||
|
var payroll = new PayrollTypeService().Get().FirstOrDefault();
|
|||
|
oTaxMergeMasters = new TaxMergeMasterService().GetbyTaxParameter((int)payroll.TaxParamID, payroll.ID);
|
|||
|
Employee oemployee = null;
|
|||
|
IncomeTax oIncomeTax = null;
|
|||
|
TaxMergeMaster oTaxMergeMaster = null;
|
|||
|
List<Employee> _employees = new EmployeeService().GetWithDiscontinue(payroll.ID);
|
|||
|
|
|||
|
List<ProcessItem> processItems = new ProcessItemService().Get();
|
|||
|
#region Refresh Objects
|
|||
|
int nRow = 0;
|
|||
|
List<IncomeTax> savedData = new IncomeTaxService().Get(EnumIncomeTaxDataFrom.ProcessTempData, payroll.ID);
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.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 < _uplodedData.Columns.Count; i++)
|
|||
|
{
|
|||
|
oIncomeTax = TaxMergeMaster.Extract(oTaxMergeMasters, EnumTaxMergeType.TaxAdjustItem, columnDefinition.SelectedItemOneID);
|
|||
|
|
|||
|
|
|||
|
if (oIncomeTax == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create(_uplodedData.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(_uplodedData.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[_uplodedData.Columns[i].ColumnName].ToString(), out nAmount) == false)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create(_uplodedData.Columns[i].ColumnName, nRow, _uplodedData.Columns[i].ColumnName + " contains Invalid value:" + dr[_uplodedData.Columns[i].ColumnName].ToString(), oemployee.EmployeeNo, oemployee.Name));
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
IncomeTax oNewItem = new IncomeTaxService().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)
|
|||
|
_incomeTaxes.Add(oIncomeTax);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (_errorOrSuccessList.Count == 0)
|
|||
|
{
|
|||
|
new IncomeTaxService().Save(_incomeTaxes, EnumIncomeTaxDataFrom.ProcessTempData);
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occered on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void ImportITChallan(DataUploadColumnDefinition _columnDefinition)
|
|||
|
{
|
|||
|
List<Employee> oemployees = new EmployeeService().GetAllEmps();
|
|||
|
TaxChallan oTaxChallan = null;
|
|||
|
_TaxChallans = new List<TaxChallan>();
|
|||
|
Employee oemployee = null;
|
|||
|
int nRow = 0;
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
oemployee = oemployees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr["Employee No"].ToString(); });
|
|||
|
if (oemployee != null)
|
|||
|
{
|
|||
|
oTaxChallan = new TaxChallan();
|
|||
|
oTaxChallan.EmployeeID = oemployee.ID;
|
|||
|
oTaxChallan.SalaryMonthly = Convert.ToDateTime(dr["Month"]);
|
|||
|
oTaxChallan.DepositDate = Convert.ToDateTime(dr["Month"]);
|
|||
|
oTaxChallan.TaxParameterID = _columnDefinition.SelectedItemOneID;
|
|||
|
oTaxChallan.Amount = Convert.ToDouble(dr["Amount"]);
|
|||
|
oTaxChallan.ChallanNo = Convert.ToString(dr["ChallanNo"]);
|
|||
|
_TaxChallans.Add(oTaxChallan);
|
|||
|
}
|
|||
|
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee not found for in the existing data"));
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occured on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
public void ImportSalaryComponent(DataUploadColumnDefinition _columnDefinition)
|
|||
|
{
|
|||
|
List<Employee> oemployees = new EmployeeService().Get(EnumEmployeeStatus.Live, this._payrollTypeID);
|
|||
|
List<SalaryMonthlyDetail> osalaryDetails = new List<SalaryMonthlyDetail>();
|
|||
|
List<IncomeTax> incomeTaxes = new List<IncomeTax>();
|
|||
|
PayrollType ptype = new PayrollTypeService().Get(this._payrollTypeID);
|
|||
|
|
|||
|
Employee oemployee = null;
|
|||
|
int nRow = 0;
|
|||
|
double tempAmount = 0;
|
|||
|
List<SalaryMonthly> salaries = new SalaryMonthlyService().Get(ptype.NextPayProcessDate, this._payrollTypeID);
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
oemployee = oemployees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr["EmployeeNo"].ToString(); });
|
|||
|
|
|||
|
EnumSalaryItemCode itemCode = (EnumSalaryItemCode)Convert.ToInt32(dr["ItemCode"]);
|
|||
|
EnumSalaryGroup groupCode = (EnumSalaryGroup)Convert.ToInt32(dr["ItemGroup"]);
|
|||
|
int ItemID = (int)Convert.ToInt32(dr["ItemID"]);
|
|||
|
if (oemployee != null)
|
|||
|
{
|
|||
|
SalaryMonthly oMonthly;
|
|||
|
oMonthly = salaries.Find(x => x.EmployeeID == oemployee.ID);
|
|||
|
if (oMonthly == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["EmployeeNo"].ToString() + ")" + " salary not yet processed."));
|
|||
|
continue;
|
|||
|
}
|
|||
|
SalaryMonthlyDetail oDetail = oMonthly.Details.Find(delegate (SalaryMonthlyDetail oSMD) { return oSMD.ItemCode == itemCode && oSMD.itemGroupCode == groupCode && oSMD.ItemID == ItemID; });
|
|||
|
if (oDetail == null)
|
|||
|
{
|
|||
|
oDetail = new SalaryMonthlyDetail();
|
|||
|
oDetail.SalaryMonthlyID = oMonthly.Details[0].SalaryMonthlyID;
|
|||
|
oDetail.itemGroupCode = groupCode;
|
|||
|
oDetail.ItemID = ItemID;
|
|||
|
oDetail.ItemCode = itemCode;
|
|||
|
oDetail.CalculatedAmount = 0;
|
|||
|
|
|||
|
//oDetail.Description
|
|||
|
SalaryMonthlyDetail gitem = oMonthly.Details.Find(delegate (SalaryMonthlyDetail oSMD) { return oSMD.ItemCode == itemCode && oSMD.ItemID == ItemID; });
|
|||
|
if (gitem == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["EmployeeNo"].ToString() + ")" + " salary component not foun"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
oDetail.Description = gitem.Description;
|
|||
|
oDetail.Position = gitem.Position;
|
|||
|
oDetail.SupportID = gitem.SupportID;
|
|||
|
oDetail.ChangedAmount = Convert.ToDouble(dr["Amount"]);
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
tempAmount = oDetail.ChangedAmount;
|
|||
|
oDetail.ChangedAmount = Convert.ToDouble(dr["Amount"]);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
osalaryDetails.Add(oDetail);
|
|||
|
|
|||
|
SalaryMonthlyDetail onetpaydetail = oMonthly.Details.Find(delegate (SalaryMonthlyDetail oSMD) { return oSMD.ItemCode == EnumSalaryItemCode.Net_Payable && oSMD.itemGroupCode == EnumSalaryGroup.OtherItem && oSMD.ItemID == (int)EnumSalaryItemCode.Net_Payable; });
|
|||
|
|
|||
|
if (onetpaydetail == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "net pay item not found"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
// if detail not found, generate an errror and continue
|
|||
|
// same way, get the net pay
|
|||
|
// if net pay item not found, generate an error
|
|||
|
//SalaryMonthlyDetail onetpaydetail = _SalaryMonthly.Details.Find(
|
|||
|
// if net pay goes negative, generate an error
|
|||
|
|
|||
|
if (groupCode == EnumSalaryGroup.Gross || groupCode == EnumSalaryGroup.Arrear)
|
|||
|
{
|
|||
|
onetpaydetail.ChangedAmount = onetpaydetail.ChangedAmount - tempAmount + oDetail.ChangedAmount;
|
|||
|
osalaryDetails.Add(onetpaydetail);
|
|||
|
}
|
|||
|
else if (groupCode == EnumSalaryGroup.Deductions || groupCode == EnumSalaryGroup.UnauthLeave)
|
|||
|
{
|
|||
|
onetpaydetail.ChangedAmount = onetpaydetail.ChangedAmount + tempAmount - oDetail.ChangedAmount;
|
|||
|
osalaryDetails.Add(onetpaydetail);
|
|||
|
}
|
|||
|
|
|||
|
if (onetpaydetail.ChangedAmount <= 0)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "net pay can't be less then zero"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
// if the item is tax item, update tax card deducted column.
|
|||
|
if (itemCode == EnumSalaryItemCode.Inc_Tax_Deduction)
|
|||
|
{
|
|||
|
IncomeTax otaxItem = new IncomeTax();
|
|||
|
otaxItem.EmployeeID = oemployee.ID;
|
|||
|
otaxItem.ThisMonthAmount = oDetail.ChangedAmount;
|
|||
|
incomeTaxes.Add(otaxItem);
|
|||
|
}
|
|||
|
}
|
|||
|
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "Employee not found for in the existing data"));
|
|||
|
}
|
|||
|
|
|||
|
if (osalaryDetails.Count > 0)
|
|||
|
{
|
|||
|
new SalaryMonthlyService().UpdateDetail(osalaryDetails, incomeTaxes);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occured on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
private static DataTable ExtractFromExcel(System.IO.Stream fileStream, string sheetName = "")
|
|||
|
{
|
|||
|
ImportHelper iHelper = new ImportHelper();
|
|||
|
DataSet dDataSet = iHelper.Import(ImportHelper.Formats.Excel, fileStream, true);
|
|||
|
try
|
|||
|
{
|
|||
|
return dDataSet.Tables[0].Copy();
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception)
|
|||
|
{
|
|||
|
if (string.IsNullOrEmpty(sheetName))
|
|||
|
{
|
|||
|
throw new Exception("No sheet Found in Excel");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
throw new Exception("Could not Find sheet with name:" + sheetName);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#region Import Employee Profile Info
|
|||
|
public void ImportEmployeeProfileInfo()
|
|||
|
{
|
|||
|
int nRow = 0;
|
|||
|
HREmployee oHREmployee = null;
|
|||
|
List<HREmployee> oHREmployees = new List<HREmployee>();
|
|||
|
List<HREmployee> oemployees = new HREmployeeService().GetWithPayrollType(_payrollTypeID);
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow += 1;
|
|||
|
oHREmployee = oemployees.Find(item => item.EmployeeNo == dr["Employee No"].ToString().Trim());
|
|||
|
if (oHREmployee != null)
|
|||
|
{
|
|||
|
oHREmployee.EmailAddress = dr["Email"].ToString().Trim() != string.Empty ? dr["Email"].ToString().Trim() : string.Empty;
|
|||
|
oHREmployee.MobileNo = dr["Mobile"].ToString().Trim() != string.Empty ? dr["Mobile"].ToString().Trim() : string.Empty;
|
|||
|
switch (dr["Blood Group"].ToString().Trim().ToLower())
|
|||
|
{
|
|||
|
case "ab-": oHREmployee.BloodGroup = EnumBloodGroup.ABNeg; break;
|
|||
|
case "ab+": oHREmployee.BloodGroup = EnumBloodGroup.ABPos; break;
|
|||
|
case "a-": oHREmployee.BloodGroup = EnumBloodGroup.ANeg; break;
|
|||
|
case "a+": oHREmployee.BloodGroup = EnumBloodGroup.APos; break;
|
|||
|
case "b-": oHREmployee.BloodGroup = EnumBloodGroup.BNeg; break;
|
|||
|
case "b+": oHREmployee.BloodGroup = EnumBloodGroup.BPos; break;
|
|||
|
case "o-": oHREmployee.BloodGroup = EnumBloodGroup.ONeg; break;
|
|||
|
case "o+": oHREmployee.BloodGroup = EnumBloodGroup.OPos; break;
|
|||
|
default: oHREmployee.BloodGroup = EnumBloodGroup.None; break;
|
|||
|
}
|
|||
|
oHREmployee.NationalID = dr["National ID"].ToString().Trim() != string.Empty ? dr["National ID"].ToString().Trim() : string.Empty;
|
|||
|
oHREmployee.TinNo = dr["TIN"].ToString().Trim() != string.Empty ? dr["TIN"].ToString().Trim() : string.Empty;
|
|||
|
oHREmployees.Add(oHREmployee);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee not found for in the existing data"));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (_errorOrSuccessList.Count == 0)
|
|||
|
{
|
|||
|
new HREmployeeService().SaveEmployeeProfileUpload(oHREmployees);
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception e)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occurred. Reason:" + e.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Import Employee Basic Information
|
|||
|
public void ImportEmpBasicInfo(int uploadid)
|
|||
|
{
|
|||
|
_columndefinfationService = new DataUploadColumnDefinationService();
|
|||
|
_columndefinfationService.ImportEmpBasicInfo(_uplodedData, _payrollTypeID, _userID);
|
|||
|
_errorOrSuccessList = _columndefinfationService.ErrorOrSuccessList;
|
|||
|
if (_errorOrSuccessList.Count == 0)
|
|||
|
{
|
|||
|
_columndefinfationService.Save(this._payrollTypeID, this._userID, (EnumRegularDataUpload)uploadid);
|
|||
|
}
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
public List<BonusProcess.BonusProcessDetail> GetBonusData(int uploadId, DataUploadColumnDefinition oColumnDefination,
|
|||
|
System.IO.Stream fileStream, int payrollTypeID)
|
|||
|
{
|
|||
|
List<BonusProcess.BonusProcessDetail> bdetails = new List<BonusProcess.BonusProcessDetail>();
|
|||
|
_uplodedData = ExtractFromExcel(fileStream, oColumnDefination.SheetName);
|
|||
|
_errorOrSuccessList = this.ValidateUploadedData(oColumnDefination, _uplodedData);
|
|||
|
oColumnDefination.PayrollTypeID = payrollTypeID;
|
|||
|
this._payrollTypeID = oColumnDefination.PayrollTypeID;
|
|||
|
if (_errorOrSuccessList.Count > 0)
|
|||
|
{
|
|||
|
string str = "";
|
|||
|
_errorOrSuccessList.ForEach(x =>
|
|||
|
{
|
|||
|
str = str + x.RowNo + " " + x.Message;
|
|||
|
});
|
|||
|
|
|||
|
throw new Exception(str);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
PayrollType ptype = new PayrollTypeService().Get(this._payrollTypeID);
|
|||
|
List<Employee> oemployees = new EmployeeService().Get();
|
|||
|
Employee oemployee = null;
|
|||
|
int nRow = 0;
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
BonusProcess.BonusProcessDetail item = new BonusProcess.BonusProcessDetail();
|
|||
|
oemployee = oemployees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr["Employee No"].ToString(); });
|
|||
|
if (oemployee != null)
|
|||
|
{
|
|||
|
item.Employee = oemployee;
|
|||
|
item.EmployeeID = oemployee.ID;
|
|||
|
item.BasicSalary = oemployee.BasicSalary;
|
|||
|
item.GrossSalary = oemployee.GrossSalary;
|
|||
|
item.BonusAmount = dr["Amount"].ToString() != string.Empty ? Convert.ToDouble(dr["Amount"]) : 0.0;
|
|||
|
item.BonusAmount = GlobalFunctions.Round(item.BonusAmount);
|
|||
|
item.ChangeBonusAmount = item.BonusAmount;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
throw new ServiceException("Employee not found:" + nRow + " Reason:" + dr["Employee No"].ToString());
|
|||
|
}
|
|||
|
bdetails.Add(item);
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occurred on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
|
|||
|
return bdetails;
|
|||
|
}
|
|||
|
#region Import Employee Individual Allowence
|
|||
|
|
|||
|
public void ImportEmpIndividualAllowanceDeduction(DataUploadColumnDefinition _columnDefinition, EnumAllowOrDeduct type)
|
|||
|
{
|
|||
|
List<ADParameterEmployee> oadparamemployees = new List<ADParameterEmployee>();
|
|||
|
PayrollType ptype = new PayrollTypeService().Get(this._payrollTypeID);
|
|||
|
List<Employee> oemployees = new EmployeeService().Get();
|
|||
|
SystemInformation sysInfo = new SystemInformationService().Get();
|
|||
|
List<ADParameter> oadparameters = new ADParameterService().GetWithDetail(EnumStatus.Active, _payrollTypeID);
|
|||
|
Employee oemployee = null;
|
|||
|
ADParameterEmployee oadparamemp = null;
|
|||
|
List<AllowanceDeduction> allows = new AllowanceDeductionService().Get(EnumStatus.Regardless, this._payrollTypeID);
|
|||
|
int nRow = 0;
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
oemployee = oemployees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr["Employee No"].ToString(); });
|
|||
|
if (oemployee != null)
|
|||
|
{
|
|||
|
oadparamemp = new ADParameterEmployee();
|
|||
|
oadparamemp.EmployeeID = oemployee.ID;
|
|||
|
//if (_columnDefinition.SelectedItemOneID)
|
|||
|
//oadparamemp.FormDate = Convert.ToDateTime(dr["From Date"]);
|
|||
|
//oadparamemp.TillDate = Convert.ToDateTime(dr["Till Date"]);
|
|||
|
if (dr["Amount"].ToString() == string.Empty)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Amount can not be Empty" + " Row : ", nRow, "Amount can not be Empty", oemployee.EmployeeNo, oemployee.Name));
|
|||
|
continue;
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
oadparamemp.MonthlyAmount = dr["Amount"].ToString() != string.Empty ? Convert.ToDouble(dr["Amount"]) : 0.0;
|
|||
|
oadparamemp.AllowDeductID = (int)_columnDefinition.uploadItemID; //ID.FromInteger(Convert.ToInt32(EnumAllowOrDeduct.Deduction));
|
|||
|
|
|||
|
var allow = allows.FirstOrDefault(x => x.ID == oadparamemp.AllowDeductID);
|
|||
|
|
|||
|
if (oemployee.GradeID == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Grade.", nRow, "(" + dr["Grade"].ToString() + ")" + "Grade Id not found in the current context", oemployee.EmployeeNo, oemployee.Name));
|
|||
|
continue;
|
|||
|
}
|
|||
|
List<ADParameter> oparamters = oadparameters.FindAll(x => x.AllowDeductID == oadparamemp.AllowDeductID);
|
|||
|
ADParameter oparamter = new ADParameterService().GetApplicableParameter(oemployee, oemployee.GradeID ?? -1, oadparameters, oadparamemp.AllowDeductID);
|
|||
|
if (oparamter == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No :" + dr["Employee No"].ToString() + " Row : ", nRow, "Employee applicable parameter not found.", oemployee.EmployeeNo, oemployee.Name));
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
oadparamemp.ADParameterID = oparamter.ID;
|
|||
|
oadparamemp.Periodicity = oparamter.Periodicity;
|
|||
|
|
|||
|
|
|||
|
if (oadparamemp.Periodicity == EnumPeriodicity.OneOff)
|
|||
|
{
|
|||
|
oadparamemp.FormDate = GlobalFunctions.FirstDateOfMonth(ptype.NextPayProcessDate);
|
|||
|
oadparamemp.TillDate = ptype.NextPayProcessDate;
|
|||
|
}
|
|||
|
else if (oadparamemp.Periodicity == EnumPeriodicity.Monthly && oparamter.EntitleType == EnumEntitleType.Individual)
|
|||
|
{
|
|||
|
// from date can't prior to fist date of current month
|
|||
|
// till date can't be less to from date
|
|||
|
// from date can't be greater to last date of current month
|
|||
|
if (dr["From Date"].ToString() == "")
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("From Date Can't be Empty" + " Row : ", nRow, "From date can not be Empty", oemployee.EmployeeNo, oemployee.Name));
|
|||
|
continue;
|
|||
|
}
|
|||
|
if (dr["From Date"].ToString() != "" && Convert.ToDateTime(dr["From Date"]) <
|
|||
|
GlobalFunctions.FirstDateOfMonth(ptype.NextPayProcessDate) && allow.AllowOrDeductType != EnumAllowOrDeduct.Allowance)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("From Date :" + dr["From Date"].ToString() + " Row : ", nRow, "From date can not be less than first date of current month", oemployee.EmployeeNo, oemployee.Name));
|
|||
|
continue;
|
|||
|
}
|
|||
|
if (dr["From Date"].ToString() != "" && Convert.ToDateTime(dr["From Date"]) >
|
|||
|
GlobalFunctions.LastDateOfMonth(ptype.NextPayProcessDate))
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("From Date :" + dr["From Date"].ToString() + " Row : ", nRow, "From date can not be greater than last date of current month", oemployee.EmployeeNo, oemployee.Name));
|
|||
|
continue;
|
|||
|
}
|
|||
|
if (dr["Till Date"].ToString() != "" && Convert.ToDateTime(dr["Till Date"]) <
|
|||
|
Convert.ToDateTime(dr["From Date"]))
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Till Date :" + dr["Till Date"].ToString() + " Row : ", nRow, "Till date can not be less than From date", oemployee.EmployeeNo, oemployee.Name));
|
|||
|
continue;
|
|||
|
}
|
|||
|
oadparamemp.FormDate = dr["From Date"].ToString() != "" ? Convert.ToDateTime(dr["From Date"]) :
|
|||
|
GlobalFunctions.FirstDateOfMonth(ptype.NextPayProcessDate);
|
|||
|
if (dr["Till Date"].ToString() != "")
|
|||
|
oadparamemp.TillDate = Convert.ToDateTime(dr["Till Date"]);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No :" + dr["Employee No"].ToString() + " Row : ", nRow, "Employee applicable parameter is defined greade wise"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
//if (oparamter.MaxAmount < oadparamemp.MonthlyAmount && oparamter.IsFractionateApplicable == true)
|
|||
|
// oadparamemp.MonthlyAmount = oadparamemp.MonthlyAmount - oparamter.MaxAmount;
|
|||
|
//else
|
|||
|
if (oparamter.MaxAmount != 0 && oparamter.MaxAmount < oadparamemp.MonthlyAmount)
|
|||
|
oadparamemp.MonthlyAmount = oparamter.MaxAmount;
|
|||
|
if (oparamter.MinAmount != 0 && oparamter.MinAmount > oadparamemp.MonthlyAmount)
|
|||
|
oadparamemp.MonthlyAmount = oparamter.MinAmount;
|
|||
|
|
|||
|
oadparamemp.ADEmpType = EnumADEmpType.AppliedToIndividual;
|
|||
|
oadparamemp.Arreartype = EnumArrearType.NotPresent;
|
|||
|
oadparamemp.ValueType = EnumValueType.Amount;
|
|||
|
oadparamemp.CreatedBy = _userID;
|
|||
|
oadparamemp.ModifiedDate = null;
|
|||
|
oadparamemp.ModifiedBy = null;
|
|||
|
oadparamemployees.Add(oadparamemp);
|
|||
|
}
|
|||
|
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee not found for in the existing data"));
|
|||
|
}
|
|||
|
|
|||
|
if (_errorOrSuccessList.Count == 0)
|
|||
|
{
|
|||
|
new ADParameterEmployeeService().Save(oadparamemployees, ptype.LastPayProcessDate);
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occurred on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
public void ImportEmpIndvAllowDeductExcess(DataUploadColumnDefinition _columnDefinition, EnumAllowOrDeduct type)
|
|||
|
{
|
|||
|
List<ADParameterEmployee> oadparamemployees = new List<ADParameterEmployee>();
|
|||
|
PayrollType ptype = new PayrollTypeService().Get(this._payrollTypeID);
|
|||
|
List<Employee> oemployees = new EmployeeService().Get();
|
|||
|
SystemInformation sysInfo = new SystemInformationService().Get();
|
|||
|
List<ADParameter> oadparameters = new ADParameterService().GetWithDetail(EnumStatus.Active, _payrollTypeID);
|
|||
|
Employee oemployee = null;
|
|||
|
ADParameterEmployee oadparamemp = null;
|
|||
|
List<AllowanceDeduction> allows = new AllowanceDeductionService().Get(EnumStatus.Regardless, this._payrollTypeID);
|
|||
|
int nRow = 0;
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
oemployee = oemployees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr["Employee No"].ToString(); });
|
|||
|
if (oemployee != null)
|
|||
|
{
|
|||
|
oadparamemp = new ADParameterEmployee();
|
|||
|
oadparamemp.EmployeeID = oemployee.ID;
|
|||
|
//if (_columnDefinition.SelectedItemOneID)
|
|||
|
//oadparamemp.FormDate = Convert.ToDateTime(dr["From Date"]);
|
|||
|
//oadparamemp.TillDate = Convert.ToDateTime(dr["Till Date"]);
|
|||
|
if (dr["Amount"].ToString() == string.Empty)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Amount can not be Empty" + " Row : ", nRow, "Amount can not be Empty", oemployee.EmployeeNo, oemployee.Name));
|
|||
|
continue;
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
oadparamemp.MonthlyAmount = dr["Amount"].ToString() != string.Empty ? Convert.ToDouble(dr["Amount"]) : 0.0;
|
|||
|
oadparamemp.AllowDeductID = (int)_columnDefinition.uploadItemID; //ID.FromInteger(Convert.ToInt32(EnumAllowOrDeduct.Deduction));
|
|||
|
|
|||
|
var allow = allows.FirstOrDefault(x => x.ID == oadparamemp.AllowDeductID);
|
|||
|
|
|||
|
if (oemployee.GradeID == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Grade.", nRow, "(" + dr["Grade"].ToString() + ")" + "Grade Id not found in the current context", oemployee.EmployeeNo, oemployee.Name));
|
|||
|
continue;
|
|||
|
}
|
|||
|
List<ADParameter> oparamters = oadparameters.FindAll(x => x.AllowDeductID == oadparamemp.AllowDeductID);
|
|||
|
ADParameter oparamter = new ADParameterService().GetApplicableParameter(oemployee, oemployee.GradeID ?? -1, oadparameters, oadparamemp.AllowDeductID);
|
|||
|
if (oparamter == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No :" + dr["Employee No"].ToString() + " Row : ", nRow, "Employee applicable parameter not found.", oemployee.EmployeeNo, oemployee.Name));
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
if (oparamter.MaxAmount < oadparamemp.MonthlyAmount)
|
|||
|
oadparamemp.MonthlyAmount = oadparamemp.MonthlyAmount - oparamter.MaxAmount;
|
|||
|
oadparamemp.ADParameterID = oparamter.ID;
|
|||
|
oadparamemp.Periodicity = oparamter.Periodicity;
|
|||
|
//if(oadparamemp.AllowDeductID!=ID.FromInteger(14))
|
|||
|
//{
|
|||
|
if (oadparamemp.Periodicity == EnumPeriodicity.OneOff)
|
|||
|
{
|
|||
|
oadparamemp.FormDate = GlobalFunctions.FirstDateOfMonth(ptype.NextPayProcessDate);
|
|||
|
oadparamemp.TillDate = ptype.NextPayProcessDate;
|
|||
|
}
|
|||
|
else if (oadparamemp.Periodicity == EnumPeriodicity.Monthly && oparamter.EntitleType == EnumEntitleType.Individual)
|
|||
|
{
|
|||
|
// from date can't prior to fist date of current month
|
|||
|
// till date can't be less to from date
|
|||
|
// from date can't be greater to last date of current month
|
|||
|
if (dr["From Date"].ToString() == "")
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("From Date Can't be Empty" + " Row : ", nRow, "From date can not be Empty", oemployee.EmployeeNo, oemployee.Name));
|
|||
|
continue;
|
|||
|
}
|
|||
|
if (dr["From Date"].ToString() != "" && Convert.ToDateTime(dr["From Date"]) <
|
|||
|
GlobalFunctions.FirstDateOfMonth(ptype.NextPayProcessDate) && allow.AllowOrDeductType != EnumAllowOrDeduct.Allowance)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("From Date :" + dr["From Date"].ToString() + " Row : ", nRow, "From date can not be less than first date of current month", oemployee.EmployeeNo, oemployee.Name));
|
|||
|
continue;
|
|||
|
}
|
|||
|
if (dr["From Date"].ToString() != "" && Convert.ToDateTime(dr["From Date"]) >
|
|||
|
GlobalFunctions.LastDateOfMonth(ptype.NextPayProcessDate))
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("From Date :" + dr["From Date"].ToString() + " Row : ", nRow, "From date can not be greater than last date of current month", oemployee.EmployeeNo, oemployee.Name));
|
|||
|
continue;
|
|||
|
}
|
|||
|
if (dr["Till Date"].ToString() != "" && Convert.ToDateTime(dr["Till Date"]) <
|
|||
|
Convert.ToDateTime(dr["From Date"]))
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Till Date :" + dr["Till Date"].ToString() + " Row : ", nRow, "Till date can not be less than From date", oemployee.EmployeeNo, oemployee.Name));
|
|||
|
continue;
|
|||
|
}
|
|||
|
oadparamemp.FormDate = dr["From Date"].ToString() != "" ? Convert.ToDateTime(dr["From Date"]) :
|
|||
|
GlobalFunctions.FirstDateOfMonth(ptype.NextPayProcessDate);
|
|||
|
if (dr["Till Date"].ToString() != "")
|
|||
|
oadparamemp.TillDate = Convert.ToDateTime(dr["Till Date"]);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No :" + dr["Employee No"].ToString() + " Row : ", nRow, "Employee applicable parameter is defined greade wise"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
//}
|
|||
|
|
|||
|
oadparamemp.ADEmpType = EnumADEmpType.AppliedToIndividual;
|
|||
|
oadparamemp.Arreartype = EnumArrearType.NotPresent;
|
|||
|
oadparamemp.ValueType = EnumValueType.Amount;
|
|||
|
oadparamemp.CreatedBy = _userID;
|
|||
|
oadparamemp.ModifiedDate = null;
|
|||
|
oadparamemp.ModifiedBy = null;
|
|||
|
oadparamemployees.Add(oadparamemp);
|
|||
|
}
|
|||
|
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee not found for in the existing data"));
|
|||
|
}
|
|||
|
|
|||
|
if (_errorOrSuccessList.Count == 0)
|
|||
|
{
|
|||
|
new ADParameterEmployeeService().Save(oadparamemployees, ptype.LastPayProcessDate);
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occurred on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Taxinvestment
|
|||
|
|
|||
|
public void ImportAitData(DataUploadColumnDefinition _columnDefination)
|
|||
|
{
|
|||
|
List<Employee> employees = new EmployeeService().Get();
|
|||
|
SystemInformation sysInfo = new SystemInformationService().Get();
|
|||
|
// EmpTaxAit empTaxAit = null;
|
|||
|
_EmpTaxAitList = new List<EmpTaxAit>();
|
|||
|
Employee oemployee = null;
|
|||
|
int nRow = 0;
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
oemployee = employees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr["Employee No"].ToString(); });
|
|||
|
if (oemployee != null)
|
|||
|
{
|
|||
|
EmpTaxAit empTaxAit = new EmpTaxAit();
|
|||
|
empTaxAit.EmployeeId = oemployee.ID;
|
|||
|
empTaxAit.TaxParamId = (int)_columnDefination.uploadItemID;
|
|||
|
empTaxAit.CheckedDate = DateTime.Today;
|
|||
|
empTaxAit.CheckedBy = this._userID;
|
|||
|
empTaxAit.Amount = Convert.ToDouble(dr["Amount"]);
|
|||
|
_EmpTaxAitList.Add(empTaxAit);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee not found for in the existing data"));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (_errorOrSuccessList.Count == 0)
|
|||
|
{
|
|||
|
foreach (EmpTaxAit item in _EmpTaxAitList)
|
|||
|
{
|
|||
|
new EmpTaxAitService().Save(item);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occurred on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void ImportTaxInvestmentData(DataUploadColumnDefinition _columnDefination, int Type)
|
|||
|
{
|
|||
|
List<Employee> employees = new EmployeeService().Get();
|
|||
|
SystemInformation sysInfo = new SystemInformationService().Get();
|
|||
|
EmployeeTaxInvestment oEmployeeTaxInvestment = null;
|
|||
|
_EmployeeTaxInvestments = new List<EmployeeTaxInvestment>();
|
|||
|
Employee oemployee = null;
|
|||
|
int nRow = 0;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
oemployee = employees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr["Employee No"].ToString(); });
|
|||
|
if (oemployee != null)
|
|||
|
{
|
|||
|
oEmployeeTaxInvestment = new EmployeeTaxInvestment();
|
|||
|
oEmployeeTaxInvestment.EntryFrom = EnumTaxInvestment.Admin;
|
|||
|
oEmployeeTaxInvestment.submitStatus = EnumTaxInvestmentStatus.Approve;
|
|||
|
oEmployeeTaxInvestment.EmployeeID = oemployee.ID;
|
|||
|
oEmployeeTaxInvestment.TypeID = _columnDefination.SelectedItemTwoID;
|
|||
|
oEmployeeTaxInvestment.TaxparameterId = _columnDefination.SelectedItemOneID;
|
|||
|
oEmployeeTaxInvestment.Amount = Convert.ToDouble(dr["Amount"]);
|
|||
|
oEmployeeTaxInvestment.CreatedBy = this._userID;
|
|||
|
oEmployeeTaxInvestment.CreatedDate = DateTime.Today;
|
|||
|
_EmployeeTaxInvestments.Add(oEmployeeTaxInvestment);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee not found for in the existing data"));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (_errorOrSuccessList.Count == 0)
|
|||
|
{
|
|||
|
new EmployeeTaxInvestmentService().AdminSave(_EmployeeTaxInvestments);
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occurred on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Import Individual Employee Deductions
|
|||
|
//public void ImportEmpIndividualDeduction(DataUploadColumnDefinition _columnDefinition)
|
|||
|
//{
|
|||
|
// List<ADParameterEmployee> oadparamemployees = new List<ADParameterEmployee>();
|
|||
|
// List<Employee> oemployees = new EmployeeService().Get();
|
|||
|
// SystemInformation sysInfo = new SystemInformationService().Get();
|
|||
|
// List<ADParameter> _adparams = new ADParameterService().Get(EnumStatus.Active, EnumAllowOrDeduct.Deduction, _payrollTypeID);
|
|||
|
// Employee oemployee = null;
|
|||
|
// oadparamemployees = new List<ADParameterEmployee>();
|
|||
|
// ADParameterEmployee oadparamemp = null;
|
|||
|
// int nRow = 0;
|
|||
|
// try
|
|||
|
// {
|
|||
|
// foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
// {
|
|||
|
// nRow = nRow + 1;
|
|||
|
// oemployee = oemployees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr["Employee No"].ToString(); });
|
|||
|
// if (oemployee != null)
|
|||
|
// {
|
|||
|
// oadparamemp = new ADParameterEmployee();
|
|||
|
// oadparamemp.EmployeeID = oemployee.ID;
|
|||
|
// //oadparamemp.FormDate = Convert.ToDateTime(dr["From Date"]);
|
|||
|
// //oadparamemp.TillDate = Convert.ToDateTime(dr["Till Date"]);
|
|||
|
// oadparamemp.MonthlyAmount = dr["Amount"].ToString() != string.Empty ? Convert.ToDouble(dr["Amount"]) : 0.0;
|
|||
|
// oadparamemp.AllowDeductID = _columnDefinition.SelectedItemOneID; //ID.FromInteger(Convert.ToInt32(EnumAllowOrDeduct.Deduction));
|
|||
|
// if (oemployee.GradeID == null)
|
|||
|
// {
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No :" + oemployee.EmployeeNo + " Row : ", nRow, "Employee grade id not found."));
|
|||
|
|
|||
|
// continue;
|
|||
|
// }
|
|||
|
// List<ADParameter> oparamters = new ADParameterService().Get(EnumStatus.Active, oadparamemp.AllowDeductID);
|
|||
|
// ADParameter oparamter = new ADParameterService().GetApplicableParameter(oemployee, oemployee.GradeID ?? -1, oparamters, oadparamemp.AllowDeductID);
|
|||
|
// if (oparamter == null)
|
|||
|
// {
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee applicable parameter not found."));
|
|||
|
// continue;
|
|||
|
// }
|
|||
|
// oadparamemp.ADParameterID = oparamter.ID;
|
|||
|
// oadparamemp.Periodicity = oparamter.Periodicity;
|
|||
|
|
|||
|
// if (oadparamemp.Periodicity == EnumPeriodicity.OneOff)
|
|||
|
// {
|
|||
|
// oadparamemp.FormDate = GlobalFunctions.FirstDateOfMonth(sysInfo.CurrentSysInfo.NextPayProcessDate);
|
|||
|
// oadparamemp.TillDate = sysInfo.CurrentSysInfo.NextPayProcessDate;
|
|||
|
// }
|
|||
|
// else if (oadparamemp.Periodicity == EnumPeriodicity.Monthly && oparamter.EntitleType == EnumEntitleType.Individual)
|
|||
|
// {
|
|||
|
// // from date can't prior to fist date of current month
|
|||
|
// // till date can't be less to from date
|
|||
|
// // from date can't be greater to last date of current month
|
|||
|
// if (dr["From Date"].ToString() != "" && Convert.ToDateTime(dr["From Date"]) < GlobalFunctions.FirstDateOfMonth(sysInfo.CurrentSysInfo.NextPayProcessDate))
|
|||
|
// {
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("From Date :" + dr["From Date"].ToString() + " Row : ", nRow, "From date can not be less than first date of current month"));
|
|||
|
// continue;
|
|||
|
// }
|
|||
|
// if (dr["From Date"].ToString() != "" && Convert.ToDateTime(dr["From Date"]) > GlobalFunctions.LastDateOfMonth(sysInfo.CurrentSysInfo.NextPayProcessDate))
|
|||
|
// {
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("From Date :" + dr["From Date"].ToString() + " Row : ", nRow, "From date can not be greater than last date of current month"));
|
|||
|
// continue;
|
|||
|
// }
|
|||
|
// if (dr["Till Date"].ToString() != "" && Convert.ToDateTime(dr["Till Date"]) < Convert.ToDateTime(dr["From Date"]))
|
|||
|
// {
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Till Date :" + dr["Till Date"].ToString() + " Row : ", nRow, "Till date can not be less than From date"));
|
|||
|
// continue;
|
|||
|
// }
|
|||
|
// oadparamemp.FormDate = dr["From Date"].ToString() != "" ? Convert.ToDateTime(dr["From Date"]) : GlobalFunctions.FirstDateOfMonth(sysInfo.CurrentSysInfo.NextPayProcessDate);
|
|||
|
// if (dr["Till Date"].ToString() != "")
|
|||
|
// oadparamemp.TillDate = Convert.ToDateTime(dr["Till Date"]);
|
|||
|
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No :" + dr["Employee No"].ToString() + " Row : ", nRow, "Employee applicable parameter is defined greade wise"));
|
|||
|
// continue;
|
|||
|
// }
|
|||
|
|
|||
|
// oadparamemp.ADEmpType = EnumADEmpType.AppliedToIndividual;
|
|||
|
// oadparamemp.Arreartype = EnumArrearType.NotPresent;
|
|||
|
// oadparamemployees.Add(oadparamemp);
|
|||
|
// }
|
|||
|
// else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee not found for in the existing data"));
|
|||
|
// }
|
|||
|
// }
|
|||
|
// catch (Exception ex)
|
|||
|
// {
|
|||
|
// throw new ServiceException("Error occurred on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
// }
|
|||
|
//}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Import Employee Bank Account Information
|
|||
|
public void ImportEmpBankAccount(DataUploadColumnDefinition _columnDefinition)
|
|||
|
{
|
|||
|
List<Employee> oemployees = new EmployeeService().GetAllEmps(this._payrollTypeID);
|
|||
|
Employee oemployee = null;
|
|||
|
SystemInformation sysInfo = new SystemInformationService().Get();
|
|||
|
List<Branch> obranches = new BranchService().Get(EnumStatus.Regardless, this._payrollTypeID);
|
|||
|
Branch obranch = null;
|
|||
|
List<EmployeeBankAccount> oempbankaccounts = new List<EmployeeBankAccount>();
|
|||
|
EmployeeBankAccount oempbankaccount = null;
|
|||
|
PayrollType ptype = new PayrollTypeService().Get(this._payrollTypeID);
|
|||
|
int nRow = 0;
|
|||
|
List<Bank> banks = new BankService().Get();
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
oemployee = oemployees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr["Employee No"].ToString(); });
|
|||
|
if (oemployee != null)
|
|||
|
{
|
|||
|
//if (oemployee.Status != EnumEmployeeStatus.Live)
|
|||
|
//{
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee", nRow, "Employee is not Live"));
|
|||
|
// continue;
|
|||
|
//}
|
|||
|
|
|||
|
oempbankaccount = new EmployeeBankAccount();
|
|||
|
oempbankaccount.EmployeeID = oemployee.ID;
|
|||
|
|
|||
|
Bank obank = banks.Find(delegate (Bank item) { return item.Name == dr["Bank Name"].ToString(); });
|
|||
|
if (obank == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Bank Name", nRow, "Bank not found in the existing Banks"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
obranch = obranches.Find(delegate (Branch item) { return item.Name == dr["Branch Name"].ToString() && item.BankID == obank.ID; });
|
|||
|
if (obranch != null)
|
|||
|
{
|
|||
|
oempbankaccount.BranchID = obranch.ID;
|
|||
|
}
|
|||
|
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Branch Name", nRow, "Branch name not found in the existing branches"));
|
|||
|
|
|||
|
oempbankaccount.EffectDate = GlobalFunctions.FirstDateOfMonth(ptype.NextPayProcessDate);
|
|||
|
|
|||
|
|
|||
|
oempbankaccount.AccountNo = dr["Account No"].ToString();
|
|||
|
oempbankaccounts.Add(oempbankaccount);
|
|||
|
}
|
|||
|
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee not found for in the existing data"));
|
|||
|
}
|
|||
|
|
|||
|
if (_errorOrSuccessList.Count == 0)
|
|||
|
{
|
|||
|
new EmployeeBankAccountService().Save(oempbankaccounts);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occured on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Import Exception Data
|
|||
|
public void ImportException(int uploadId, DataUploadColumnDefinition oColumnDefinition)
|
|||
|
{
|
|||
|
_uploadException = new DataUploadException();
|
|||
|
_uploadException.UploadException(uploadId, _uplodedData, oColumnDefinition);
|
|||
|
_errorOrSuccessList = _uploadException.ErrorOrSuccessList;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
//public void SaveEmpBasicInformation(int PayrollTypeID)
|
|||
|
//{
|
|||
|
// try
|
|||
|
// {
|
|||
|
// _columndefinfationService = new DataUploadColumnDefinationService();
|
|||
|
// _columndefinfationService.Insert(PayrollTypeID);
|
|||
|
// }
|
|||
|
// catch (Exception ex)
|
|||
|
// {
|
|||
|
// throw new ServiceException(ex.Message);
|
|||
|
// }
|
|||
|
//}
|
|||
|
|
|||
|
|
|||
|
public void Save(List<Category> categorys, List<Grade> grades, List<Department> departments,
|
|||
|
List<Location> locations,
|
|||
|
List<Religion> religions, List<Designation> designations, List<Bank> banks,
|
|||
|
List<Branch> branches, List<Employee> employees, List<AccessCard> oaccessCards, int payrollTypeID, EnumRegularDataUpload uploaid)
|
|||
|
{
|
|||
|
|
|||
|
List<GradeSegment> segments = new GradeSegmentService().Get(EnumStatus.Regardless);
|
|||
|
TransactionContext tc = null;
|
|||
|
_payrollTypeID = payrollTypeID;
|
|||
|
try
|
|||
|
{
|
|||
|
// SubCategoryService.SaveForUpload(tc, subcategorys);
|
|||
|
|
|||
|
if (segments.Count == 0)
|
|||
|
{
|
|||
|
GradeSegment osg = new GradeSegment();
|
|||
|
osg.Code = "001";
|
|||
|
osg.Name = "Default";
|
|||
|
osg.CreatedBy = this._userID;
|
|||
|
osg.CreatedDate = DateTime.Today;
|
|||
|
GradeSegmentService ogSrv = new GradeSegmentService();
|
|||
|
ogSrv.Save(osg);
|
|||
|
grades.ForEach(x => { x.GradeSegmentID = osg.ID; });
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
grades.ForEach(x => { x.GradeSegmentID = segments[0].ID; });
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
List<Category> scategories = new CategoryService().Get(EnumStatus.Regardless, this._payrollTypeID);
|
|||
|
List<Grade> sGrades = new GradeService().Get(EnumStatus.Regardless, this._payrollTypeID);
|
|||
|
List<Location> sLocations = new LocationService().Get(EnumStatus.Regardless, this._payrollTypeID);
|
|||
|
List<Department> sdepartments = new DepartmentService().Get(EnumStatus.Regardless, this._payrollTypeID);
|
|||
|
List<Designation> sdesignation = new DesignationService().Get(EnumStatus.Regardless, this._payrollTypeID);
|
|||
|
List<Religion> sReligions = new ReligionService().Get(EnumStatus.Regardless);
|
|||
|
List<Bank> sBanks = new BankService().Get();
|
|||
|
List<Branch> sBrances = new BranchService().Get(EnumStatus.Regardless, this._payrollTypeID);
|
|||
|
tc = TransactionContext.Begin(true);
|
|||
|
|
|||
|
CategoryService.SaveForUpload(tc, categorys, scategories);
|
|||
|
GradeService.SaveForUpload(tc, grades, sGrades);
|
|||
|
LocationService.SaveForUpload(tc, locations, sLocations);
|
|||
|
ReligionService.SaveForUpload(tc, religions, sReligions);
|
|||
|
DesignationService.SaveForUpload(tc, designations, payrollTypeID, sdesignation);
|
|||
|
DepartmentService.SaveForUpload(tc, departments, sdepartments);
|
|||
|
BankService.SaveForUpload(tc, banks, sBanks);
|
|||
|
BranchService.SaveForUpload(tc, branches, sBrances);
|
|||
|
EmployeeService.SaveForUpload(tc, employees, uploaid);
|
|||
|
|
|||
|
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 ImportAssingedCard(DataUploadColumnDefinition _columnDefinition, int payrollTypeId)
|
|||
|
{
|
|||
|
|
|||
|
List<AccessCard> ocards = new AccessCardService().Get();
|
|||
|
List<Employee> oemps = new EmployeeService().GetAllEmps(this._payrollTypeID);
|
|||
|
List<AccessCard> newCards = new List<AccessCard>();
|
|||
|
List<CardOperation> ops = new List<CardOperation>();
|
|||
|
Employee oemployee = null;
|
|||
|
CardOperation oCardOperation = null;
|
|||
|
int nRow = 0;
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
oemployee = oemps.Find(delegate (Employee emp) { return emp.EmployeeNo == dr["Employee No"].ToString(); });
|
|||
|
if (oemployee != null)
|
|||
|
{
|
|||
|
if (dr["Employee No"].ToString() == string.Empty)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee No not found in the current context"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
string cardNumber = dr["Card No"].ToString();
|
|||
|
AccessCard onewCard = ocards.FirstOrDefault(x => x.CardNumber == cardNumber);
|
|||
|
if (onewCard == null)
|
|||
|
{
|
|||
|
onewCard = new AccessCard();
|
|||
|
onewCard.CardNumber = cardNumber;
|
|||
|
onewCard.TypeID = 1;
|
|||
|
onewCard.Status = EnumCardStatus.Free;
|
|||
|
newCards.Add(onewCard);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
|
|||
|
var cardemp = oemps.FirstOrDefault(x => x.CardID == onewCard.ID);
|
|||
|
if (cardemp != null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No",
|
|||
|
nRow, "(" + cardemp.EmployeeNo + ")" +
|
|||
|
"Employee No assinged to this card" + " " + cardNumber));
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
if (onewCard.Status != EnumCardStatus.Free)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Card No", nRow,
|
|||
|
"(" + onewCard.CardNumber + ")" + " is already assigned to emplolyees"
|
|||
|
+ " " + cardNumber));
|
|||
|
continue;
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
CardOperation op = new CardOperation();
|
|||
|
op.CardNumber = cardNumber;
|
|||
|
op.EmployeeID = oemployee.ID;
|
|||
|
op.Employee = oemployee;
|
|||
|
op.AccessCard = onewCard;
|
|||
|
op.AssignDate = Convert.ToDateTime(dr["Assign Date"].ToString());
|
|||
|
|
|||
|
ops.Add(op);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee not found for in the existing data"));
|
|||
|
}
|
|||
|
|
|||
|
if(this._errorOrSuccessList.Count ==0)
|
|||
|
{
|
|||
|
new CardOperationService().Save(ops, payrollTypeId);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occured on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public void SaveLifeCycle(List<Category> categorys, List<Grade> grades, List<Department> departments,
|
|||
|
List<Location> locations,
|
|||
|
List<Religion> religions, List<Designation> designations, List<Costcenter> crgs,
|
|||
|
List<EmpLifeCycle> lifecycles, int payrollTypeID)
|
|||
|
{
|
|||
|
|
|||
|
TransactionContext tc = null;
|
|||
|
_payrollTypeID = payrollTypeID;
|
|||
|
PayrollType optyp = new PayrollTypeService().Get(_payrollTypeID);
|
|||
|
try
|
|||
|
{
|
|||
|
// SubCategoryService.SaveForUpload(tc, subcategorys);
|
|||
|
if (grades != null)
|
|||
|
{
|
|||
|
List<GradeSegment> segments = new GradeSegmentService().Get(EnumStatus.Regardless);
|
|||
|
if (segments.Count == 0)
|
|||
|
{
|
|||
|
GradeSegment osg = new GradeSegment();
|
|||
|
osg.Code = "001";
|
|||
|
osg.Name = "Default";
|
|||
|
osg.CreatedBy = this._userID;
|
|||
|
osg.CreatedDate = DateTime.Today;
|
|||
|
GradeSegmentService ogSrv = new GradeSegmentService();
|
|||
|
ogSrv.Save(osg);
|
|||
|
grades.ForEach(x => { x.GradeSegmentID = osg.ID; });
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
grades.ForEach(x => { x.GradeSegmentID = segments[0].ID; });
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
List<Grade> sGrades = null;
|
|||
|
if (grades != null) sGrades = new GradeService().Get(EnumStatus.Regardless, _payrollTypeID);
|
|||
|
|
|||
|
List<Location> sLocations = null;
|
|||
|
if (locations != null) sLocations = new LocationService().Get(EnumStatus.Regardless, _payrollTypeID);
|
|||
|
List<Department> sdepartments = null;
|
|||
|
if (departments != null)
|
|||
|
sdepartments = new DepartmentService().Get(EnumStatus.Regardless, _payrollTypeID);
|
|||
|
List<Designation> sdesignation = null;
|
|||
|
if (designations != null) sdesignation = new DesignationService().Get(EnumStatus.Regardless, _payrollTypeID);
|
|||
|
List<Costcenter> scostcenters = null;
|
|||
|
if (crgs != null) scostcenters = new CostcenterService().Get(EnumStatus.Regardless, _payrollTypeID);
|
|||
|
|
|||
|
tc = TransactionContext.Begin(true);
|
|||
|
if (grades != null)
|
|||
|
GradeService.SaveForUpload(tc, grades, sGrades);
|
|||
|
if (locations != null)
|
|||
|
LocationService.SaveForUpload(tc, locations, sLocations);
|
|||
|
if (designations != null)
|
|||
|
DesignationService.SaveForUpload(tc, designations, payrollTypeID, sdesignation);
|
|||
|
if (departments != null)
|
|||
|
DepartmentService.SaveForUpload(tc, departments, sdepartments);
|
|||
|
if (crgs != null)
|
|||
|
CostcenterService.SaveForUpload(tc, crgs, scostcenters);
|
|||
|
|
|||
|
foreach (EmpLifeCycle item in lifecycles)
|
|||
|
{
|
|||
|
if ((item.BasicSalary != null || item.GrossSalary != null) || (item.BasicSalary != 0 || item.GrossSalary != 0)
|
|||
|
&& (item.GradeID != null))
|
|||
|
{
|
|||
|
EmployeeGradeSalary ogs = new EmployeeGradeSalary();
|
|||
|
ogs.BasicSalary = (item.BasicSalary == null) ? 0 : (double)item.BasicSalary;
|
|||
|
ogs.GrossSalary = (item.GrossSalary == null) ? 0 : (double)item.GrossSalary;
|
|||
|
if (item.GradeID == null)
|
|||
|
{
|
|||
|
//if (item.GradeID == null)
|
|||
|
//{
|
|||
|
// throw new Exception("Grade not yet assigned to employee.");
|
|||
|
//}
|
|||
|
ogs.GradeID = (int)item.Employee.GradeID;
|
|||
|
ogs.Increment = item.IncrementNo;
|
|||
|
//ogs.PayScaleDetailID = cbcGrade.SelectedSlab.ID;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
ogs.GradeID = (int)item.GradeID;
|
|||
|
ogs.Increment = item.IncrementNo;
|
|||
|
//ogs.PayScaleDetailID = cbcGrade.SelectedSlab.ID;
|
|||
|
}
|
|||
|
|
|||
|
if (ogs.GrossSalary != 0 && ogs.BasicSalary == 0)
|
|||
|
{
|
|||
|
if(grades == null)
|
|||
|
{
|
|||
|
grades = new List<Grade>();
|
|||
|
grades.Add(new GradeService().Get(ogs.GradeID));
|
|||
|
}
|
|||
|
Grade oGrade = grades.FirstOrDefault(x => x.ID == ogs.GradeID);
|
|||
|
if(oGrade ==null)
|
|||
|
{
|
|||
|
oGrade = new GradeService().Get(ogs.GradeID);
|
|||
|
grades.Add(oGrade);
|
|||
|
}
|
|||
|
if (oGrade == null) throw new Exception("Calculating Basic Salary From Gross where Grade not found.");
|
|||
|
if (oGrade.BasicPercentOfGross == 0)
|
|||
|
throw new Exception(@"Calculating Basic Salary From Gross where Basic-%-Gross is Zero,
|
|||
|
Please set it from Grade Master-Data.");
|
|||
|
ogs.BasicSalary = ogs.GrossSalary * oGrade.BasicPercentOfGross / 100;
|
|||
|
item.BasicSalary = ogs.BasicSalary;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
if (ogs.BasicSalary + ogs.GrossSalary == 0)
|
|||
|
{
|
|||
|
if (item.BasicSalary + item.GrossSalary == 0)
|
|||
|
{
|
|||
|
throw new Exception("Salary(HRBasic/Gross) can\'t be zero.");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (item.BasicSalary != null) ogs.BasicSalary = (double)item.BasicSalary;
|
|||
|
else ogs.BasicSalary = item.Employee.BasicSalary;
|
|||
|
|
|||
|
if (item.GrossSalary != null) ogs.GrossSalary = (double)item.GrossSalary;
|
|||
|
else ogs.GrossSalary = item.Employee.GrossSalary;
|
|||
|
}
|
|||
|
}
|
|||
|
// ogs.increment = Convert.ToInt16(numIncrement.Value);
|
|||
|
ogs.EmployeeID = item.EmployeeID;
|
|||
|
ogs.GradeSalaryTypeID = (int)item.StatusDetailID;
|
|||
|
ogs.EffectDate = item.EffectDate;
|
|||
|
item.EmployeeGradeSalary = ogs;
|
|||
|
}
|
|||
|
new EmpLifeCycleService().Save(tc, item, optyp.NextPayProcessDate, _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 void Save2(List<Department> departments, List<Employee> employees)
|
|||
|
{
|
|||
|
TransactionContext tc = null;
|
|||
|
try
|
|||
|
{
|
|||
|
tc = TransactionContext.Begin(true);
|
|||
|
|
|||
|
|
|||
|
//DepartmentService.SaveForUpload(tc, departments);
|
|||
|
//EmployeeService.SaveDepartment(tc, employees);
|
|||
|
|
|||
|
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 ImportTaxDataInfo(DataUploadColumnDefinition columnDefinition)
|
|||
|
{
|
|||
|
PayrollType ptype = new PayrollTypeService().Get(this._payrollTypeID);
|
|||
|
columnDefinition.uploadItemID = ptype.TaxParamID;
|
|||
|
List<TaxMergeMaster> oTaxMergeMasters = new List<TaxMergeMaster>();
|
|||
|
oTaxMergeMasters = new TaxMergeMasterService().GetbyTaxParameter((int)columnDefinition.uploadItemID, this._payrollTypeID);
|
|||
|
Employee oemployee = null;
|
|||
|
IncomeTax oIncomeTax = null;
|
|||
|
TaxMergeMaster oTaxMergeMaster = null;
|
|||
|
List<Employee> employees = new EmployeeService().GetAllEmps();
|
|||
|
List<ProcessItem> processItems = new ProcessItemService().Get();
|
|||
|
List<IncomeTax> incomeTaxs = new List<IncomeTax>();
|
|||
|
#region Refresh Objects
|
|||
|
int nRow = 0;
|
|||
|
List<IncomeTax> savedData = new IncomeTaxService().Get(EnumIncomeTaxDataFrom.ProcessTempData, this._payrollTypeID);
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.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 < _uplodedData.Columns.Count; i++)
|
|||
|
{
|
|||
|
oIncomeTax = new IncomeTax();
|
|||
|
oTaxMergeMaster = oTaxMergeMasters.Find(delegate (TaxMergeMaster taxMerge)
|
|||
|
{ return taxMerge.Description == _uplodedData.Columns[i].ColumnName; });
|
|||
|
|
|||
|
if (oTaxMergeMaster == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create(_uplodedData.Columns[i].ColumnName, nRow, _uplodedData.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(_uplodedData.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[_uplodedData.Columns[i].ColumnName].ToString(), out nAmount) == false)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create(_uplodedData.Columns[i].ColumnName, nRow, _uplodedData.Columns[i].ColumnName + " contains Invalid value:" + dr[_uplodedData.Columns[i].ColumnName].ToString(), oemployee.EmployeeNo, oemployee.Name));
|
|||
|
continue;
|
|||
|
}
|
|||
|
oIncomeTax = incomeTaxs.FirstOrDefault(x => x.EmployeeID == oemployee.ID &&
|
|||
|
x.ItemGroup == oTaxMergeMaster.ItemGroup && x.ItemID == 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(_uplodedData.Columns[i].ColumnName, nRow, "Column not found in tax setup", oemployee.EmployeeNo, oemployee.Name));
|
|||
|
}
|
|||
|
}
|
|||
|
if (_errorOrSuccessList.Count == 0)
|
|||
|
new IncomeTaxService().Save(incomeTaxs, EnumIncomeTaxDataFrom.ProcessTempData);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occered on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
}
|
|||
|
#region Import Life-Cycle
|
|||
|
public void importLifeCycle(DataUploadColumnDefinition _columnDefinition)
|
|||
|
{
|
|||
|
EmployeeStatus ostatus = new EmployeeStatusService().Get((int)_columnDefinition.uploadItemID);
|
|||
|
List<Employee> _oemployees = new EmployeeService().GetAllEmps(this._payrollTypeID);
|
|||
|
|
|||
|
_employeesForSave = new List<Employee>();
|
|||
|
List<EmpLifeCycle> lifeCycles = new List<EmpLifeCycle>();
|
|||
|
List<Department> depts = null;
|
|||
|
List<Grade> grades = null;
|
|||
|
List<Designation> designations = null;
|
|||
|
List<Location> locations = null;
|
|||
|
List<Costcenter> crgs = null;
|
|||
|
Employee oemployee = null;
|
|||
|
int nRow = 0;
|
|||
|
int nIndex = 0;
|
|||
|
List<SystemConfigaration> deptConfig = new SystemConfigarationService().GetAllChildrenByParentNode(EnumConfigurationType.Logic, "department");
|
|||
|
List<SystemConfigaration> locConfig = new SystemConfigarationService().GetAllChildrenByParentNode(EnumConfigurationType.Logic, "location");
|
|||
|
List<SystemConfigaration> crgConfig = new SystemConfigarationService().GetAllChildrenByParentNode(EnumConfigurationType.Logic, "costcenter");
|
|||
|
bool isCategoryCodeAutoGen = Convert.ToBoolean(new SystemConfigarationService().GetconfigBooleanValue(EnumConfigurationType.Logic, "category", "codeautogenerate"));
|
|||
|
bool isGradeCodeAutoGen = Convert.ToBoolean(new SystemConfigarationService().GetconfigBooleanValue(EnumConfigurationType.Logic, "grade", "codeautogenerate"));
|
|||
|
bool isDeptCodeAutoGen = Convert.ToBoolean(new SystemConfigarationService().GetconfigBooleanValue(EnumConfigurationType.Logic, "department", "codeautogenerate"));
|
|||
|
bool islocCodeAutoGen = Convert.ToBoolean(new SystemConfigarationService().GetconfigBooleanValue(EnumConfigurationType.Logic, "location", "codeautogenerate"));
|
|||
|
bool isreligionCodeAutoGen = Convert.ToBoolean(new SystemConfigarationService().GetconfigBooleanValue(EnumConfigurationType.Logic, "religion", "codeautogenerate"));
|
|||
|
bool isdesignationCodeAutoGen = Convert.ToBoolean(new SystemConfigarationService().GetconfigBooleanValue(EnumConfigurationType.Logic, "designation", "codeautogenerate"));
|
|||
|
bool isCostcenterAutoGen = Convert.ToBoolean(new SystemConfigarationService().GetconfigBooleanValue(EnumConfigurationType.Logic, "costcenter", "codeautogenerate"));
|
|||
|
|
|||
|
|
|||
|
int departmentid = new MiscellaneousService().GetNextID("Department", "DepartmentID", "");
|
|||
|
int gradeid = new MiscellaneousService().GetNextID("Grades", "Gradeid", "");
|
|||
|
int locationid = new MiscellaneousService().GetNextID("location", "locationid", "");
|
|||
|
int designationid = new MiscellaneousService().GetNextID("Designation", "DesignationID", "");
|
|||
|
int costcenterid = new MiscellaneousService().GetNextID("crg", "crgid", "");
|
|||
|
string description = "";
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
description = "";
|
|||
|
EmpLifeCycle lifeCycle = new EmpLifeCycle();
|
|||
|
lifeCycle.HREmployee = new HREmployee();
|
|||
|
lifeCycle.EmpStatusObject = ostatus;
|
|||
|
nRow = nRow + 1;
|
|||
|
oemployee = _oemployees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr["Employee No"].ToString(); });
|
|||
|
|
|||
|
if (oemployee != null)
|
|||
|
{
|
|||
|
lifeCycle.Employee = oemployee;
|
|||
|
lifeCycle.EmployeeID = oemployee.ID;
|
|||
|
lifeCycle.HREmployee.Gender = oemployee.Gender;
|
|||
|
lifeCycle.HREmployee.MaritalStatus = oemployee.MaritalStatus;
|
|||
|
lifeCycle.HREmployee.BloodGroup = EnumBloodGroup.None; // default value;
|
|||
|
lifeCycle.HREmployee.ReligionID = oemployee.ReligionID;
|
|||
|
lifeCycle.HREmployee.FunctionID = null;
|
|||
|
lifeCycle.HREmployee.CompanyID = null;
|
|||
|
lifeCycle.HREmployee.Status = EnumEmployeeStatus.Live;
|
|||
|
lifeCycle.HREmployee.CategoryID = oemployee.CategoryID;
|
|||
|
lifeCycle.EffectDate = Convert.ToDateTime(dr["EffectDate"]);
|
|||
|
lifeCycle.CreatedBy = this._userID;
|
|||
|
lifeCycle.CreatedDate = DateTime.Today;
|
|||
|
description = ostatus.Description + " :";
|
|||
|
foreach (EmployeeStatus.EmpStatusComponent comp in ostatus.EmployeeStatusComponents)
|
|||
|
{
|
|||
|
lifeCycle.StatusDetailID = ostatus.ID;
|
|||
|
switch (comp.ComponentType)
|
|||
|
{
|
|||
|
case EnumLifeCycleComponent.Category:
|
|||
|
break;
|
|||
|
case EnumLifeCycleComponent.Department:
|
|||
|
|
|||
|
if (depts == null)
|
|||
|
{
|
|||
|
depts = new DepartmentService().Get(EnumStatus.Regardless, this._payrollTypeID);
|
|||
|
}
|
|||
|
if (lifeCycle.Employee.DepartmentID != null)
|
|||
|
description = description + depts.Find(x => x.ID == lifeCycle.Employee.DepartmentID).Name;
|
|||
|
nIndex = 0;
|
|||
|
#region Department
|
|||
|
int nparentid = 0;
|
|||
|
nIndex = 0;
|
|||
|
var dtires = deptConfig.FindAll(x => x.Node == "text");
|
|||
|
foreach (SystemConfigaration oconfig in dtires)
|
|||
|
{
|
|||
|
//string sValue = oconfig.ConAttributes.GetAttributeValue("tier");
|
|||
|
//if (sValue == "") continue;
|
|||
|
nIndex = nIndex + 1;
|
|||
|
if (dr[oconfig.Value + " Name"].ToString() == "") continue;
|
|||
|
Department odepartment = null;
|
|||
|
if (isDeptCodeAutoGen == false)
|
|||
|
{
|
|||
|
if (nIndex > 1)
|
|||
|
odepartment = depts.Find(delegate (Department item) { return item.Code == dr[oconfig.Value + " Code"].ToString().Trim() && item.Tier == nIndex && item.ParentID == nparentid; });
|
|||
|
else
|
|||
|
odepartment = depts.Find(delegate (Department item) { return item.Code == dr[oconfig.Value + " Code"].ToString().Trim() && item.Tier == nIndex; });
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (nIndex > 1)
|
|||
|
odepartment = depts.Find(delegate (Department item) { return item.Name == dr[oconfig.Value + " Name"].ToString().Trim() && item.Tier == nIndex && item.ParentID == nparentid; });
|
|||
|
else
|
|||
|
odepartment = depts.Find(delegate (Department item) { return item.Name == dr[oconfig.Value + " Name"].ToString().Trim() && item.Tier == nIndex; });
|
|||
|
}
|
|||
|
|
|||
|
if (odepartment == null)
|
|||
|
{
|
|||
|
odepartment = new Department();
|
|||
|
odepartment.Name = dr[oconfig.Value + " Name"].ToString().Trim();
|
|||
|
odepartment.Tier = nIndex;
|
|||
|
odepartment.Status = EnumStatus.Active;
|
|||
|
odepartment.CreatedBy = this._userID;
|
|||
|
odepartment.PayrollTypeID = this._payrollTypeID;
|
|||
|
|
|||
|
if (isDeptCodeAutoGen == false)
|
|||
|
{
|
|||
|
odepartment.Code = dr[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 = (nparentid);
|
|||
|
departmentid = departmentid + 1;
|
|||
|
nparentid = departmentid;
|
|||
|
|
|||
|
oemployee.DepartmentID = (departmentid);
|
|||
|
lifeCycle.HREmployee.DepartmentID = departmentid;
|
|||
|
lifeCycle.DepartmentID = departmentid;
|
|||
|
odepartment.SetObjectID(departmentid);
|
|||
|
|
|||
|
|
|||
|
depts.Add(odepartment);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
nparentid = odepartment.ID;
|
|||
|
oemployee.DepartmentID = odepartment.ID;
|
|||
|
lifeCycle.DepartmentID = odepartment.ID;
|
|||
|
lifeCycle.HREmployee.DepartmentID = odepartment.ID;
|
|||
|
odepartment.ModifiedBy = this._userID;
|
|||
|
}
|
|||
|
}
|
|||
|
description = " To " + description + depts.Find(x => x.ID == lifeCycle.Employee.DepartmentID).Name;
|
|||
|
|
|||
|
#endregion
|
|||
|
break;
|
|||
|
case EnumLifeCycleComponent.Position_With_Properties:
|
|||
|
break;
|
|||
|
case EnumLifeCycleComponent.Designation:
|
|||
|
#region Designation upload
|
|||
|
if (designations == null)
|
|||
|
designations = new DesignationService().Get(EnumStatus.Regardless, this._payrollTypeID);
|
|||
|
|
|||
|
if (lifeCycle.Employee.DesignationID != null)
|
|||
|
{
|
|||
|
var desItem = designations.Find(x => x.ID == lifeCycle.Employee.DesignationID);
|
|||
|
if (desItem != null)
|
|||
|
description = description + desItem.Name;
|
|||
|
}
|
|||
|
Designation odesignation = null;
|
|||
|
if (isdesignationCodeAutoGen == false)
|
|||
|
odesignation = designations.Find(delegate (Designation item) { return item.Code == dr["Designation Code"].ToString().Trim(); });
|
|||
|
else
|
|||
|
odesignation = designations.Find(delegate (Designation item) { return item.Name == dr["Designation Name"].ToString().Trim(); });
|
|||
|
|
|||
|
if (odesignation == null)
|
|||
|
{
|
|||
|
odesignation = new Designation();
|
|||
|
odesignation.Name = dr["Designation Name"].ToString().Trim();
|
|||
|
|
|||
|
if (isdesignationCodeAutoGen == false)
|
|||
|
odesignation.Code = dr["Designation Code"].ToString().Trim();
|
|||
|
designationid = designationid + 1;
|
|||
|
oemployee.DesignationID = (designationid);
|
|||
|
lifeCycle.DesignationID = designationid;
|
|||
|
odesignation.SetObjectID(designationid);
|
|||
|
odesignation.Status = EnumStatus.Active;
|
|||
|
odesignation.CreatedBy = this._userID;
|
|||
|
odesignation.PayrollTypeID = this._payrollTypeID;
|
|||
|
lifeCycle.HREmployee.DesignationID = designationid;
|
|||
|
designations.Add(odesignation);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
oemployee.DesignationID = odesignation.ID;
|
|||
|
lifeCycle.DesignationID = odesignation.ID;
|
|||
|
lifeCycle.HREmployee.DesignationID = odesignation.ID;
|
|||
|
odesignation.ModifiedBy = this._userID;
|
|||
|
}
|
|||
|
description = description + " To " + designations.Find(x => x.ID == lifeCycle.Employee.DesignationID).Name;
|
|||
|
|
|||
|
#endregion Designation upload
|
|||
|
break;
|
|||
|
case EnumLifeCycleComponent.Grade:
|
|||
|
|
|||
|
if (grades == null)
|
|||
|
grades = new GradeService().Get(EnumStatus.Regardless, this._payrollTypeID);
|
|||
|
if (lifeCycle.Employee.GradeID != null)
|
|||
|
{
|
|||
|
var gradeItem = grades.Find(x => x.ID == lifeCycle.Employee.GradeID);
|
|||
|
if (gradeItem != null)
|
|||
|
description = description + " Grade: " + gradeItem.Name;
|
|||
|
}
|
|||
|
Grade ograde = null;
|
|||
|
|
|||
|
if (isGradeCodeAutoGen == false)
|
|||
|
ograde = grades.Find(delegate (Grade item) { return item.Code == dr["Grade Code"].ToString(); });
|
|||
|
else
|
|||
|
ograde = grades.Find(delegate (Grade item) { return item.Name == dr["Grade Name"].ToString(); });
|
|||
|
|
|||
|
if (ograde == null)
|
|||
|
{
|
|||
|
ograde = new Grade();
|
|||
|
ograde.Status = EnumStatus.Active;
|
|||
|
|
|||
|
ograde.GradeSegmentID = (1);
|
|||
|
ograde.HasPayscale = new SystemConfigarationService().GetconfigBooleanValue(EnumConfigurationType.Logic, "grade", "payscaleapplicable ");
|
|||
|
ograde.HasGrossConcept = new SystemConfigarationService().GetconfigBooleanValue(EnumConfigurationType.Logic, "grade", "grossapplicable");
|
|||
|
ograde.Name = dr["Grade Name"].ToString().Trim();
|
|||
|
if (isGradeCodeAutoGen == false)
|
|||
|
ograde.Code = dr["Grade Code"].ToString().Trim();
|
|||
|
gradeid = gradeid + 1;
|
|||
|
oemployee.GradeID = (gradeid);
|
|||
|
lifeCycle.HREmployee.GradeID = gradeid;
|
|||
|
lifeCycle.GradeID = gradeid;
|
|||
|
ograde.SetObjectID(gradeid);
|
|||
|
ograde.CreatedBy = this._userID;
|
|||
|
ograde.PayrollTypeID = this._payrollTypeID;
|
|||
|
grades.Add(ograde);
|
|||
|
|
|||
|
if (new GradeSegmentService().Get(ograde.Code) != null)
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Grade", nRow, "Grade already exist in other payroll type."));
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
oemployee.GradeID = ograde.ID;
|
|||
|
lifeCycle.GradeID = ograde.ID;
|
|||
|
ograde.ModifiedBy = this._userID;
|
|||
|
lifeCycle.HREmployee.GradeID = ograde.ID;
|
|||
|
}
|
|||
|
|
|||
|
description = description + " To " + grades.Find(x => x.ID == lifeCycle.Employee.GradeID).Name;
|
|||
|
break;
|
|||
|
case EnumLifeCycleComponent.Location:
|
|||
|
#region Location
|
|||
|
if (locations == null)
|
|||
|
locations = new LocationService().Get(EnumStatus.Regardless, this._payrollTypeID);
|
|||
|
|
|||
|
if (lifeCycle.Employee.LocationID != null)
|
|||
|
{
|
|||
|
var locItem = locations.Find(x => x.ID == lifeCycle.Employee.LocationID);
|
|||
|
if (locItem != null)
|
|||
|
description = description + locItem.Name;
|
|||
|
}
|
|||
|
|
|||
|
nparentid = 0;
|
|||
|
nIndex = 0;
|
|||
|
var ltires = locConfig.FindAll(x => x.Node == "text");
|
|||
|
foreach (SystemConfigaration oconfig in ltires)
|
|||
|
{
|
|||
|
//string sValue = oconfig.ConAttributes.GetAttributeValue("tier");
|
|||
|
//if (sValue == "") continue;
|
|||
|
nIndex = nIndex + 1;
|
|||
|
if (dr[oconfig.Value + " Name"].ToString() == "") continue;
|
|||
|
Location olocation = null;
|
|||
|
if (islocCodeAutoGen == false)
|
|||
|
{
|
|||
|
if (nIndex > 1)
|
|||
|
{
|
|||
|
olocation = locations.Find(delegate (Location item) { return item.Code == dr[oconfig.Value + " Code"].ToString().Trim() && item.Tier == nIndex && item.ParentID == nparentid; });
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
olocation = locations.Find(delegate (Location item) { return item.Code == dr[oconfig.Value + " Code"].ToString().Trim() && item.Tier == nIndex; });
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (nIndex > 1)
|
|||
|
{
|
|||
|
olocation = locations.Find(delegate (Location item) { return item.Name == dr[oconfig.Value + " Name"].ToString().Trim() && item.Tier == nIndex && item.ParentID == nparentid; });
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
olocation = locations.Find(delegate (Location item) { return item.Name == dr[oconfig.Value + " Name"].ToString().Trim() && item.Tier == nIndex; });
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (olocation == null)
|
|||
|
{
|
|||
|
olocation = new Location();
|
|||
|
olocation.Name = dr[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 (islocCodeAutoGen == false)
|
|||
|
{
|
|||
|
olocation.Code = dr[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 = (nparentid);
|
|||
|
locationid = locationid + 1;
|
|||
|
nparentid = locationid;
|
|||
|
oemployee.LocationID = (locationid);
|
|||
|
lifeCycle.LocationID = locationid;
|
|||
|
lifeCycle.HREmployee.LocationID = locationid;
|
|||
|
olocation.SetObjectID(locationid);
|
|||
|
olocation.PayrollTypeID = this._payrollTypeID;
|
|||
|
olocation.CreatedBy = this._userID;
|
|||
|
locations.Add(olocation);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
nparentid = olocation.ID;
|
|||
|
oemployee.LocationID = olocation.ID;
|
|||
|
olocation.ModifiedBy = this._userID;
|
|||
|
lifeCycle.HREmployee.LocationID = olocation.ID;
|
|||
|
}
|
|||
|
}
|
|||
|
description = description + " To " + locations.Find(x => x.ID == lifeCycle.Employee.LocationID).Name;
|
|||
|
#endregion
|
|||
|
break;
|
|||
|
case EnumLifeCycleComponent.Basic_salary:
|
|||
|
if (dr["Basic Salary"].ToString() == "") _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "(" + dr["Employee No"].ToString() + ")" + "Basic Salary can't be Empty"));
|
|||
|
if (lifeCycle.Employee.BasicSalary != 0)
|
|||
|
description = description + " Basic Salary " + lifeCycle.Employee.BasicSalary.ToString();
|
|||
|
lifeCycle.BasicSalary = Convert.ToDouble(dr["Basic Salary"].ToString());
|
|||
|
lifeCycle.Employee.BasicSalary = (double)lifeCycle.BasicSalary;
|
|||
|
|
|||
|
description = description + " To " + lifeCycle.Employee.BasicSalary.ToString();
|
|||
|
break;
|
|||
|
case EnumLifeCycleComponent.PF_Member:
|
|||
|
lifeCycle.PFMemberType = EnumPFMembershipType.Live;
|
|||
|
lifeCycle.Employee.PFMemberType = EnumPFMembershipType.Live;
|
|||
|
lifeCycle.HREmployee.PFMemberType = EnumPFMembershipType.Live;
|
|||
|
lifeCycle.Employee.PFMemberShiptDate = lifeCycle.EffectDate;
|
|||
|
|
|||
|
break;
|
|||
|
case EnumLifeCycleComponent.Continue:
|
|||
|
lifeCycle.EmployeeStatus = EnumEmployeeStatus.Live;
|
|||
|
lifeCycle.IsContinue = true;
|
|||
|
lifeCycle.Employee.Status = EnumEmployeeStatus.Live;
|
|||
|
lifeCycle.HREmployee.Status = EnumEmployeeStatus.Live;
|
|||
|
lifeCycle.Employee.DiscontinueDate = lifeCycle.EffectDate;
|
|||
|
lifeCycle.Employee.EndOfContractDate = lifeCycle.EffectDate;
|
|||
|
break;
|
|||
|
case EnumLifeCycleComponent.Confirm:
|
|||
|
lifeCycle.IsConfirm = true;
|
|||
|
lifeCycle.Employee.IsConfirmed = true;
|
|||
|
lifeCycle.HREmployee.IsConfirmed = true;
|
|||
|
lifeCycle.Employee.ConfirDate = lifeCycle.EffectDate;
|
|||
|
break;
|
|||
|
case EnumLifeCycleComponent.Discontinue:
|
|||
|
lifeCycle.IsDiscontinue = true;
|
|||
|
lifeCycle.EmployeeStatus = EnumEmployeeStatus.Discontinued;
|
|||
|
lifeCycle.Employee.Status = EnumEmployeeStatus.Discontinued;
|
|||
|
lifeCycle.HREmployee.Status = EnumEmployeeStatus.Discontinued;
|
|||
|
lifeCycle.Employee.DiscontinueDate = lifeCycle.EffectDate;
|
|||
|
lifeCycle.Employee.EndOfContractDate = lifeCycle.EffectDate;
|
|||
|
break;
|
|||
|
case EnumLifeCycleComponent.Function:
|
|||
|
break;
|
|||
|
case EnumLifeCycleComponent.Company:
|
|||
|
break;
|
|||
|
case EnumLifeCycleComponent.Gross_salary:
|
|||
|
if (dr["Gross Salary"].ToString() == "") _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "(" + dr["Employee No"].ToString() + ")" + "Basic Salary can't be Empty"));
|
|||
|
if (lifeCycle.Employee.GrossSalary != 0)
|
|||
|
description = description + " Gross Salary : " + lifeCycle.Employee.GrossSalary.ToString();
|
|||
|
lifeCycle.GrossSalary = Convert.ToDouble(dr["Gross Salary"].ToString());
|
|||
|
lifeCycle.Employee.GrossSalary = (double)lifeCycle.GrossSalary;
|
|||
|
description = description + " To " + lifeCycle.Employee.GrossSalary.ToString();
|
|||
|
|
|||
|
break;
|
|||
|
case EnumLifeCycleComponent.Cost_Center:
|
|||
|
#region Location
|
|||
|
if (crgs == null)
|
|||
|
crgs = new CostcenterService().Get(EnumStatus.Regardless, this._payrollTypeID);
|
|||
|
|
|||
|
if (lifeCycle.Employee.CrgId != null)
|
|||
|
description = description + crgs.Find(x => x.ID == lifeCycle.Employee.CrgId).Name;
|
|||
|
|
|||
|
nparentid = 0;
|
|||
|
nIndex = 0;
|
|||
|
var ctires = crgConfig.FindAll(x => x.Node == "text");
|
|||
|
foreach (SystemConfigaration oconfig in ctires)
|
|||
|
{
|
|||
|
//string sValue = oconfig.ConAttributes.GetAttributeValue("tier");
|
|||
|
//if (sValue == "") continue;
|
|||
|
nIndex = nIndex + 1;
|
|||
|
if (dr[oconfig.Value + " Name"].ToString() == "") continue;
|
|||
|
Costcenter crg = null;
|
|||
|
if (isCostcenterAutoGen == false)
|
|||
|
{
|
|||
|
if (nIndex > 1)
|
|||
|
{
|
|||
|
crg = crgs.Find(delegate (Costcenter item) { return item.Code == dr[oconfig.Value + " Code"].ToString().Trim() && item.Tier == nIndex && item.ParentID == nparentid; });
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
crg = crgs.Find(delegate (Costcenter item) { return item.Code == dr[oconfig.Value + " Code"].ToString().Trim() && item.Tier == nIndex; });
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (nIndex > 1)
|
|||
|
{
|
|||
|
crg = crgs.Find(delegate (Costcenter item) { return item.Name == dr[oconfig.Value + " Name"].ToString().Trim() && item.Tier == nIndex && item.ParentID == nparentid; });
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
crg = crgs.Find(delegate (Costcenter item) { return item.Name == dr[oconfig.Value + " Name"].ToString().Trim() && item.Tier == nIndex; });
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (crg == null)
|
|||
|
{
|
|||
|
crg = new Costcenter();
|
|||
|
crg.Name = dr[oconfig.Value + " Name"].ToString().Trim();
|
|||
|
crg.Tier = nIndex;
|
|||
|
crg.Status = EnumStatus.Active;
|
|||
|
if (crg.Name == "")
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create(oconfig.Value + " Name", nRow, oconfig.Value + " Name can't be empty"));
|
|||
|
|
|||
|
if (isCostcenterAutoGen == false)
|
|||
|
{
|
|||
|
crg.Code = dr[oconfig.Value + " Code"].ToString().Trim();
|
|||
|
if (crg.Code == "")
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create(oconfig.Value + " Code", nRow, oconfig.Value + " Code can't be empty"));
|
|||
|
|
|||
|
}
|
|||
|
if (nIndex > 1) crg.ParentID = (nparentid);
|
|||
|
costcenterid = costcenterid + 1;
|
|||
|
nparentid = costcenterid;
|
|||
|
lifeCycle.CostCenterID = costcenterid;
|
|||
|
lifeCycle.Employee.CrgId = costcenterid;
|
|||
|
crg.SetObjectID(costcenterid);
|
|||
|
crg.PayrollTypeID = this._payrollTypeID;
|
|||
|
crg.CreatedBy = this._userID;
|
|||
|
crgs.Add(crg);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
nparentid = crg.ID;
|
|||
|
lifeCycle.CostCenterID = crg.ID;
|
|||
|
lifeCycle.Employee.CrgId = crg.ID;
|
|||
|
crg.ModifiedBy = this._userID;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
description = description + " To " + crgs.Find(x => x.ID == lifeCycle.Employee.CrgId).Name;
|
|||
|
#endregion
|
|||
|
|
|||
|
break;
|
|||
|
case EnumLifeCycleComponent.Position_Without_Properties:
|
|||
|
break;
|
|||
|
case EnumLifeCycleComponent.Force_Remove_From_Position:
|
|||
|
|
|||
|
break;
|
|||
|
case EnumLifeCycleComponent.Role:
|
|||
|
break;
|
|||
|
case EnumLifeCycleComponent.IA:
|
|||
|
break;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
lifeCycle.Description = description;
|
|||
|
_employeesForSave.Add(oemployee);
|
|||
|
|
|||
|
lifeCycles.Add(lifeCycle);
|
|||
|
}
|
|||
|
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee not found in the Employee List"));
|
|||
|
}
|
|||
|
|
|||
|
if (_errorOrSuccessList.Count == 0)
|
|||
|
{
|
|||
|
this.SaveLifeCycle(null, grades, depts, locations, null, designations, crgs, lifeCycles, this._payrollTypeID);
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occurred on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
private void ImportOPIDataNew(DataUploadColumnDefinition _columnDefinition)
|
|||
|
{
|
|||
|
List<Employee> oemployees = new EmployeeService().GetAllEmps();
|
|||
|
ADParameter _adparam = null;
|
|||
|
Employee oemployee = null;
|
|||
|
List<OpiParameterIndividual> _oPIParameterIndividual = new List<OpiParameterIndividual>();
|
|||
|
OpiParameterIndividual oopiParamIndividual = null;
|
|||
|
List<OpiParameter> oparamters = new OpiParameterService().Get(EnumStatus.Active, this._payrollTypeID);
|
|||
|
PayrollType ptype = new PayrollTypeService().Get(this._payrollTypeID);
|
|||
|
int nRow = 0;
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
oemployee = oemployees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr["Employee No"].ToString(); });
|
|||
|
if (oemployee != null)
|
|||
|
{
|
|||
|
oopiParamIndividual = new OpiParameterIndividual();
|
|||
|
oopiParamIndividual.EmployeeId = oemployee.ID;
|
|||
|
//oadparamemp.FormDate = Convert.ToDateTime(dr["From Date"]);
|
|||
|
//oadparamemp.TillDate = Convert.ToDateTime(dr["Till Date"]);
|
|||
|
oopiParamIndividual.Value = dr["Amount"].ToString() != string.Empty ? Convert.ToDouble(dr["Amount"]) : 0.0;
|
|||
|
oopiParamIndividual.OpiItemId = _columnDefinition.SelectedItemOneID; //ID.FromInteger(Convert.ToInt32(EnumAllowOrDeduct.Deduction));
|
|||
|
if (oemployee.GradeID == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No :" + oemployee.EmployeeNo + " Row : ", nRow, "Employee grade id not found."));
|
|||
|
|
|||
|
continue;
|
|||
|
}
|
|||
|
List<OpiParameter> opiAppParams =new OpiParameterService().GetApplicableParameters(
|
|||
|
oemployee, (int) oemployee.GradeID, oparamters);
|
|||
|
OpiParameter opiAppParam = opiAppParams.FirstOrDefault(o => o.OpiItemID == oopiParamIndividual.OpiItemId);
|
|||
|
if (opiAppParam == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee applicable parameter not found."));
|
|||
|
continue;
|
|||
|
}
|
|||
|
oopiParamIndividual.PayrollTypeID = this._payrollTypeID;
|
|||
|
oopiParamIndividual.ArrearType = EnumArrearType.ToCalculate;
|
|||
|
oopiParamIndividual.OpiParameterID = opiAppParam.ID;
|
|||
|
oopiParamIndividual.OpiPeriodicity = opiAppParam.OpiPeriodicity;
|
|||
|
oopiParamIndividual.IndividualType = EnumOPIIndivdualType.AppliedToIndividual;
|
|||
|
if (oopiParamIndividual.OpiPeriodicity == EnumOpiPeriodicity.OnceOff)
|
|||
|
{
|
|||
|
oopiParamIndividual.FromDate =GlobalFunctions.FirstDateOfMonth(ptype.NextPayProcessDate);
|
|||
|
oopiParamIndividual.ToDate = ptype.NextPayProcessDate;
|
|||
|
}
|
|||
|
else if (oopiParamIndividual.OpiPeriodicity == EnumOpiPeriodicity.Monthly && opiAppParam.EntitleType == EnumEntitleType.Individual)
|
|||
|
{
|
|||
|
// from date can't prior to fist date of current month
|
|||
|
// till date can't be less to from date
|
|||
|
// from date can't be greater to last date of current month
|
|||
|
if (dr["From Date"].ToString() != "" && Convert.ToDateTime(dr["From Date"]) < GlobalFunctions.FirstDateOfMonth(ptype.NextPayProcessDate))
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("From Date :" + dr["From Date"].ToString() + " Row : ", nRow, "From date can not be less than first date of current month"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
if (dr["From Date"].ToString() != "" && Convert.ToDateTime(dr["From Date"]) > GlobalFunctions.LastDateOfMonth(ptype.NextPayProcessDate))
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("From Date :" + dr["From Date"].ToString() + " Row : ", nRow, "From date can not be greater than last date of current month"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
if (dr["Till Date"].ToString() != "" && Convert.ToDateTime(dr["Till Date"]) < Convert.ToDateTime(dr["From Date"]))
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Till Date :" + dr["Till Date"].ToString() + " Row : ", nRow, "Till date can not be less than From date"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
oopiParamIndividual.FromDate = dr["From Date"].ToString() != "" ? Convert.ToDateTime(dr["From Date"]) : GlobalFunctions.FirstDateOfMonth(ptype.NextPayProcessDate);
|
|||
|
if (dr["Till Date"].ToString() != "")
|
|||
|
oopiParamIndividual.ToDate = Convert.ToDateTime(dr["Till Date"]);
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No :" + dr["Employee No"].ToString() + " Row : ", nRow, "Employee applicable parameter is defined greade wise"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
oopiParamIndividual.ValueType = EnumValueType.Amount;
|
|||
|
_oPIParameterIndividual.Add(oopiParamIndividual);
|
|||
|
}
|
|||
|
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee not found for in the existing data"));
|
|||
|
}
|
|||
|
if(_errorOrSuccessList.Count ==0)
|
|||
|
{
|
|||
|
new OpiParameterIndividualService().BulkSave(_oPIParameterIndividual);
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occurred on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
#region Import LineManager
|
|||
|
public void ImportLineManager(DataUploadColumnDefinition _columnDefinition)
|
|||
|
{
|
|||
|
List<Employee> _oemployees = new EmployeeService().GetAllEmps();
|
|||
|
_employeesForSave = new List<Employee>();
|
|||
|
Employee oemployee = null;
|
|||
|
Employee lineManager = null;
|
|||
|
int nRow = 0;
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
oemployee = _oemployees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr["Employee No"].ToString(); });
|
|||
|
if (oemployee != null)
|
|||
|
{
|
|||
|
if (dr["Line Manager"].ToString() == string.Empty)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Line Manager", nRow, "(" + dr["Line Manager"].ToString() + ")" + "Line Manager not found in the current context"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
lineManager = _oemployees.Where(o => o.EmployeeNo == dr["Line Manager"].ToString().Trim()).FirstOrDefault();
|
|||
|
if (lineManager == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Line Manager", nRow, "(" + dr["Line Manager"].ToString() + ")" + "Line Manager is not found in Employee List."));
|
|||
|
continue;
|
|||
|
}
|
|||
|
oemployee.LineManagerID = lineManager.ID;
|
|||
|
|
|||
|
if (dr["Second Line Manager"].ToString() != string.Empty)
|
|||
|
{
|
|||
|
lineManager = _oemployees.Where(o => o.EmployeeNo == dr["Second Line Manager"].ToString().Trim()).FirstOrDefault();
|
|||
|
if (lineManager == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Second Line Manager.", nRow, "(" + dr["Second Line Manager"].ToString() + ")" + "Second Line Manager is not found in Employee List."));
|
|||
|
continue;
|
|||
|
}
|
|||
|
oemployee.SecondLineManagerID = lineManager.ID;
|
|||
|
}
|
|||
|
_employeesForSave.Add(oemployee);
|
|||
|
}
|
|||
|
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee not found in the Employee List"));
|
|||
|
}
|
|||
|
|
|||
|
if (_errorOrSuccessList.Count == 0)
|
|||
|
{
|
|||
|
new EmployeeService().UpdateLM2(_employeesForSave);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occurred on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Import PF
|
|||
|
public void ImportPFOpening(DataUploadColumnDefinition _columnDefinition)
|
|||
|
{
|
|||
|
List<Employee> _oemployees = new EmployeeService().GetAllEmps();
|
|||
|
_PFTransactions = new List<PFTransaction>();
|
|||
|
Employee oemployee = null;
|
|||
|
int nRow = 0;
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
oemployee = _oemployees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr["Employee No"].ToString(); });
|
|||
|
if (oemployee != null)
|
|||
|
{
|
|||
|
DateTime monthDate = DateTime.MinValue;
|
|||
|
if (dr["Date"].ToString() == string.Empty)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Date", nRow, "(" + dr["Employee No"].ToString() + ")" + "Date not found."));
|
|||
|
continue;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
monthDate = Convert.ToDateTime(dr["Date"].ToString()).LastDateOfMonth();
|
|||
|
}
|
|||
|
if (dr["Own Contribution"].ToString() == string.Empty)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Own Contribution", nRow, "(" + dr["Employee No"].ToString() + ")" + "Own Contribution not found."));
|
|||
|
continue;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
PFTransaction pFTransaction = new PFTransaction();
|
|||
|
pFTransaction.EmployeeID = oemployee.ID;
|
|||
|
pFTransaction.TranType = EnumPFTranType.OpeningPFAmount;
|
|||
|
pFTransaction.TranAmount = Convert.ToDouble(dr["Own Contribution"].ToString());
|
|||
|
pFTransaction.MonthDate = monthDate;
|
|||
|
_PFTransactions.Add(pFTransaction);
|
|||
|
|
|||
|
}
|
|||
|
if (dr["Company Contribution"].ToString() == string.Empty)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Company Contribution", nRow, "(" + dr["Employee No"].ToString() + ")" + "Company Contribution not found."));
|
|||
|
continue;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
PFTransaction pFTransaction = new PFTransaction();
|
|||
|
pFTransaction.EmployeeID = oemployee.ID;
|
|||
|
pFTransaction.TranType = EnumPFTranType.OpeningCPFAmount;
|
|||
|
pFTransaction.TranAmount = Convert.ToDouble(dr["Own Contribution"].ToString());
|
|||
|
pFTransaction.MonthDate = monthDate;
|
|||
|
_PFTransactions.Add(pFTransaction);
|
|||
|
|
|||
|
}
|
|||
|
if (dr["Own Interest"].ToString() == string.Empty)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Own Interest", nRow, "(" + dr["Employee No"].ToString() + ")" + "Own Interest not found."));
|
|||
|
continue;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
PFTransaction pFTransaction = new PFTransaction();
|
|||
|
pFTransaction.EmployeeID = oemployee.ID;
|
|||
|
pFTransaction.TranType = EnumPFTranType.OpeningOwnInt;
|
|||
|
pFTransaction.TranAmount = Convert.ToDouble(dr["Own Contribution"].ToString());
|
|||
|
pFTransaction.MonthDate = monthDate;
|
|||
|
_PFTransactions.Add(pFTransaction);
|
|||
|
|
|||
|
}
|
|||
|
if (dr["Company Interest"].ToString() == string.Empty)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Company Interest", nRow, "(" + dr["Employee No"].ToString() + ")" + "Company Interest not found."));
|
|||
|
continue;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
PFTransaction pFTransaction = new PFTransaction();
|
|||
|
pFTransaction.EmployeeID = oemployee.ID;
|
|||
|
pFTransaction.TranType = EnumPFTranType.OpeningCompInt;
|
|||
|
pFTransaction.TranAmount = Convert.ToDouble(dr["Own Contribution"].ToString());
|
|||
|
pFTransaction.MonthDate = monthDate;
|
|||
|
_PFTransactions.Add(pFTransaction);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee not found in the Employee List"));
|
|||
|
}
|
|||
|
|
|||
|
if (_errorOrSuccessList.Count == 0)
|
|||
|
{
|
|||
|
new PFTransactionService().SaveAll(_PFTransactions);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occurred on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void ImportPFYearlyInterest(DataUploadColumnDefinition _columnDefinition)
|
|||
|
{
|
|||
|
List<Employee> _oemployees = new EmployeeService().GetAllEmps();
|
|||
|
_PFTransactions = new List<PFTransaction>();
|
|||
|
Employee oemployee = null;
|
|||
|
int nRow = 0;
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
oemployee = _oemployees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr["Employee No"].ToString(); });
|
|||
|
if (oemployee != null)
|
|||
|
{
|
|||
|
DateTime monthDate = DateTime.MinValue;
|
|||
|
if (dr["Date"].ToString() == string.Empty)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Date", nRow, "(" + dr["Employee No"].ToString() + ")" + "Date not found."));
|
|||
|
continue;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
monthDate = Convert.ToDateTime(dr["Date"].ToString()).LastDateOfMonth();
|
|||
|
}
|
|||
|
if (dr["Own Yearly Interest"].ToString() == string.Empty)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Own Yearly Interest", nRow, "(" + dr["Employee No"].ToString() + ")" + "Own Yearly Interest not found."));
|
|||
|
continue;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
PFTransaction pFTransaction = new PFTransaction();
|
|||
|
pFTransaction.EmployeeID = oemployee.ID;
|
|||
|
pFTransaction.TranType = EnumPFTranType.OwnYearlyInt;
|
|||
|
pFTransaction.TranAmount = Convert.ToDouble(dr["Own Yearly Interest"].ToString());
|
|||
|
pFTransaction.MonthDate = monthDate;
|
|||
|
_PFTransactions.Add(pFTransaction);
|
|||
|
|
|||
|
}
|
|||
|
if (dr["Company Yearly Interest"].ToString() == string.Empty)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Company Yearly Interest", nRow, "(" + dr["Employee No"].ToString() + ")" + "Company Yearly Interest not found."));
|
|||
|
continue;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
PFTransaction pFTransaction = new PFTransaction();
|
|||
|
pFTransaction.EmployeeID = oemployee.ID;
|
|||
|
pFTransaction.TranType = EnumPFTranType.CompYearlyInt;
|
|||
|
pFTransaction.TranAmount = Convert.ToDouble(dr["Company Yearly Interest"].ToString());
|
|||
|
pFTransaction.MonthDate = monthDate;
|
|||
|
_PFTransactions.Add(pFTransaction);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee not found in the Employee List"));
|
|||
|
}
|
|||
|
|
|||
|
if (_errorOrSuccessList.Count == 0)
|
|||
|
{
|
|||
|
new PFTransactionService().SaveAll(_PFTransactions);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occurred on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
public void ImportLeaveBalance(DataUploadColumnDefinition _columnDefinition)
|
|||
|
{
|
|||
|
LeaveYear currLeaveYear = new LeaveYearService().GetCurrentYear(this._payrollTypeID);
|
|||
|
LeaveYear prevLeaveYear = new LeaveYearService().GetLastYear(this._payrollTypeID);
|
|||
|
int prevLeaveYearId = 0;
|
|||
|
if (prevLeaveYear == null)
|
|||
|
{
|
|||
|
prevLeaveYear = new LeaveYear();
|
|||
|
prevLeaveYear.StartDate = new DateTime(currLeaveYear.StartDate.Year - 1, 1, 1);
|
|||
|
prevLeaveYear.EndDate = new DateTime(currLeaveYear.EndDate.Year - 1, 12, 31);
|
|||
|
prevLeaveYear.IsCurrent = false;
|
|||
|
prevLeaveYear.IsEnded = true;
|
|||
|
prevLeaveYear.Name = prevLeaveYear.StartDate.ToString("dd MMM yyyy") + " - " + prevLeaveYear.EndDate.ToString("dd MMM yyyy");
|
|||
|
prevLeaveYear.Status = EnumStatus.Active;
|
|||
|
prevLeaveYearId = new LeaveYearService().Save(prevLeaveYear);
|
|||
|
}
|
|||
|
List<Leave> oLeaves = new LeaveService().GetAll();
|
|||
|
var arrayNames = (from DataColumn x in _uplodedData.Columns
|
|||
|
select x.ColumnName).ToArray();
|
|||
|
List<string> sNames = new List<string>();
|
|||
|
sNames.Add("Employee No");
|
|||
|
sNames.Add("Leave Code");
|
|||
|
sNames.Add("CFDays");
|
|||
|
|
|||
|
bool bFound = false;
|
|||
|
string sErrorColumnName = "";
|
|||
|
foreach (string ss in sNames)
|
|||
|
{
|
|||
|
|
|||
|
bFound = false;
|
|||
|
var result = arrayNames.Where(le => le.ToString() == ss);
|
|||
|
foreach (string sss in result)
|
|||
|
{
|
|||
|
bFound = true;
|
|||
|
}
|
|||
|
if (!bFound)
|
|||
|
{
|
|||
|
if (sErrorColumnName == "")
|
|||
|
sErrorColumnName = ss;
|
|||
|
else
|
|||
|
sErrorColumnName += ", " + ss;
|
|||
|
}
|
|||
|
}
|
|||
|
if (sErrorColumnName != "")
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
EmpLeaveStatus status;
|
|||
|
List<EmpLeaveStatus> statuss = new List<EmpLeaveStatus>();
|
|||
|
LeaveEntry leaveEntry = new LeaveEntry();
|
|||
|
List<LeaveEntry> leaveEntrys = new List<LeaveEntry>();
|
|||
|
List<LeaveParameter> lparameters = new List<LeaveParameter>();
|
|||
|
LeaveParameter oLDetail = new LeaveParameter();
|
|||
|
int nrow = 0;
|
|||
|
int ncolumn = 1;
|
|||
|
LeaveProcess oProcess = new LeaveProcessService().Get(prevLeaveYear == null ? 0 : prevLeaveYear.ID, _columnDefinition.PayrollTypeID);
|
|||
|
if (oProcess == null)
|
|||
|
{
|
|||
|
oProcess = new LeaveProcess();
|
|||
|
oProcess.ProcessDate = prevLeaveYear.EndDate;
|
|||
|
oProcess.LeaveYearID = prevLeaveYear.ID;
|
|||
|
oProcess.ProcessYearDescription = prevLeaveYear.Name;
|
|||
|
oProcess.IsYearEnd = true;
|
|||
|
oProcess.CreatedBy = this._userID;
|
|||
|
oProcess.CreatedDate = DateTime.Today;
|
|||
|
oProcess.PayrollTypeID = this._payrollTypeID;
|
|||
|
oProcess.LeaveYear = prevLeaveYear;
|
|||
|
oProcess.CreatedBy = this._userID;
|
|||
|
oProcess.CreatedDate = DateTime.Today;
|
|||
|
oProcess.PayrollTypeID = _columnDefinition.PayrollTypeID;
|
|||
|
new LeaveProcessService().SaveLeaveProcess(oProcess);
|
|||
|
}
|
|||
|
List<Employee> employees = new EmployeeService().GetAllEmps(this._payrollTypeID);
|
|||
|
//List<Leave> leaves = Payroll.BO.Leave.GetLeaves();
|
|||
|
Leave leave = oLeaves.Where(x => x.ID == _columnDefinition.SelectedItemOneID).FirstOrDefault();
|
|||
|
if (prevLeaveYear != null)
|
|||
|
{
|
|||
|
string[] statusArray = new string[5];
|
|||
|
string ErrorMsg = string.Empty;
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nrow = nrow + 1;
|
|||
|
try
|
|||
|
{
|
|||
|
string Empcode = "";
|
|||
|
string leaveCode = "";
|
|||
|
double CFDays = 0.0;
|
|||
|
|
|||
|
// double EncashDays = 0.0;
|
|||
|
if (Convert.ToString(dr[0].ToString().Trim()) != "")
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
Empcode = (Convert.ToString(dr[0].ToString().Trim()));
|
|||
|
ncolumn = 2;
|
|||
|
leaveCode = Convert.ToString(dr[1].ToString().Trim());
|
|||
|
ncolumn = 3;
|
|||
|
CFDays = Convert.ToDouble(dr[2].ToString().Trim());
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nrow, "(" + ")" + "unknow error found"));
|
|||
|
|
|||
|
|
|||
|
//MessageBox.Show("Invalid data in row: " + nrow.ToString() + " Column:" + ncolumn.ToString() + " Reason :" + ex.Message, "Invalid Input", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|||
|
continue;
|
|||
|
}
|
|||
|
if (leaveCode != leave.Code)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nrow, "(" + dr[1].ToString() + ")" + "leave code not match in the system "));
|
|||
|
//MessageBox.Show("Invalid leave code", "Invalid", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|||
|
return;
|
|||
|
}
|
|||
|
status = new EmpLeaveStatus();
|
|||
|
|
|||
|
lparameters = new List<LeaveParameter>();
|
|||
|
oLDetail = new LeaveParameter();
|
|||
|
leaveEntry = new LeaveEntry();
|
|||
|
|
|||
|
|
|||
|
if (leave == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nrow, "(" + dr[1].ToString() + ")" + "Leave Code Not found"));
|
|||
|
//MessageBox.Show("Leave Code : " + leaveCode + " " + " not found in database, Excel row: " + nrow.ToString() + " Column : 2", "Not Found", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|||
|
return;
|
|||
|
}
|
|||
|
Employee employee = employees.Find(delegate (Employee em) { return em.EmployeeNo == Empcode; });
|
|||
|
if (employee != null)
|
|||
|
{
|
|||
|
status.EmpId = employee.ID;
|
|||
|
status.CFDays = CFDays;
|
|||
|
status.YearEndBalance = CFDays;
|
|||
|
status.EncashDays = 0;
|
|||
|
status.LeaveId = leave.ID;
|
|||
|
status.ProcessId = oProcess.ID;
|
|||
|
status.LeaveYearID = oProcess.LeaveYearID;
|
|||
|
status.CarryFromPrvYear = 0;
|
|||
|
status.EncashAmount = 0;
|
|||
|
status.NormalLeaveDays = 0;
|
|||
|
|
|||
|
statuss.Add(status);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nrow, "(" + dr[0].ToString() + ")" + "Employee Not found"));
|
|||
|
//MessageBox.Show("Employee Code : " + Empcode + " is not found in database, Excel Row:" + nrow.ToString() + " Column : 1", "Not Found", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nrow, ex.Message));
|
|||
|
throw new Exception(ex.Message);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
status = new EmpLeaveStatus();
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
new LeaveProcessService().DeleteByPayrollType(prevLeaveYear.ID, _columnDefinition.PayrollTypeID, leave.ID);
|
|||
|
//foreach (EmpLeaveStatus es in statuss)
|
|||
|
//{
|
|||
|
new LeaveProcessService().SaveStatus(statuss);
|
|||
|
//}
|
|||
|
|
|||
|
//Cursor.Current = Cursors.Default;
|
|||
|
//MessageBox.Show("Data uploaded successfully.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|||
|
}
|
|||
|
catch (Exception exp)
|
|||
|
{
|
|||
|
throw new Exception(exp.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
public void ImportEmpLoanInformation(DataUploadColumnDefinition _columnDefinition)
|
|||
|
{
|
|||
|
List<Employee> oemployees = new EmployeeService().GetAllEmps((int)_columnDefinition.PayrollTypeID);
|
|||
|
Employee oemployee = null;
|
|||
|
List<LoanIssue> loanissues = new List<LoanIssue>();
|
|||
|
List<Loan> loans = new LoanService().Get(EnumStatus.Active);
|
|||
|
Loan loan = null;
|
|||
|
EnumLoanFraction _Fractionate = EnumLoanFraction.WithFraction;
|
|||
|
string _Method = string.Empty;
|
|||
|
LoanIssue loanissue = null;
|
|||
|
int nRow = 0;
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
oemployee = oemployees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr["EmployeeNo"].ToString(); });
|
|||
|
if (oemployee != null)
|
|||
|
{
|
|||
|
loanissue = new LoanIssue();
|
|||
|
loanissue.EmployeeID = oemployee.ID;
|
|||
|
loanissue.InterestRate = Convert.ToDouble(dr["Interest"]);
|
|||
|
loanissue.IssueDate = Convert.ToDateTime(dr["Loan Issue Date"]);
|
|||
|
loanissue.StartPaybackMonthDate = Convert.ToDateTime(dr["Disburse from Month"]);
|
|||
|
|
|||
|
loanissue.LoanAmount = Convert.ToDouble(dr["Loan Amount"]);
|
|||
|
loanissue.CreatedBy = this._userID;
|
|||
|
loanissue.CreatedDate = DateTime.Today;
|
|||
|
loan = new Loan();
|
|||
|
loan = loans.Find(delegate (Loan ln) { return ln.Name == dr["LoanType"].ToString(); });
|
|||
|
if (loan != null)
|
|||
|
{
|
|||
|
loanissue.LoanID = loan.ID;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("LoanType", nRow, "Loan type not found in the existing loans"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
loanissue.NoOfInstallments = Convert.ToInt32(dr["Schedule"]);
|
|||
|
//loanissue.StartPaybackMonthDate = GlobalFunctions.LastDateOfMonth(loanissue.IssueDate);
|
|||
|
|
|||
|
|
|||
|
if (loan.LoanGroup == EnumLoanGroup.PF_Loan)
|
|||
|
{
|
|||
|
loanissue.loan = loan;
|
|||
|
loanissue.Schedules = new List<LoanSchedule>();
|
|||
|
loanissue.Schedules = loanissue.PreparePFLoanSchedule(loanissue);
|
|||
|
}
|
|||
|
else if (loan.LoanGroup == EnumLoanGroup.Flat_Amount)
|
|||
|
{
|
|||
|
loanissue.loan = loan;
|
|||
|
loanissue.Schedules = new List<LoanSchedule>();
|
|||
|
loanissue.Schedules = loanissue.PrepareFlatAmountSchedule(loanissue);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
loanissue.Schedules = new List<LoanSchedule>();
|
|||
|
loanissue.Schedules = loanissue.PrepareEMISchedule(loanissue);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
loanissues.Add(loanissue);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["EmployeeNo"].ToString() + ")" + "Employee not found for in the existing data"));
|
|||
|
}
|
|||
|
}
|
|||
|
if (_errorOrSuccessList.Count == 0)
|
|||
|
{
|
|||
|
new LoanIssueService().SaveAll(loanissues);
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occured on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void ImportLeaveEncashDays(DataUploadColumnDefinition _columnDefinition)
|
|||
|
{
|
|||
|
EmpLeaveStatus status;
|
|||
|
int nrow = 0;
|
|||
|
List<EmpLeaveStatus> leavestatuses = new LeaveProcessService().GetByYearType( _columnDefinition.SelectedItemTwoID, _columnDefinition.SelectedItemOneID);
|
|||
|
List<Employee> employees = new EmployeeService().GetAllEmps(this._payrollTypeID);
|
|||
|
|
|||
|
string[] statusArray = new string[5];
|
|||
|
string ErrorMsg = string.Empty;
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nrow = nrow + 1;
|
|||
|
try
|
|||
|
{
|
|||
|
string Empcode = "";
|
|||
|
double EncashDays = 0.0;
|
|||
|
|
|||
|
if (Convert.ToString(dr[0].ToString().Trim()) != "")
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
Empcode = (Convert.ToString(dr[0].ToString().Trim()));
|
|||
|
EncashDays = Convert.ToDouble(dr[1].ToString().Trim());
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nrow, "(" + ")" + "unknow error found"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
status = new EmpLeaveStatus();
|
|||
|
|
|||
|
Employee employee = employees.Find(delegate (Employee em) { return em.EmployeeNo == Empcode; });
|
|||
|
if (employee != null)
|
|||
|
{
|
|||
|
status = leavestatuses.FirstOrDefault(x => x.EmpId == employee.ID );
|
|||
|
if (status == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nrow, "(" + dr[0].ToString() + ")" + " Leave process record not found."));
|
|||
|
continue;
|
|||
|
}
|
|||
|
status.YearEndBalance = status.YearEndBalance + status.EncashDays;
|
|||
|
status.EncashDays = EncashDays;
|
|||
|
status.YearEndBalance = status.YearEndBalance - EncashDays ;
|
|||
|
if(status.YearEndBalance <0)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nrow, "(" + dr[0].ToString() + ")" + "Year-End balance can't be less Zero"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nrow, "(" + dr[0].ToString() + ")" + "Employee Not found"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nrow, ex.Message));
|
|||
|
throw new Exception(ex.Message);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
if(_errorOrSuccessList.Count ==0)
|
|||
|
new LeaveProcessService().SaveStatus(leavestatuses);
|
|||
|
}
|
|||
|
catch (Exception exp)
|
|||
|
{
|
|||
|
throw new Exception(exp.Message);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
public void ImportLeaveEntry(DataUploadColumnDefinition _columnDefinition)
|
|||
|
{
|
|||
|
LeaveYear currLeaveYear = new LeaveYearService().GetCurrentYear(this._payrollTypeID);
|
|||
|
var arrayNames = (from DataColumn x in _uplodedData.Columns
|
|||
|
select x.ColumnName).ToArray();
|
|||
|
List<string> sNames = new List<string>();
|
|||
|
sNames.Add("Employee No");
|
|||
|
sNames.Add("Leave Code");
|
|||
|
sNames.Add("From Date");
|
|||
|
sNames.Add("To Date");
|
|||
|
sNames.Add("Leave Availed");
|
|||
|
sNames.Add("Remarks");
|
|||
|
|
|||
|
bool bFound = false;
|
|||
|
string sErrorColumnName = "";
|
|||
|
foreach (string ss in sNames)
|
|||
|
{
|
|||
|
|
|||
|
bFound = false;
|
|||
|
var result = arrayNames.Where(le => le.ToString() == ss);
|
|||
|
foreach (string sss in result)
|
|||
|
{
|
|||
|
bFound = true;
|
|||
|
}
|
|||
|
if (!bFound)
|
|||
|
{
|
|||
|
if (sErrorColumnName == "")
|
|||
|
sErrorColumnName = ss;
|
|||
|
else
|
|||
|
sErrorColumnName += ", " + ss;
|
|||
|
}
|
|||
|
}
|
|||
|
if (sErrorColumnName != "")
|
|||
|
{
|
|||
|
//MessageBox.Show("Column(" + sErrorColumnName + ") not found", "From Excel", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
List<LeaveEntry> leaveentries = new LeaveEntryService().GetByLeaveYear(currLeaveYear.ID);
|
|||
|
int nRowCount = 1;
|
|||
|
LeaveEntry leaveEntry = new LeaveEntry();
|
|||
|
List<LeaveEntry> leaveEntrys = new List<LeaveEntry>();
|
|||
|
List<Employee> employees = new EmployeeService().GetAllEmps();
|
|||
|
List<Leave> oLeaves = new LeaveService().GetAll();
|
|||
|
List<LeaveParameter> oLeaveParameters = new List<LeaveParameter>();
|
|||
|
List<LeaveParameter> leaveParamss = new LeaveParameterService().Get(EnumStatus.Regardless, _columnDefinition.PayrollTypeID, null, true);
|
|||
|
Leave leave = oLeaves.Where(x => x.ID == _columnDefinition.SelectedItemOneID).FirstOrDefault();
|
|||
|
string[] statusArray = new string[5];
|
|||
|
string ErrorMsg = string.Empty;
|
|||
|
int nRow = 0;
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
//employee = new Employee();
|
|||
|
//leave = new Leave();
|
|||
|
try
|
|||
|
{
|
|||
|
leaveEntry = new LeaveEntry();
|
|||
|
string Empcode = Convert.ToString(dr[0].ToString().Trim());
|
|||
|
string leaveCode = Convert.ToString(dr[1].ToString().Trim());
|
|||
|
//Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
|
|||
|
DateTime fromDate = DateTime.Parse(dr[2].ToString().Trim());
|
|||
|
DateTime toDate = DateTime.Parse(dr[3].ToString().Trim());
|
|||
|
double totalDays = Convert.ToDouble(dr[4].ToString().Trim());
|
|||
|
string remarks = dr[5].ToString().Trim();
|
|||
|
|
|||
|
//Leave leave = leaves.Find(delegate(Payroll.BO.Leave le) { return le.Code == leaveCode; });
|
|||
|
Employee employee = employees.Find(delegate (Employee em) { return em.EmployeeNo == Empcode; });
|
|||
|
if (employee == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee Not found"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
if (leave == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "(" + dr["Employee No"].ToString() + ")" + "Leave not found"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
if (leaveCode != leave.Code)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "(" + dr["Employee No"].ToString() + ")" + "Leave code not match"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
List<LeaveEntry> tempLS = leaveentries.Where(x => x.AppliedFromDate >= fromDate
|
|||
|
&& x.AppliedFromDate <= toDate
|
|||
|
&& x.EmpID == employee.ID
|
|||
|
&& x.LeaveStatus != EnumLeaveStatus.Declined
|
|||
|
&& x.LeaveStatus != EnumLeaveStatus.Cancel).ToList();
|
|||
|
if (tempLS.Count > 0)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "(" + dr["Employee No"].ToString() + ")" + " Overlap with previously applied leaves."));
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
oLeaveParameters = new LeaveParameterService().GetApplicableParam(leaveParamss, oLeaves, (int)employee.GradeID, EnumLeaveparamOn.Grade, employee);
|
|||
|
if (oLeaveParameters != null && oLeaveParameters.Count > 0)
|
|||
|
{
|
|||
|
LeaveParameter param = oLeaveParameters.FirstOrDefault(x => x.LeaveId == leave.ID);
|
|||
|
if (param != null)
|
|||
|
{
|
|||
|
leaveEntry.AppliedParamId = param.ID;
|
|||
|
leaveEntry.ApprovedParamId = param.ID;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "(" + dr["Employee No"].ToString() + ")" + "Leave Setup not found"));
|
|||
|
//MessageBox.Show("Leave Parameter not found for leave:" + leaveCode + " For Employee:" + employee.EmployeeNo, "Not Found", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
leaveEntry.EmpID = employee.ID;
|
|||
|
leaveEntry.AppliedLeaveDate = fromDate;
|
|||
|
leaveEntry.AppliedFromDate = fromDate;
|
|||
|
leaveEntry.AppliedToDate = toDate;
|
|||
|
leaveEntry.ApprovedFromDate = fromDate;
|
|||
|
leaveEntry.ApprovedToDate = toDate;
|
|||
|
leaveEntry.AppliedTotalDays = totalDays;
|
|||
|
leaveEntry.ApprovedTotalDays = totalDays;
|
|||
|
leaveEntry.AvailFromDate = fromDate;
|
|||
|
leaveEntry.AvailToDate = toDate;
|
|||
|
leaveEntry.AvailTotalDays = totalDays;
|
|||
|
leaveEntry.LeaveID = leave.ID;
|
|||
|
leaveEntry.SbuID = 0;
|
|||
|
leaveEntry.FunctionID = 0;
|
|||
|
leaveEntry.DepartmentID = employee.DepartmentID != null ? (int)employee.DepartmentID : 0;
|
|||
|
leaveEntry.DesignationID = employee.DesignationID != null ? (int)employee.DesignationID : 0;
|
|||
|
leaveEntry.LocationID = 0;
|
|||
|
leaveEntry.EmpGradeId = employee.GradeID != null ? (int)employee.GradeID : 0;
|
|||
|
leaveEntry.LeaveYearId = currLeaveYear.ID;
|
|||
|
leaveEntry.LeaveStatus = EnumLeaveStatus.Approved;
|
|||
|
leaveEntry.Remarks = remarks;
|
|||
|
leaveEntrys.Add(leaveEntry);
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "(" + dr["Employee No"].ToString() + ")" + ex.Message));
|
|||
|
}
|
|||
|
nRowCount++;
|
|||
|
}
|
|||
|
if (_errorOrSuccessList.Count == 0)
|
|||
|
new LeaveEntryService().SaveLeaveEntry(leaveEntrys);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//public void ImportLeaveEntryLf(DataUploadColumnDefinition _columnDefinition, int userID)
|
|||
|
//{
|
|||
|
// try
|
|||
|
// {
|
|||
|
// LeaveYear currLeaveYear = new LeaveYearService().GetCurrentYear(this._payrollTypeID);
|
|||
|
// List<LeaveEntry> leaveentries = new LeaveEntryService().GetByLeaveYear(currLeaveYear.ID);
|
|||
|
// int nRowCount = 1;
|
|||
|
// LeaveEntry leaveEntry = new LeaveEntry();
|
|||
|
// List<LeaveEntry> leaveEntrys = new List<LeaveEntry>();
|
|||
|
// List<Employee> employees = new EmployeeService().GetAllEmps();
|
|||
|
// List<Leave> oLeaves = new LeaveService().GetAll();
|
|||
|
// List<LeaveParameter> oLeaveParameters = new List<LeaveParameter>();
|
|||
|
// List<LeaveParameter> leaveParamss = new LeaveParameterService().Get(EnumStatus.Regardless, _columnDefinition.PayrollTypeID, null, true);
|
|||
|
// string[] statusArray = new string[5];
|
|||
|
// string ErrorMsg = string.Empty;
|
|||
|
// int nRow = 0;
|
|||
|
// DateTime dateTime;
|
|||
|
|
|||
|
|
|||
|
// string[] dateFormats = {"dd/MM/yyyy HH:mm:ss", "d/M/yyyy HH:mm:ss", "dd/MM/yyyy hh:mm:ss tt", "d/M/yyyy hh:mm:ss tt", "dd/MM/yyyy HH:mm",
|
|||
|
// "d/M/yyyy HH:mm", "dd/MM/yyyy hh:mm tt", "d/M/yyyy hh:mm tt",
|
|||
|
// "dd/MM/yyyy", "d/M/yyyy", "dd/M/yyyy", "d/MM/yyyy"};
|
|||
|
|
|||
|
// foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
// {
|
|||
|
// nRow = nRow + 1;
|
|||
|
// try
|
|||
|
// {
|
|||
|
// leaveEntry = new LeaveEntry();
|
|||
|
// string Empcode = Convert.ToString(dr[0].ToString().Trim());
|
|||
|
// string leaveCode = Convert.ToString(dr[1].ToString().Trim());
|
|||
|
// DateTime fromDate = new DateTime();
|
|||
|
// DateTime toDate = new DateTime();
|
|||
|
// Leave leave = oLeaves.Where(x => x.Description == leaveCode).FirstOrDefault();
|
|||
|
// if (dr[2] != null)
|
|||
|
// {
|
|||
|
|
|||
|
// fromDate = DateTime.ParseExact(dr[2].ToString().Trim(), dateFormats, CultureInfo.InvariantCulture, DateTimeStyles.None);
|
|||
|
// }
|
|||
|
|
|||
|
// if (dr[3] != null)
|
|||
|
// {
|
|||
|
// toDate = DateTime.ParseExact(dr[3].ToString().Trim(), dateFormats, CultureInfo.InvariantCulture, DateTimeStyles.None);
|
|||
|
// }
|
|||
|
// double totalDays = Convert.ToDouble(dr[4].ToString().Trim());
|
|||
|
// string remarks = dr[10].ToString().Trim();
|
|||
|
|
|||
|
// Employee employee = employees.Find(delegate (Employee em) { return em.EmployeeNo == Empcode; });
|
|||
|
// if (employee == null)
|
|||
|
// {
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "[" + dr["EMPNO"].ToString() + "]" + "Employee Not found"));
|
|||
|
// continue;
|
|||
|
// }
|
|||
|
|
|||
|
// if (leave == null)
|
|||
|
// {
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "[" + dr["LEAVE_TYPE"].ToString() + "]" + "Leave Type not found"));
|
|||
|
// continue;
|
|||
|
// }
|
|||
|
// //if (leaveCode != leave.Description)
|
|||
|
// //{
|
|||
|
// // _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "(" + dr["Employee No"].ToString() + ")" + "Leave code not match"));
|
|||
|
// // continue;
|
|||
|
// //}
|
|||
|
|
|||
|
// List<LeaveEntry> tempLS = leaveentries.Where(x => x.AppliedFromDate >= fromDate
|
|||
|
// && x.AppliedFromDate <= toDate
|
|||
|
// && x.EmpID == employee.ID
|
|||
|
// && x.LeaveStatus != EnumLeaveStatus.Declined
|
|||
|
// && x.LeaveStatus != EnumLeaveStatus.Cancel).ToList();
|
|||
|
// if (tempLS.Count > 0)
|
|||
|
// {
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "[" + dr["EMPNO"].ToString() + "]" + " Overlap with previously applied leaves."));
|
|||
|
// continue;
|
|||
|
// }
|
|||
|
|
|||
|
// oLeaveParameters = new LeaveParameterService().GetApplicableParam(leaveParamss, (int)employee.GradeID, EnumLeaveparamOn.Grade, employee);
|
|||
|
// if (oLeaveParameters != null && oLeaveParameters.Count > 0)
|
|||
|
// {
|
|||
|
// LeaveParameter param = oLeaveParameters.FirstOrDefault(x => x.LeaveId == leave.ID);
|
|||
|
// if (param != null)
|
|||
|
// {
|
|||
|
// leaveEntry.AppliedParamId = param.ID;
|
|||
|
// leaveEntry.ApprovedParamId = param.ID;
|
|||
|
// }
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "[" + dr["EMPNO"].ToString() + "]" + "Leave Parameter not found"));
|
|||
|
// continue;
|
|||
|
// }
|
|||
|
|
|||
|
// leaveEntry.EmpID = employee.ID;
|
|||
|
// leaveEntry.AppliedLeaveDate = fromDate;
|
|||
|
// leaveEntry.AppliedFromDate = fromDate;
|
|||
|
// leaveEntry.AppliedToDate = toDate;
|
|||
|
// leaveEntry.ApprovedFromDate = fromDate;
|
|||
|
// leaveEntry.ApprovedToDate = toDate;
|
|||
|
// leaveEntry.AppliedTotalDays = totalDays;
|
|||
|
// leaveEntry.ApprovedTotalDays = totalDays;
|
|||
|
// leaveEntry.AvailFromDate = fromDate;
|
|||
|
// leaveEntry.AvailToDate = toDate;
|
|||
|
// leaveEntry.AvailTotalDays = totalDays;
|
|||
|
// leaveEntry.LeaveID = leave.ID;
|
|||
|
// leaveEntry.SbuID = 0;
|
|||
|
// leaveEntry.CreatedBy = userID;
|
|||
|
// leaveEntry.FunctionID = 0;
|
|||
|
// leaveEntry.DepartmentID = employee.DepartmentID != null ? (int)employee.DepartmentID : 0;
|
|||
|
// leaveEntry.DesignationID = employee.DesignationID != null ? (int)employee.DesignationID : 0;
|
|||
|
// leaveEntry.LocationID = 0;
|
|||
|
// leaveEntry.EmpGradeId = employee.GradeID != null ? (int)employee.GradeID : 0;
|
|||
|
// leaveEntry.LeaveYearId = currLeaveYear.ID;
|
|||
|
// leaveEntry.LeaveStatus = EnumLeaveStatus.Approved;
|
|||
|
// leaveEntry.Remarks = remarks;
|
|||
|
// leaveEntrys.Add(leaveEntry);
|
|||
|
|
|||
|
// }
|
|||
|
// catch (Exception ex)
|
|||
|
// {
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "(" + dr["EMPNO"].ToString() + ")" + ex.Message));
|
|||
|
// }
|
|||
|
// nRowCount++;
|
|||
|
// }
|
|||
|
// if (_errorOrSuccessList.Count == 0)
|
|||
|
// new LeaveEntryService().SaveLeaveEntry(leaveEntrys);
|
|||
|
// }
|
|||
|
// catch (Exception ex)
|
|||
|
// {
|
|||
|
// }
|
|||
|
//}
|
|||
|
public void ImportEmpCC(DataUploadColumnDefinition _columnDefinition)
|
|||
|
{
|
|||
|
List<Employee> oemployees = new EmployeeService().GetAllEmps(_columnDefinition.PayrollTypeID);
|
|||
|
Employee oemployee = null;
|
|||
|
|
|||
|
List<Costcenter> oCostcenters = new CostcenterService().Get(EnumStatus.Regardless, _columnDefinition.PayrollTypeID);
|
|||
|
Costcenter oCC = null;
|
|||
|
List<EmployeeCostCenter> oempCostCenters = new List<EmployeeCostCenter>();
|
|||
|
PayrollType ptype = new PayrollTypeService().Get(_columnDefinition.PayrollTypeID);
|
|||
|
EmployeeCostCenter oempCostCenter = null;
|
|||
|
int nRow = 0;
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
oemployee = oemployees.Find(delegate (Employee emp) { return emp.EmployeeNo == dr["Employee No"].ToString(); });
|
|||
|
if (oemployee != null)
|
|||
|
{
|
|||
|
oCC = oCostcenters.Find(delegate (Costcenter item) { return item.Code == dr["Costcenter Code"].ToString(); });
|
|||
|
if (oCC != null && Convert.ToDouble(dr["Involve Percent"]) == 100)
|
|||
|
{
|
|||
|
oempCostCenter = new EmployeeCostCenter();
|
|||
|
oempCostCenter.EmployeeID = oemployee.ID;
|
|||
|
oempCostCenter.CostCenterID = oCC.ID;
|
|||
|
oempCostCenter.Percentage = Convert.ToDouble(dr["Involve Percent"]);
|
|||
|
oempCostCenter.IsCurrentCC = true;
|
|||
|
oempCostCenter.MonthDate = ptype.NextPayProcessDate;
|
|||
|
oempCostCenters.Add(oempCostCenter);
|
|||
|
|
|||
|
}
|
|||
|
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("CostCenter Code", nRow, "Cost center code not found in the existing Cost Centers or involvement percent not equal 100"));
|
|||
|
|
|||
|
}
|
|||
|
else _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No.", nRow, "(" + dr["Employee No"].ToString() + ")" + "Employee not found for in the existing data"));
|
|||
|
}
|
|||
|
if (_errorOrSuccessList.Count == 0)
|
|||
|
new EmployeeCostCenterService().Save(oempCostCenters);
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new ServiceException("Error occured on row:" + nRow + " Reason:" + ex.Message);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void ImportLeaveEntryLf(DataUploadColumnDefinition _columnDefinition, int userID)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
LeaveYear lfcurrLeaveYear = new LeaveYearService().GetCurrentYear(1);
|
|||
|
List<LeaveEntry> lfleaveentries = new LeaveEntryService().GetByLeaveYear(1);
|
|||
|
|
|||
|
LeaveYear ccurrLeaveYear = new LeaveYearService().GetCurrentYear(2);
|
|||
|
List<LeaveEntry> cleaveentries = new LeaveEntryService().GetByLeaveYear(2);
|
|||
|
|
|||
|
LeaveYear gspcurrLeaveYear = new LeaveYearService().GetCurrentYear(3);
|
|||
|
List<LeaveEntry> gspleaveentries = new LeaveEntryService().GetByLeaveYear(3);
|
|||
|
|
|||
|
int nRowCount = 1;
|
|||
|
LeaveEntry leaveEntry = new LeaveEntry();
|
|||
|
List<LeaveEntry> leaveEntrys = new List<LeaveEntry>();
|
|||
|
List<Employee> employees = new EmployeeService().GetAllEmps();
|
|||
|
List<Leave> oLeaves = new LeaveService().GetAll();
|
|||
|
List<LeaveParameter> oLeaveParameters = new List<LeaveParameter>();
|
|||
|
List<LeaveParameter> leaveParamss = new LeaveParameterService().Get(EnumStatus.Regardless, _columnDefinition.PayrollTypeID, null, true);
|
|||
|
string[] statusArray = new string[5];
|
|||
|
string ErrorMsg = string.Empty;
|
|||
|
int nRow = 0;
|
|||
|
DateTime dateTime;
|
|||
|
|
|||
|
string[] dateFormats = {"dd/MM/yyyy HH:mm:ss", "d/M/yyyy HH:mm:ss", "dd/MM/yyyy hh:mm:ss tt", "d/M/yyyy hh:mm:ss tt", "dd/MM/yyyy HH:mm",
|
|||
|
"d/M/yyyy HH:mm", "dd/MM/yyyy hh:mm tt", "d/M/yyyy hh:mm tt",
|
|||
|
"dd/MM/yyyy", "d/M/yyyy", "dd/M/yyyy", "d/MM/yyyy"};
|
|||
|
|
|||
|
LeaveYear currLeaveYear = null;
|
|||
|
List<LeaveEntry> leaveentries = null;
|
|||
|
|
|||
|
foreach (DataRow dr in _uplodedData.Rows)
|
|||
|
{
|
|||
|
nRow = nRow + 1;
|
|||
|
try
|
|||
|
{
|
|||
|
leaveEntry = new LeaveEntry();
|
|||
|
string Empcode = Convert.ToString(dr[0].ToString().Trim());
|
|||
|
string leaveCode = Convert.ToString(dr[1].ToString().Trim());
|
|||
|
DateTime fromDate = new DateTime();
|
|||
|
DateTime toDate = new DateTime();
|
|||
|
Leave leave = oLeaves.Where(x => x.Description == leaveCode).FirstOrDefault();
|
|||
|
|
|||
|
Employee employee = employees.Find(delegate (Employee em) { return em.EmployeeNo == Empcode; });
|
|||
|
if (employee == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "[" + dr["EMPNO"].ToString() + "]" + "Employee Not found"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
if (employee.PayrollTypeID == 1)
|
|||
|
{
|
|||
|
currLeaveYear = lfcurrLeaveYear;
|
|||
|
leaveentries = lfleaveentries;
|
|||
|
}
|
|||
|
else if (employee.PayrollTypeID == 2)
|
|||
|
{
|
|||
|
currLeaveYear = ccurrLeaveYear;
|
|||
|
leaveentries = cleaveentries;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
currLeaveYear = gspcurrLeaveYear;
|
|||
|
leaveentries = gspleaveentries;
|
|||
|
}
|
|||
|
|
|||
|
if (dr[2] != null)
|
|||
|
{
|
|||
|
DateTime parsedDate = DateTime.Parse(dr[2].ToString());
|
|||
|
if (parsedDate != null)
|
|||
|
{
|
|||
|
fromDate = parsedDate;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "[" + dr["EMPNO"].ToString() + "]" + "Invalid/Null LEAVE_START_DATE date"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
//fromDate = DateTime.ParseExact(dr[2].ToString().Trim(), dateFormats, CultureInfo.InvariantCulture, DateTimeStyles.None);
|
|||
|
}
|
|||
|
if(fromDate<currLeaveYear.StartDate)
|
|||
|
{
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
if (dr[3] != null)
|
|||
|
{
|
|||
|
DateTime parsedDate = DateTime.Parse(dr[3].ToString());
|
|||
|
if (parsedDate != null)
|
|||
|
{
|
|||
|
toDate = parsedDate;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "[" + dr["EMPNO"].ToString() + "]" + "Invalid/Null LEAVE_END_DATE date"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
//toDate = DateTime.ParseExact(dr[3].ToString().Trim(), dateFormats, CultureInfo.InvariantCulture, DateTimeStyles.None);
|
|||
|
}
|
|||
|
double totalDays = Convert.ToDouble(dr[4].ToString().Trim());
|
|||
|
string remarks = dr[10].ToString().Trim();
|
|||
|
|
|||
|
if (leave == null)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "[" + dr["LEAVE_TYPE"].ToString() + "]" + "Leave Type not found"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
//if (leaveCode != leave.Description)
|
|||
|
//{
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "(" + dr["Employee No"].ToString() + ")" + "Leave code not match"));
|
|||
|
// continue;
|
|||
|
//}
|
|||
|
|
|||
|
//List<LeaveEntry> tempLS = leaveentries.Where(x => x.AppliedFromDate >= fromDate //validation to prevent duplicate data entry
|
|||
|
//&& x.AppliedFromDate <= toDate
|
|||
|
//&& x.EmpID == employee.ID
|
|||
|
//&& x.LeaveStatus != EnumLeaveStatus.Declined
|
|||
|
//&& x.LeaveStatus != EnumLeaveStatus.Cancel).ToList();
|
|||
|
string status = dr["status"].ToString();
|
|||
|
|
|||
|
status = dr["status"].ToString();
|
|||
|
|
|||
|
if (status == "N" || status == "n")
|
|||
|
{
|
|||
|
List<LeaveEntry> tempLS = leaveentries.Where(x => x.AppliedFromDate >= fromDate //validation to prevent duplicate data entry
|
|||
|
&& x.AppliedFromDate <= toDate
|
|||
|
&& x.EmpID == employee.ID
|
|||
|
&& x.LeaveStatus == EnumLeaveStatus.Approved).ToList();
|
|||
|
if (tempLS.Count > 0)
|
|||
|
{
|
|||
|
// _errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "[" + dr["EMPNO"].ToString() + "]" + " Overlap with previously applied leaves."));
|
|||
|
continue;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
oLeaveParameters = new LeaveParameterService().GetApplicableParam(leaveParamss,oLeaves, (int)employee.GradeID, EnumLeaveparamOn.Grade, employee);
|
|||
|
if (oLeaveParameters != null && oLeaveParameters.Count > 0)
|
|||
|
{
|
|||
|
LeaveParameter param = oLeaveParameters.FirstOrDefault(x => x.LeaveId == leave.ID);
|
|||
|
if (param != null)
|
|||
|
{
|
|||
|
leaveEntry.AppliedParamId = param.ID;
|
|||
|
leaveEntry.ApprovedParamId = param.ID;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "[" + dr["EMPNO"].ToString() + "]" + "Leave Parameter not found"));
|
|||
|
continue;
|
|||
|
}
|
|||
|
|
|||
|
leaveEntry.EmpID = employee.ID;
|
|||
|
leaveEntry.AppliedLeaveDate = fromDate;
|
|||
|
leaveEntry.AppliedFromDate = fromDate;
|
|||
|
leaveEntry.AppliedToDate = toDate;
|
|||
|
leaveEntry.ApprovedFromDate = fromDate;
|
|||
|
leaveEntry.ApprovedToDate = toDate;
|
|||
|
leaveEntry.AppliedTotalDays = totalDays;
|
|||
|
leaveEntry.ApprovedTotalDays = totalDays;
|
|||
|
leaveEntry.AvailFromDate = fromDate;
|
|||
|
leaveEntry.AvailToDate = toDate;
|
|||
|
leaveEntry.AvailTotalDays = totalDays;
|
|||
|
leaveEntry.LeaveID = leave.ID;
|
|||
|
leaveEntry.SbuID = 0;
|
|||
|
leaveEntry.CreatedBy = userID;
|
|||
|
leaveEntry.FunctionID = 0;
|
|||
|
leaveEntry.DepartmentID = employee.DepartmentID != null ? (int)employee.DepartmentID : 0;
|
|||
|
leaveEntry.DesignationID = employee.DesignationID != null ? (int)employee.DesignationID : 0;
|
|||
|
leaveEntry.LocationID = 0;
|
|||
|
leaveEntry.EmpGradeId = employee.GradeID != null ? (int)employee.GradeID : 0;
|
|||
|
leaveEntry.LeaveYearId = currLeaveYear.ID;
|
|||
|
|
|||
|
leaveEntry.LeaveStatus = EnumLeaveStatus.Approved;
|
|||
|
|
|||
|
if (status == "V" || status == "v")
|
|||
|
{ leaveEntry.LeaveStatus = EnumLeaveStatus.Cancelled_by_user; }
|
|||
|
|
|||
|
leaveEntry.Remarks = remarks;
|
|||
|
leaveEntrys.Add(leaveEntry);
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
_errorOrSuccessList.Add(UploadErrorOrSuccess.Create("Employee No", nRow, "(" + dr["EMPNO"].ToString() + ")" + ex.Message));
|
|||
|
}
|
|||
|
nRowCount++;
|
|||
|
}
|
|||
|
//if (_errorOrSuccessList.Count == 0)
|
|||
|
new LeaveEntryService().SaveLeaveEntryLifFung(leaveEntrys);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
#region Import LineManager
|
|||
|
//public void SaveEmpLineManager2()
|
|||
|
//{
|
|||
|
// try
|
|||
|
// {
|
|||
|
// new Employee().UpdateLM2(_employeesForSave);
|
|||
|
// }
|
|||
|
// catch (Exception ex)
|
|||
|
// {
|
|||
|
// throw new ServiceException(ex.Message);
|
|||
|
// }
|
|||
|
//}
|
|||
|
|
|||
|
#endregion
|
|||
|
//public void UpdateLocation( List<Employee> employees)
|
|||
|
//{
|
|||
|
// TransactionContext tc = null;
|
|||
|
// try
|
|||
|
// {
|
|||
|
// tc = TransactionContext.Begin(true);
|
|||
|
// List<Location> olocations = new List<Location>();
|
|||
|
// int locID =50;
|
|||
|
// Location op = Location.Get(ID.FromInteger(5));
|
|||
|
// olocations.Add(op);
|
|||
|
// foreach (Employee emp in employees)
|
|||
|
// {
|
|||
|
// //oemployee = oemployees.Find(delegate(Employee emp) { return emp.EmployeeNo == dr["Employee No"].ToString(); });
|
|||
|
// Location onewloc= olocations.Find(delegate (Location item) {return item.Name == emp.Location.Name ;});
|
|||
|
// if (onewloc == null)
|
|||
|
// {
|
|||
|
// locID = locID + 1;
|
|||
|
// emp.Location.SetObjectID(locID);
|
|||
|
// olocations.Add(emp.Location);
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// emp.Location.SetObjectID(onewloc.ID.Integer);
|
|||
|
// }
|
|||
|
// }
|
|||
|
// if (olocations.Count>0)
|
|||
|
// LocationService.SaveForUpload(tc, olocations);
|
|||
|
// //foreach (Employee emp in employees)
|
|||
|
// //{
|
|||
|
// // MiscellaneousDA.updateLocation(tc, emp.ID, emp.Location.ID);
|
|||
|
// //}
|
|||
|
|
|||
|
// tc.End();
|
|||
|
|
|||
|
// }
|
|||
|
|
|||
|
// catch (Exception e)
|
|||
|
// {
|
|||
|
// #region Handle Exception
|
|||
|
// if (tc != null)
|
|||
|
// tc.HandleError();
|
|||
|
// ExceptionLog.Write(e);
|
|||
|
// throw new ServiceException(e.Message, e);
|
|||
|
// #endregion
|
|||
|
// }
|
|||
|
|
|||
|
//}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
protected override T CreateObject<T>(Ease.Core.DataAccess.DataReader dr)
|
|||
|
{
|
|||
|
throw new NotImplementedException();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|