using System; using System.Data; using Ease.Core.DataAccess; using HRM.BO; namespace HRM.DA { internal class ADParameterEmployeeDA { #region Constructor private ADParameterEmployeeDA() { } #endregion #region Insert function internal static void Insert(TransactionContext tc, ADParameterEmployee item) { //, ModifiedBy, ModifiedDate //,%n,%d //, item.CreatedBy, DataReader.GetNullValue(item.CreatedDate) string sql = SQLParser.MakeSQL( "INSERT INTO ADParameterEmployee(ADPARAMETEREMPID, ADParameterID, AllowDeductID, Periodicity, EmployeeID, FROMDATE, TillDate, MonthlyAmount, TotalAmount, ARREARINFO, ADEMPTYPE, ValueType, DISBURSEDAMOUNT, ENTRYDATE,TracNo,ModifiedBy,ModifiedDate)" + " VALUES(%n, %n, %n, %n, %n, %d, %d, %n, %n, %n, %n, %n, %n, %d,%s,%n,%D)", item.ID, DataReader.GetNullValue(item.ADParameterID, 0), DataReader.GetNullValue(item.AllowDeductID, 0), item.Periodicity, item.EmployeeID, item.FormDate, DataReader.GetNullValue(item.TillDate), item.MonthlyAmount, item.TotalAmount, item.Arreartype, item.ADEmpType, item.ValueType, item.DisburseAmount, DateTime.Now, item.TracNo, item.ModifiedBy == null ? DataReader.GetNullValue(item.CreatedBy, 0) : DataReader.GetNullValue(item.ModifiedBy), item.ModifiedDate == null ? item.CreatedDate : item.ModifiedDate); tc.ExecuteNonQuery(sql); } #endregion #region Update function internal static void Update(TransactionContext tc, ADParameterEmployee item) { tc.ExecuteNonQuery( "UPDATE ADParameterEmployee SET aDParameterID=%n, allowDeductID=%n, periodicity=%n, employeeID=%n, FROMDATE=%d, tillDate=%d, monthlyAmount=%n, totalAmount=%n, ARREARINFO=%n, ModifiedBy=%n, ModifiedDate=%D, ADEMPTYPE=%n, ValueType=%n, DISBURSEDAMOUNT=%n,TracNo=%s" + " WHERE ADPARAMETEREMPID=%n", item.ADParameterID, item.AllowDeductID, item.Periodicity, item.EmployeeID, item.FormDate, DataReader.GetNullValue(item.TillDate), item.MonthlyAmount, item.TotalAmount, item.Arreartype, item.ModifiedBy, item.ModifiedDate, item.ADEmpType, item.ValueType, item.DisburseAmount, item.TracNo, item.ID); } internal static void UpdateAmountAndDate(TransactionContext tc, ADParameterEmployee item) { tc.ExecuteNonQuery( "UPDATE ADParameterEmployee SET FROMDATE=%d, tillDate=%d, monthlyAmount=%n, totalAmount=%n, ModifiedBy=%n, ModifiedDate=%D" + " WHERE ADPARAMETEREMPID=%n", item.FormDate, DataReader.GetNullValue(item.TillDate), item.MonthlyAmount, item.TotalAmount, item.ModifiedBy, item.ModifiedDate, item.ID); } #endregion #region Get Function internal static IDataReader GetByEmployee(TransactionContext tc, int nEmpID, EnumAllowOrDeduct adType, EnumADEmpType adEmpType, int payrollTypeId, DateTime nextPayProcessDate) { return tc.ExecuteReader("SELECT * FROM ADParameterEmployee Where EmployeeID = %n AND ADEMPTYPE = %n " + " AND ADPARAMETERID IN (SELECT ADPARAMETERID FROM ADParameterBasic WHERE PayrollTypeID=%n AND AllowORDeduct = %n AND IsCurrentlyActive <> 0)" + " AND ( (TillDate >= %d OR TillDate IS Null) AND " + " (FromDate <= %d) OR ArrearInfo =%n )", nEmpID, adEmpType, payrollTypeId, adType, PayrollGlobalFunctions.PayrollFirstDateOfMonth(nextPayProcessDate), nextPayProcessDate, EnumArrearType.ToCalculate); } internal static IDataReader GetByEmployee(TransactionContext tc, int nEmpID, int nAllowDeductID, int payrollTypeId) { return tc.ExecuteReader( "Select AD.* from ADPARAMETEREMPLOYEE AD, ADParameterBasic AB WHERE AB.PayrollTypeID=%n AND AB.ADParameterID=AD.ADParameterID AND AD.EMPLOYEEID=%n AND AD.ALLOWDEDUCTID=%n", payrollTypeId, nEmpID, nAllowDeductID); } internal static IDataReader Get(TransactionContext tc, DateTime fromDate, DateTime toDate, int payrollTypeID) { return tc.ExecuteReader("SELECT ADE.* FROM ADParameterBasic ADB, ADParameterEmployee ADE " + " WHERE ADB.PayrollTypeID=%n AND ADB.ADParameterID=ADE.ADParameterID AND ADE.ADEMPType=%n AND ADB.IsCurrentlyActive <> 0 " + " AND ( (ADE.TillDate >= %d OR ADE.TillDate IS Null) AND " + " (ADE.FromDate <= %d) OR ADE.ArrearInfo =%n )", payrollTypeID, EnumADEmpType.AppliedToIndividual, fromDate, toDate, EnumArrearType.ToCalculate); } internal static IDataReader Get(TransactionContext tc, int AllowDeductID, DateTime fromDate, DateTime toDate, int payrollTypeID) { string sql = SQLParser.MakeSQL( @"Select * from ADPARAMETEREMPLOYEE where FROMDATE between %d and %d AND ADPARAMETERID IN(Select ADPARAMETERID from ADPARAMETERBASIC where PAYROLLTYPEID=%n and ALLOWDEDUCTID=%n)", fromDate, PayrollGlobalFunctions.PayrollLastDateOfMonth(toDate), payrollTypeID, AllowDeductID); return tc.ExecuteReader(@"Select * from ADPARAMETEREMPLOYEE where FROMDATE between %d and %d AND ADPARAMETERID IN(Select ADPARAMETERID from ADPARAMETERBASIC where PAYROLLTYPEID=%n and ALLOWDEDUCTID=%n)", fromDate, PayrollGlobalFunctions.PayrollLastDateOfMonth(toDate), payrollTypeID, AllowDeductID); } internal static IDataReader GetForApproval(TransactionContext tc, int AllowDeductID, DateTime fromDate, DateTime toDate, int payrollTypeID) { string sql = SQLParser.MakeSQL( @"Select * from ADPARAMETEREMPLOYEE where FROMDATE between %d and %d AND ADPARAMETERID IN(Select ADPARAMETERID from ADPARAMETERBASIC where ALLOWDEDUCTID in (Select ALLOWDEDUCTID from ADPARAMETERBASIC where PAYROLLTYPEID=%n and ALLOWDEDUCTID in(select ALLOWDEDUCTID from ALLOWANCEDEDUCTION where ALLOWORDEDUCT=%n))) ORDER BY Modifieddate", fromDate, PayrollGlobalFunctions.PayrollLastDateOfMonth(toDate), payrollTypeID, AllowDeductID); return tc.ExecuteReader(sql); } internal static IDataReader Get(TransactionContext tc, int nEmpID, int AllowDeductID, DateTime fromDate, DateTime toDate) { return tc.ExecuteReader( @"Select * from ADPARAMETEREMPLOYEE where EMPLOYEEID=%n AND FROMDATE between %d and %d AND ALLOWDEDUCTID=%n", nEmpID, fromDate, PayrollGlobalFunctions.PayrollLastDateOfMonth(toDate), AllowDeductID); } internal static IDataReader GetbyParameter(TransactionContext tc, int nADPAramID, EnumADEmpType type) { return tc.ExecuteReader("SELECT * FROM ADParameterEmployee WHERE ADPARAMETERID=%n AND ADEMPTYPE=%n", nADPAramID, type); } //internal static IDataReader GetByEmployee(TransactionContext tc, int nEmpID, EnumAllowOrDeduct adType, string sTypes) //{ // return tc.ExecuteReader("SELECT * FROM ADParameterEmployee Where EmployeeID = %n AND ADEMPTYPE IN (%q) " + // " AND ADPARAMETERID IN (SELECT ADPARAMETERID FROM ADParameterBasic WHERE AllowORDeduct = %n AND AND ADB.IsCurrentlyActive <> 0)" // + " AND ( (TillDate >= %d OR TillDate IS Null) AND (FromDate <= %d) OR ArrearInfo =%b )", // nEmpID, sTypes, adType); //} internal static IDataReader Get(TransactionContext tc, EnumADEmpType status) { return tc.ExecuteReader("SELECT * FROM ADParameterEmployee where ADEMPTYPE=%n ", status); } internal static IDataReader Get(TransactionContext tc, EnumADEmpType status, EnumAllowOrDeduct allowOrDeduct) { return tc.ExecuteReader("SELECT * FROM ADParameterEmployee where ADEMPTYPE=%n and AllowDeductID IN (" + " Select AllowDeductID from ALLOWANCEDEDUCTION where AllowOrDeduct=%n", status, allowOrDeduct); } internal static IDataReader Get(TransactionContext tc, int nID) { return tc.ExecuteReader("SELECT * FROM ADParameterEmployee WHERE ADPARAMETEREMPID=%n", nID); } internal static IDataReader GetbyParameter(TransactionContext tc, int nID, DateTime nextPayProcessDate) { return tc.ExecuteReader( "SELECT * FROM ADParameterEmployee WHERE ADPARAMETERID=%n AND ((TillDate >= %d OR TillDate IS NULL) AND (FromDate <= %d) OR ArrearInfo=%n)", nID, PayrollGlobalFunctions.PayrollFirstDateOfMonth(nextPayProcessDate), nextPayProcessDate, EnumArrearType.ToCalculate); } internal static IDataReader GetbyParameterID(TransactionContext tc, int nID) { return tc.ExecuteReader("SELECT ade.*,e.Name, e.EmployeeNo FROM ADParameterEmployee ade, employee e" + " WHERE ade.ADPARAMETERID=%n and ade.employeeid=e.employeeid ", nID); } internal static IDataReader GetNextSalaryMonthItems(TransactionContext tc, int nID, int payrolltypeid) { return tc.ExecuteReader( "SELECT ade.*,e.Name, e.EmployeeNo FROM ADParameterEmployee ade, employee e, payrolltype p " + "WHERE ade.ADPARAMETERID=%n and p.payrolltypeid= %n and ade.employeeid=e.employeeid " + "AND ((ade.TillDate >= DATEADD(month, DATEDIFF(month, 0, p.nextPayProcessDate), 0) OR ade.TillDate IS NULL) " + "AND (ade.FromDate <= p.nextPayProcessDate) OR ade.ArrearInfo=%n) AND e.Status =%n", nID, payrolltypeid, EnumArrearType.ToCalculate, EnumEmployeeStatus.Live); } internal static IDataReader GetByAllow(TransactionContext tc, int nID) { return tc.ExecuteReader("SELECT * FROM ADParameterEmployee WHERE AllowDeductID=%n", nID); } internal static IDataReader GetByAllowForApproval(TransactionContext tc, int nID, int payrollTypeID) { return tc.ExecuteReader( @"Select * from ADPARAMETEREMPLOYEE where ADPARAMETERID IN(Select ADPARAMETERID from ADPARAMETERBASIC where ALLOWDEDUCTID in (Select ALLOWDEDUCTID from ADPARAMETERBASIC where PAYROLLTYPEID=%n and ALLOWDEDUCTID in(select ALLOWDEDUCTID from ALLOWANCEDEDUCTION where ALLOWORDEDUCT=%n))) ORDER BY Modifieddate", payrollTypeID, nID); } internal static IDataReader Get(TransactionContext tc, int nEmpID, int nAllowDeductID, int nADParamID) { return tc.ExecuteReader( "SELECT * FROM ADParameterEmployee WHERE EMPLOYEEID=%n AND ADPARAMETERID = %n AND ALLOWDEDUCTID =%n ", nEmpID, nADParamID, nAllowDeductID); } internal static IDataReader Get(TransactionContext tc, int nEmpID, int nAllowDeductID, int nADParamID, EnumArrearType nArrearType) { return tc.ExecuteReader( "SELECT * FROM ADParameterEmployee WHERE EMPLOYEEID=%n AND ADPARAMETERID = %n AND ALLOWDEDUCTID =%n AND ARREARINFO=%n", nEmpID, nADParamID, nAllowDeductID, (int)nArrearType); } #endregion #region Delete function internal static void Delete(TransactionContext tc, int nID) { tc.ExecuteNonQuery("DELETE FROM ADParameterEmployee WHERE ADPARAMETEREMPID=%n", nID); } internal static void Delete(TransactionContext tc, ADParameterEmployee adParamEmp) { //ADPARAMETEREMPID //tc.ExecuteNonQuery("DELETE FROM ADParameterEmployee WHERE ADPARAMETEREMPID=%n", adParamEmp.ID); tc.ExecuteNonQuery( "DELETE FROM ADParameterEmployee WHERE EMPLOYEEID=%n AND AllowDeductID=%n AND TillDate= %d AND Periodicity=%n", adParamEmp.EmployeeID, adParamEmp.AllowDeductID, adParamEmp.TillDate, adParamEmp.Periodicity); } internal static void DeletebyAdParamid(TransactionContext tc, int nID) { tc.ExecuteNonQuery("DELETE FROM ADParameterEmployee WHERE ADParameterID=%n", nID); } internal static void DeleteByAllo(TransactionContext tc, int nAllowDeductID) { tc.ExecuteNonQuery("DELETE FROM ADParameterEmployee WHERE AllowDeductID=%n", nAllowDeductID); } internal static void DeleteByEmpID(TransactionContext tc, int nEmpID, int nADParameterID) { tc.ExecuteNonQuery("DELETE FROM ADParameterEmployee WHERE EmployeeID=%n AND ADParameterID=%n", nEmpID, nADParameterID); } internal static void DeleteByAllowDeductMonth(TransactionContext tc, int nEmpID, int nAllowDeductID, DateTime dAllowDeductMonht) { tc.ExecuteNonQuery( "Delete from ADPARAMETEREMPLOYEE where FromDate between %d and %d and EmployeeID=%n and AllowDeductID=%n", PayrollGlobalFunctions.PayrollFirstDateOfMonth(dAllowDeductMonht), PayrollGlobalFunctions.PayrollLastDateOfMonth(dAllowDeductMonht), nEmpID, nAllowDeductID); } internal static void DeleteByAllowDeductMonth(TransactionContext tc, string nEmpIDs, int nAllowDeductID, DateTime dAllowDeductMonht) { string sql =SQLParser.MakeSQL( "Delete from ADPARAMETEREMPLOYEE where FromDate between %d and %d and EmployeeID in (%q) and AllowDeductID=%n", PayrollGlobalFunctions.PayrollFirstDateOfMonth(dAllowDeductMonht), PayrollGlobalFunctions.PayrollLastDateOfMonth(dAllowDeductMonht), nEmpIDs, nAllowDeductID); tc.ExecuteNonQuery(sql); } internal static void DeleteByMonth(TransactionContext tc, int nAllowDeductID, DateTime dAllowDeductMonht) { tc.ExecuteNonQuery( "Delete from ADPARAMETEREMPLOYEE where FromDate between %d and %d and AllowDeductID=%n", PayrollGlobalFunctions.PayrollFirstDateOfMonth(dAllowDeductMonht), PayrollGlobalFunctions.PayrollLastDateOfMonth(dAllowDeductMonht), nAllowDeductID); } #endregion #region Other function public static bool IsExist(TransactionContext tc, int empId, int allowDeduct, int adParamid, DateTime? tillDate, EnumPeriodicity status) { bool Exist = false; Object obj = tc.ExecuteScalar( "Select Count(*) FROM ADParameterEmployee WHERE EMPLOYEEID=%n AND AllowDeductID=%n AND ADPARAMETERID=%n AND TillDate= %d AND Periodicity=%n", empId, allowDeduct, adParamid, tillDate, EnumPeriodicity.Monthly); Exist = Convert.ToInt32(obj) > 0 ? true : false; return Exist; } #endregion } }