single and multiple leave balance reports

This commit is contained in:
mashfiq 2025-10-05 18:00:58 +06:00
parent 475f384383
commit 7e516a4789
27 changed files with 7162 additions and 267 deletions

View File

@ -1,4 +1,5 @@

using DocumentFormat.OpenXml.Office2010.Excel;
using Ease.Core.Model;
using System;
@ -300,5 +301,32 @@ namespace HRM.BO
return m_oReader.Types;
}
}
public static List<int> ApplicableParametersForReportOptimized(Employee oEmp, List<EnmSetupManagerTranType> setupTypes, List<SetupDetail> details)
{
List<int> parametersID = new List<int>();
if (setupTypes == null) return parametersID;
foreach (EnmSetupManagerTranType type in setupTypes)
{
int nTranID = SetupDetail.GetTranID(oEmp, type);
if (nTranID == null || nTranID < 0) continue;
List<int> setupIds = details.Where(detail => detail.TranType == type
&& detail.TranID == nTranID)
.Select(x => x.SetupID)
.Distinct().ToList();
foreach (int id in setupIds)
{
parametersID.Add(id);
}
}
return parametersID;
}
}
}

View File

@ -2279,6 +2279,9 @@ namespace HRM.BO
EmployeeBasicInfoEcho = 721,
EmployeeEvaluationSheet = 722,
LifeCycleDeletedHistor = 723,
SingleEmpLeaveBalance = 724,
MultipleEmpLeaveBalanceEcho = 725,
LeaveReportEcho = 726,
//Hnm(801-900)
OtBankDisbursementHnm = 801,
BonusRegisterHnm = 802,
@ -3463,15 +3466,32 @@ namespace HRM.BO
public enum EnumLeaveCalculationType
{
Hourly = 0,
Yearly = 1,
Monthly_Earn = 2,
Hourly_365Day = 3,
Hourly_Monthly = 4,
OneDay_On_18Day_Present = 5,
Hourly_Prorated = 6,
Days_365 = 7,
Yearly_without_Prorated = 8
//Hourly = 0,
//Yearly = 1,
//Monthly_Earn = 2,
//Hourly_365Day = 3,
//Hourly_Monthly = 4,
//OneDay_On_18Day_Present = 5,
//Hourly_Prorated = 6,
//Days_365 = 7,
//Yearly_without_Prorated = 8
Daily = 0,
Monthly = 1,
Yearly = 2,
//Prorated=3,
Not_Applicable = 4,
Not_Applicable_With_Prorated = 5,
Hourly = 6,
//Yearly = 7,
Monthly_Earn = 8,
Hourly_365Day = 9,
Hourly_Monthly = 10,
OneDay_On_18Day_Present = 11,
Hourly_Prorated = 12,
Days_365 = 13,
Yearly_without_Prorated = 14
}
public enum EnumLeaveparamOn

View File

@ -1,9 +1,11 @@
using HRM.BO;
using Ease.Core.DataAccess;
using System;
using System.Data;
using Ease.Core.DataAccess;
using Ease.Core.Model;
using Ease.Core.Utility;
using HRM.BO;
using HRM.BO.Fund;
using Microsoft.Data.SqlClient;
using System;
using System.Data;
namespace HRM.DA
{
@ -92,5 +94,43 @@ namespace HRM.DA
return "";
return sCode.ToString();
}
public static DateTime GetOperationDate()
{
DateTime opDate = DateTime.MinValue;
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
SqlParameter[] p = new SqlParameter[1];
p[0] = new SqlParameter("@OperationDate", SqlDbType.DateTime);
p[0].Direction = ParameterDirection.Output;
p[0].Value = DateTime.MinValue;
tc.ExecuteNonQuery(CommandType.StoredProcedure, "[dbo].[GetOperationDate]", p);
if (p[0].Value != null && p[0].Value != DBNull.Value)
opDate = Convert.ToDateTime(p[0].Value);
//opDate = GlobalFunctionDA.GetOperationDate(tc);
tc.End();
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
return opDate;
}
}
}

View File

@ -135,7 +135,32 @@ namespace HRM.DA
{
return tc.ExecuteReader("SELECT * FROM Leave WHERE CODE=%s AND PayrollTypeID=%n", sLeave, payrollTypeID);
}
internal static DataSet GetELInfo(TransactionContext tc, int empID, DateTime JoinDate, DateTime toDate, DateTime availedTo)
{
string sSQL = SQLParser.MakeSQL(@"select 'Leave Availed' Item,isnull(sum(APRTOTALDAYS),0)[Value] from LEAVEENTRY
where LEAVEID=5
and EmpID=%n
and APRFROMDATE>=%d and APRTODATE<=%d
union
select 'Present Days' Item, isnull(count(*),0)[Value] from DailyAttnProcess
where EmployeeID=%n
and AttnDate between %d and %d
and ATTENTYPE in(1,3,12)
union
select 'Encash Days' Item,isnull(sum(EncashmentDays),0)[Value] from LeaveEncashment
where EmployeeID=%n
and EncashmentFromDate >=%d and EncashmentToDate <=%d
Union
select 'Leave Availed this' Item,isnull(sum(APRTOTALDAYS),0)[Value] from LEAVEENTRY
where LEAVEID=5
and EmpID=%n
and APRFROMDATE>=%d and APRTODATE<=%d",
empID, JoinDate, availedTo.AddDays(-1),
empID, JoinDate, toDate,
empID, JoinDate, availedTo.AddDays(-1),
empID, availedTo, toDate);
return tc.ExecuteDataSet(sSQL);
}
#endregion
#region Delete function

View File

@ -88,32 +88,70 @@ namespace HRM.DA
if (oItem.LeaveId == 5)
{
DateTime SelectedMonth = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).LastDateOfMonth();
from_Date = new DateTime(to_Date.Year - 2, oEmployee.JoiningDate.Month, oEmployee.JoiningDate.Day);
DataSet ds = new DailyAttnProcessService().GetEarnedLeaveOpening(oEmployee.ID, oItem.LeaveId, from_Date, to_Date);
int dCurrectedDay = 0;
if (DateTime.DaysInMonth(SelectedMonth.Year, SelectedMonth.Month) < oEmployee.JoiningDate.Day)
dCurrectedDay = DateTime.DaysInMonth(SelectedMonth.Year, SelectedMonth.Month);
else
dCurrectedDay = oEmployee.JoiningDate.Day;
DateTime JoiningDateBefore2YearsFromCurrentYear = new DateTime(SelectedMonth.Year, SelectedMonth.Month, dCurrectedDay).AddYears(-2);// new DateTime(DateTime.Today.Year- 2, item.JoiningDate.Month, item.JoiningDate.Day);// SelectedMonth.FirstDateOfMonth().AddYears(-2);
DateTime FirstYearStartDate = JoiningDateBefore2YearsFromCurrentYear;
DateTime FirstYearEndDate = JoiningDateBefore2YearsFromCurrentYear.AddYears(1).AddDays(-1);
DateTime LastYearStartDate = JoiningDateBefore2YearsFromCurrentYear.AddYears(1);
DateTime LastYearEndDate = JoiningDateBefore2YearsFromCurrentYear.AddYears(2).AddDays(-1);
#region old code
//DateTime SelectedMonth = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).LastDateOfMonth();
//from_Date = new DateTime(to_Date.Year - 2, oEmployee.JoiningDate.Month, oEmployee.JoiningDate.Day);
//DataSet ds = new DailyAttnProcessService().GetEarnedLeaveOpening(oEmployee.ID, oItem.LeaveId, from_Date, to_Date);
//int dCurrectedDay = 0;
//if (DateTime.DaysInMonth(SelectedMonth.Year, SelectedMonth.Month) < oEmployee.JoiningDate.Day)
// dCurrectedDay = DateTime.DaysInMonth(SelectedMonth.Year, SelectedMonth.Month);
//else
// dCurrectedDay = oEmployee.JoiningDate.Day;
//DateTime JoiningDateBefore2YearsFromCurrentYear = new DateTime(SelectedMonth.Year, SelectedMonth.Month, dCurrectedDay).AddYears(-2);// new DateTime(DateTime.Today.Year- 2, item.JoiningDate.Month, item.JoiningDate.Day);// SelectedMonth.FirstDateOfMonth().AddYears(-2);
//DateTime FirstYearStartDate = JoiningDateBefore2YearsFromCurrentYear;
//DateTime FirstYearEndDate = JoiningDateBefore2YearsFromCurrentYear.AddYears(1).AddDays(-1);
//DateTime LastYearStartDate = JoiningDateBefore2YearsFromCurrentYear.AddYears(1);
//DateTime LastYearEndDate = JoiningDateBefore2YearsFromCurrentYear.AddYears(2).AddDays(-1);
double secondYearLeaveAvailed = new LeaveEntryService().Get(oEmployee.ID, LastYearStartDate, LastYearEndDate, EnumLeaveStatus.Approved).Sum(x => x.ApprovedTotalDays);
//ObjectsTemplate<LeaveEncashment> les = LeaveEncashment.GetByEmpIDs(oEmployee.ID.Integer.ToString(), FirstYearStartDate, FirstYearEndDate);
//double secondYearLeaveAvailed = new LeaveEntryService().Get(oEmployee.ID, LastYearStartDate, LastYearEndDate, EnumLeaveStatus.Approved).Sum(x => x.ApprovedTotalDays);
////List<LeaveEncashment> les = LeaveEncashment.GetByEmpIDs(oEmployee.ID.Integer.ToString(), FirstYearStartDate, FirstYearEndDate);
if (ds != null && ds.Tables.Count > 0)
//if (ds != null && ds.Tables.Count > 0)
//{
// foreach (DataRow dr in ds.Tables[0].Rows)
// {
// oCurrStatus.OpeningBalance = Convert.ToDouble(dr[0].ToString());
// oCurrStatus.LeaveAvailed = Convert.ToDouble(dr[1].ToString()); //secondYearLeaveAvailed;
// oCurrStatus.EncashDays = 0;// les==null?0:les.Sum(x=> Math.Round(x.EncashmentDays));
// oCurrStatus.YearEndBalance = oCurrStatus.OpeningBalance - (oCurrStatus.LeaveAvailed + oCurrStatus.EncashDays);
// }
//}
#endregion
DateTime dtTo = oCurrYear.EndDate < DateTime.Today ? oCurrYear.EndDate : DateTime.Today;
DateTime dtAvailed = oEmployee.JoiningDate;
LeaveYear ly = new LeaveYearService().LastLeaveYear(oCurrYear);
while (dtAvailed < ly.StartDate)
{
foreach (DataRow dr in ds.Tables[0].Rows)
{
oCurrStatus.OpeningBalance = Convert.ToDouble(dr[0].ToString());
oCurrStatus.LeaveAvailed = Convert.ToDouble(dr[1].ToString()); //secondYearLeaveAvailed;
oCurrStatus.EncashDays = 0;// les==null?0:les.Sum(x=> Math.Round(x.EncashmentDays));
oCurrStatus.YearEndBalance = oCurrStatus.OpeningBalance - (oCurrStatus.LeaveAvailed + oCurrStatus.EncashDays);
dtAvailed = dtAvailed.AddYears(1);
}
DataTable dt = new LeaveService().GetELInfo(oEmployee.ID, oEmployee.JoiningDate, dtTo, dtAvailed);
if (dt != null)
{
foreach (DataRow dr in dt.Rows)
{
if (dr[0].ToString() == "Leave Availed this")
{
oCurrStatus.LeaveAvailed = Convert.ToDouble(dr[1].ToString());
}
else if (dr[0].ToString() == "Present Days")
{
oCurrStatus.OpeningBalance = Convert.ToDouble(dr[1].ToString());
oCurrStatus.OpeningBalance = oCurrStatus.OpeningBalance == 0 ? 0 : oCurrStatus.OpeningBalance / 18;
}
else if (dr[0].ToString() == "Encash Days")
{
oCurrStatus.OpeningBalance -= Convert.ToDouble(dr[1].ToString());
}
else if (dr[0].ToString() == "Leave Availed")
{
oCurrStatus.NormalLeaveDays = Convert.ToDouble(dr[1].ToString());
}
}
oCurrStatus.OpeningBalance -= oCurrStatus.NormalLeaveDays;
oCurrStatus.OpeningBalance = Math.Round(oCurrStatus.OpeningBalance, 2);
oCurrStatus.OpeningBalance = oItem.MaxAccumulatedDays < oCurrStatus.OpeningBalance ? oItem.MaxAccumulatedDays : oCurrStatus.OpeningBalance;
oCurrStatus.YearEndBalance = Math.Round(oCurrStatus.OpeningBalance - oCurrStatus.LeaveAvailed, 2);
}
oCurrYearBalance.Add(oCurrStatus);
@ -121,7 +159,7 @@ namespace HRM.DA
else
{
//ObjectsTemplate<LeaveEntry> les = LeaveEntry.GetByLeaveID(oItem.LeaveId, empId, from_Date, to_Date);
//List<LeaveEntry> les = LeaveEntry.GetByLeaveID(oItem.LeaveId, empId, from_Date, to_Date);
List<LeaveEntry> les = oLeaveEntries.Where(le => le.LeaveID == oItem.LeaveId
&& le.EmpID == empId
&& le.ApprovedFromDate >= from_Date && le.ApprovedFromDate <= to_Date
@ -164,9 +202,11 @@ namespace HRM.DA
}
else
{
#region From Master
if (oDetail != null) oCurrStatus.NormalLeaveDays = 0;
else continue;
//oItem.Details = new ObjectsTemplate<LeaveParameterDetail>();
//oItem.Details = new List<LeaveParameterDetail>();
//oItem.Details.Add(oDetail);
#region calculate the current year balance
@ -249,6 +289,12 @@ namespace HRM.DA
}
#endregion
#endregion
#region From Echotex desktop App
#endregion
}
@ -276,14 +322,14 @@ namespace HRM.DA
{
double nTotalDays = 0;
TimeSpan ts = new TimeSpan();
if (eType == EnumLeaveCalculationType.Yearly)
if (eType == EnumLeaveCalculationType.Daily)
{
if (presentAttnCount > 0)
{
nTotalDays = (double)presentAttnCount / 18;
}
}
else if (eType == EnumLeaveCalculationType.Yearly)
else if (eType == EnumLeaveCalculationType.Monthly)
{
ts = (dCurrentDate - ((emp.JoiningDate > oCurrentYear.StartDate) ?
emp.JoiningDate : Global.DateFunctions.FirstDateOfYear(dCurrentDate)))
@ -301,12 +347,12 @@ namespace HRM.DA
}
// Else '0' , What??????????????????
}
else if (eType == EnumLeaveCalculationType.Yearly)
else if (eType == EnumLeaveCalculationType.Not_Applicable)
{
ts = (Global.DateFunctions.LastDateOfYear(dCurrentDate) - Global.DateFunctions.FirstDateOfYear(dCurrentDate)).Add(TimeSpan.FromDays(1));
nTotalDays = (oDetail.MaxDays * ts.Days) / 365;
}
else if (eType == EnumLeaveCalculationType.Yearly)
else if (eType == EnumLeaveCalculationType.Not_Applicable_With_Prorated)
{
ts = (Global.DateFunctions.LastDateOfYear(dCurrentDate) - ((emp.JoiningDate > oCurrentYear.StartDate) ?
emp.JoiningDate : Global.DateFunctions.FirstDateOfYear(dCurrentDate)))
@ -691,6 +737,130 @@ namespace HRM.DA
//#endregion
public DataTable CurrentYearStatusOptimized(string sEmpIDs, LeaveYear lYear, EnumLeaveStatus eStatus, DateTime NextPayProcessDate)
{
DataTable dTEmpLeave = new DataTable();
dTEmpLeave.Columns.Add("Leave", typeof(System.String));
dTEmpLeave.Columns.Add("Opening", typeof(System.String));
dTEmpLeave.Columns.Add("Availed", typeof(System.String));
dTEmpLeave.Columns.Add("Balance", typeof(System.String));
dTEmpLeave.Columns.Add("EmpNo", typeof(System.String));
dTEmpLeave.Columns.Add("Name", typeof(System.String));
dTEmpLeave.Columns.Add("Designation", typeof(System.String));
dTEmpLeave.Columns.Add("Division", typeof(System.String));
dTEmpLeave.Columns.Add("Department", typeof(System.String));
dTEmpLeave.Columns.Add("Unit", typeof(System.String));
dTEmpLeave.Columns.Add("CFDays", typeof(System.String));
dTEmpLeave.Columns.Add("Floor", typeof(System.String));
dTEmpLeave.Columns.Add("Section", typeof(System.String));
dTEmpLeave.Columns.Add("Line", typeof(System.String));
try
{
DataTable dtEmpBasicInfo = new EmployeeService().GetAllEmpBasicInfo(sEmpIDs)
.Tables[0]
.AsEnumerable()
.OrderBy(x => Convert.ToInt32(x["EmployeeID"].ToString()))
.CopyToDataTable();
List<EmpLeaveStatus> oCurrYearBalance = null;
List<EmpLeaveStatus> oAllEmpsCurrYearBalance = new List<EmpLeaveStatus>();
DateTime operationDate = GlobalFunctionDA.GetOperationDate();
if (operationDate.Date > lYear.EndDate.Date)
{
operationDate = lYear.EndDate.Date;
}
DateTime oEmpOperationDate;
DataTable oYearlyDailyAttnProcess = new DailyAttnProcessService().GetTypeWiseAttnCount(sEmpIDs, Global.DateFunctions.FirstDateOfYear(operationDate), Global.DateFunctions.LastDateOfYear(operationDate), EnumAttendanceType.Present, EnumAttendanceType.Early, EnumAttendanceType.Late, EnumAttendanceType.Delay, EnumAttendanceType.HalfDay, EnumAttendanceType.OutSideDuty)
.AsEnumerable()
.OrderBy(x => Convert.ToInt32(x["EmployeeID"].ToString()))
.CopyToDataTable();
LeaveYear oCurrYear = lYear;
LeaveYear oPrvYear = new LeaveYearService().LastLeaveYear(oCurrYear);
List<EnmSetupManagerTranType> setupTypes = new SetupDetailService().GetTypes(EnumParameterSetup.Leave);
List<SetupDetail> setupDetails = new SetupDetailService().GetParameters(EnumParameterSetup.Leave);
List<LeaveParameter> leaveParamss = new LeaveParameterService().Get();
List<LeaveParameterDetail> leaveParamDetails = new LeaveParameterService().GetDetails();
List<LeaveEntry> oLs = new LeaveEntryService().GetByLeaveYear(oCurrYear.ID);
List<EmpLeaveStatus> oPrevStatuses = new LeaveProcessService().GetByYear(oPrvYear.ID);
List<LeaveException> oExceptions = new LeaveExceptionService().Get(lYear.StartDate, lYear.EndDate);
Queue<Employee> oEmployees = new Queue<Employee>(new EmployeeService().GetByEmpIDs(sEmpIDs).OrderBy(x => x.ID));
List<AttnNationalHoliday> oNationalHolidays = new AttnNationalHolidayService().GetByMonth(oCurrYear.StartDate, oCurrYear.EndDate);
List<Leave> leaveTypes = new LeaveService().GetAll();
foreach (DataRow drBasic in dtEmpBasicInfo.Rows)
{
Employee oEmp = null;
int presentCount = 0;
if (oEmployees.Any() && oEmployees.Peek().ID == Convert.ToInt32(drBasic["EmployeeID"].ToString()))
{
oEmp = oEmployees.Dequeue();
}
else
{
continue;
}
oEmpOperationDate = operationDate;
if (oEmp.EndOfContractDate != null)
{
if (oEmp.EndOfContractDate < lYear.StartDate)
continue;
if (oEmp.EndOfContractDate.Value < operationDate)
{
oEmpOperationDate = oEmp.EndOfContractDate.Value;
}
}
DataRow dRow = oYearlyDailyAttnProcess.AsEnumerable().FirstOrDefault(x => Convert.ToInt32(x["EmployeeID"].ToString()) == Convert.ToInt32(drBasic["EmployeeID"].ToString()));
presentCount = dRow != null ? Convert.ToInt32(dRow["Count"].ToString()) : 0;
List<LeaveParameter> oAppLeaveParams = new LeaveParameterService().ApplicableParamsForReportOptimized(oEmp, setupTypes, setupDetails, leaveParamss, leaveTypes);
oCurrYearBalance = new EmpLeaveStatusService().CurrentYearStatusOptimized(oEmp, oEmpOperationDate, presentCount, oAppLeaveParams, oCurrYear, oLs, eStatus, oPrevStatuses, leaveParamDetails, oExceptions, oNationalHolidays, NextPayProcessDate);
DataRow oRow = null;
foreach (EmpLeaveStatus eSts in oCurrYearBalance)
{
eSts.Leave = leaveTypes.Find(l => l.ID == eSts.LeaveId);
oRow = dTEmpLeave.NewRow();
if (drBasic != null)
{
oRow["EmpNo"] = drBasic["EmployeeNo"];
oRow["Name"] = drBasic["Name"];
oRow["Designation"] = drBasic["Designation"];
oRow["Department"] = drBasic["Department"];
oRow["Floor"] = drBasic["Floor"];
oRow["Section"] = drBasic["Section"];
oRow["Line"] = drBasic["Line"];
oRow["Unit"] = string.Empty;
}
oRow["Leave"] = eSts.Leave.Description;
oRow["Opening"] = eSts.OpeningBalance.ToString();
oRow["Availed"] = eSts.LeaveAvailed.ToString();
oRow["Balance"] = eSts.ClosingBalance.ToString();
dTEmpLeave.Rows.Add(oRow);
}
}
return dTEmpLeave;
}
catch (Exception)
{
}
return dTEmpLeave;
}
}

View File

@ -2558,18 +2558,18 @@ namespace HRM.DA
}
}
if (lp.CalculationType == EnumLeaveCalculationType.Hourly_365Day)
{
nDays = (nDiff - nDays) > 0 ? (nDiff - nDays) * 8 : 0;
}
else if (lp.CalculationType == EnumLeaveCalculationType.Days_365)
{
//if (lp.CalculationType == EnumLeaveCalculationType.Hourly_365Day)
//{
// nDays = (nDiff - nDays) > 0 ? (nDiff - nDays) * 8 : 0;
//}
//else if (lp.CalculationType == EnumLeaveCalculationType.Days_365)
//{
// nDays = (nDiff - nDays) > 0 ? nDiff - nDays : 0;
//}
//else
//{
nDays = (nDiff - nDays) > 0 ? nDiff - nDays : 0;
}
else
{
nDays = (nDiff - nDays) > 0 ? nDiff - nDays : 0;
}
//}
nDays -= totalDayOff;
ThrowMessageForMinimumDays(leaveType, IsHalfDay && nDays == 1 ? nDays - 0.5 : nDays);

View File

@ -696,7 +696,7 @@ namespace HRM.DA
//List<EnmSetupManagerTranType> setupTypes = SetupDetail.GetTypes(setup);
if (setupTypes == null) return parametersID;
//ObjectsTemplate<SetupDetail> details = SetupDetail.GetParameters(setup);
//List<SetupDetail> details = SetupDetail.GetParameters(setup);
foreach (EnmSetupManagerTranType type in setupTypes)
{
@ -766,7 +766,7 @@ namespace HRM.DA
public List<LeaveParameter> ApplicableParamsForReport(Employee oEmp, List<EnmSetupManagerTranType> setupTypes, List<SetupDetail> details, List<LeaveParameter> leaveParamss)
{
List<int> leaveParamIds = ApplicableParametersForReport(oEmp, setupTypes, details);
//ObjectsTemplate<LeaveParameter> leaveParamss = LeaveParameter.Get();
//List<LeaveParameter> leaveParamss = LeaveParameter.Get();
List<LeaveParameter> leaveParams = new List<LeaveParameter>();
foreach (LeaveParameter lparam in leaveParamss)
{
@ -846,6 +846,48 @@ namespace HRM.DA
return dtl;
}
public List<LeaveParameter> ApplicableParamsForReportOptimized(Employee oEmp, List<EnmSetupManagerTranType> setupTypes, List<SetupDetail> details, List<LeaveParameter> leaveParamss, List<Leave> leaveTypes)
{
List<int> leaveParamIds = SetupManager.ApplicableParametersForReportOptimized(oEmp, setupTypes, details);
//List<LeaveParameter> leaveParamss = LeaveParameter.Get();
List<LeaveParameter> leaveParams = new List<LeaveParameter>();
foreach (LeaveParameter lparam in leaveParamss)
{
lparam.Leave = leaveTypes.Find(l => l.ID == lparam.LeaveId);
if (lparam.Leave.ApplicableFor != (EnumGender)oEmp.Gender &&
lparam.Leave.ApplicableFor != EnumGender.Other &&
lparam.Leave.ApplicableFor != EnumGender.None)
{
continue;
}
if (leaveParamIds.Contains(lparam.ID))
{
switch (lparam.ApplicableFor)
{
case LeaveApplicableType.Probetionary:
if (!oEmp.IsConfirmed)
{
leaveParams.Add(lparam);
}
break;
case LeaveApplicableType.Confirmed:
if (oEmp.IsConfirmed)
{
leaveParams.Add(lparam);
}
break;
case LeaveApplicableType.Regardless:
leaveParams.Add(lparam);
break;
default:
break;
}
}
}
return leaveParams;
}
#endregion
}

View File

@ -288,7 +288,7 @@ namespace HRM.DA
{
}
if (oItem.LeaveParameter.CalculationType == EnumLeaveCalculationType.Monthly_Earn
if (oItem.LeaveParameter.CalculationType == EnumLeaveCalculationType.Monthly//EnumLeaveCalculationType.Monthly_Earn
&& oItem.EligibleParamDetail == null) // considering joining current year and will eligible next year.
{
Employee emp = new EmployeeService().Get(oItem.EmpId);
@ -1444,7 +1444,7 @@ namespace HRM.DA
// + current month (0, because current month not yet completed)= 19, but as per policy he will get 20 days from one year completion.
// so folloiwng loic is needed to that
if (oItem.CalculationType == EnumLeaveCalculationType.Monthly_Earn)
if (oItem.CalculationType == EnumLeaveCalculationType.Monthly)//EnumLeaveCalculationType.Monthly_Earn)
{
double months = Global.DateFunctions.DateDiff("M", oEmployee.JoiningDate, dCurrentDate);
if (oDetail.Year == 1 && months == 12)
@ -1900,7 +1900,7 @@ namespace HRM.DA
nTotalDays = Math.Floor(nTotalDays);
}
else if (eType == EnumLeaveCalculationType.Monthly_Earn)
else if (eType == EnumLeaveCalculationType.Monthly)/*EnumLeaveCalculationType.Monthly_Earn)*/
{
if (emp.ID == 1807)
{
@ -2095,7 +2095,7 @@ namespace HRM.DA
// + current month (0, because current month not yet completed)= 19, but as per policy he will get 20 days from one year completion.
// so folloiwng loic is needed to that
if (oItem.CalculationType == EnumLeaveCalculationType.Monthly_Earn)
if (oItem.CalculationType == EnumLeaveCalculationType.Monthly)/*EnumLeaveCalculationType.Monthly_Earn)*/
{
double months = Global.DateFunctions.DateDiff("M", oEmployee.JoiningDate, dCurrentDate);
if (oDetail.Year == 1 && months == 12)

View File

@ -1,9 +1,10 @@
using HRM.BO;
using Ease.Core.DataAccess;
using Ease.Core.DataAccess;
using Ease.Core.Model;
using Ease.Core.Utility;
using HRM.BO;
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
namespace HRM.DA
@ -427,6 +428,31 @@ namespace HRM.DA
return false;
}
#endregion
public DataTable GetELInfo(int empID, DateTime JoinDate, DateTime toDate, DateTime availedTo)
{
TransactionContext tc = null;
try
{
tc = TransactionContext.Begin();
DataSet dSet = LeaveDA.GetELInfo(tc, empID, JoinDate, toDate, availedTo);
return dSet.Tables[0];
}
catch (Exception e)
{
#region Handle Exception
if (tc != null)
tc.HandleError();
ExceptionLog.Write(e);
throw new ServiceException(e.Message, e);
#endregion
}
finally
{
if (tc != null)
tc.End();
}
}
}
#endregion

View File

@ -1,22 +1,24 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DocumentFormat.OpenXml.Office2010.Excel;
using Ease.Core.Model;
using Ease.Core.Utility;
using HRM.BO;
using HRM.BO.Configuration;
using HRM.DA;
using HRM.Report.Attendence.AttendenceDataSet;
using Microsoft.AspNetCore.JsonPatch.Operations;
using Microsoft.Extensions.Configuration;
using Microsoft.Reporting.NETCore;
using NPOI.SS.Formula.Functions;
using NPOI.XSSF.Streaming.Values;
using Org.BouncyCastle.Ocsp;
using Org.BouncyCastle.Utilities.Collections;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HRM.Report
{
@ -3221,5 +3223,164 @@ namespace HRM.Report
}
#endregion
#region Leave Reports
public byte[] ShowEmployeeIndvLeaveBalance(string sEmpID, DateTime fromDate, DateTime toDate, int leaveType, int payrollTypeID, DateTime nextPayProcessDate, string reportType)
{
ReportProcessor form = new ReportProcessor();
DataRow oRow = null;
LeaveYear ly = new LeaveYear();
List<Leave> leaveTypes = new LeaveService().Get();
List<LeaveYear> _leaveYear = new LeaveYearService().Get();
DataSet dsEmpBasicInfo = new EmployeeService().GetAllEmpBasicInfo(sEmpID);
DataRow drBasic = null;
if (dsEmpBasicInfo.Tables[0].Rows.Count > 0)
{
drBasic = dsEmpBasicInfo.Tables[0].Rows[0];
}
if (drBasic == null) throw new Exception("Employee Information not found");
List<LeaveEntry> oLeaveEntrys = new List<LeaveEntry>();
DataTable oBody = new HRM.Report.PayrollDataSet.dsEmpLeaveLedger.EmpLeaveLedgerDataTable();
DataTable oBody2 = new HRM.Report.PayrollDataSet.dsEmpLeaveLedger.EmpInformationDataTable();
DataTable oBody3 = new HRM.Report.PayrollDataSet.dsEmpLeaveLedger.LeaveYearDataTable();
DataTable oBody4 = new HRM.Report.PayrollDataSet.dsEmpLeaveLedger.LeaveBalanceDataTable();
oLeaveEntrys = new LeaveEntryService().GetEmployeeWiseLeaveDetailReport(Convert.ToInt32(sEmpID), fromDate, toDate, leaveType);
List<Employee> oEmps = new List<Employee>();
Employee oEmp = new EmployeeService().Get(Convert.ToInt32(sEmpID));
oEmps.Add(oEmp);
LeaveYear lyy = new LeaveYearService().GetCurrentYear(payrollTypeID);
DateTime operationDate = new GlobalFunctionService().GetOperationDate();
if (operationDate.Date > lyy.EndDate.Date)
{
operationDate = lyy.EndDate.Date;
}
List<EmpLeaveStatus> oCurrYearStatus = new EmpLeaveStatusService().CurrentYearStatus(oEmps, lyy, operationDate, EnumLeaveStatus.Approved, nextPayProcessDate);
foreach (EmpLeaveStatus oItem in oCurrYearStatus)
{
ly = _leaveYear.Where(x => x.ID == oItem.LeaveYearID).FirstOrDefault();
oItem.Leave = leaveTypes.Find(lt => lt.ID == oItem.LeaveId);
oBody4.Rows.Add(oItem.Leave.Description, oItem.OpeningBalance.ToString(), oItem.LeaveAvailed.ToString(), oItem.ClosingBalance.ToString(), oItem.CFDays.ToString());
}
oRow = oBody2.NewRow();
oRow["EmpNo"] = drBasic["EmployeeNo"];
oRow["EmpName"] = drBasic["Name"];
oRow["Designation"] = drBasic["Designation"];
oRow["JoiningDate"] = Convert.ToDateTime(drBasic["JoiningDate"].ToString()).ToString("dd MMM yyyy");
oRow["LeaveNotifier"] = string.Empty;
oRow["Department"] = drBasic["Department"];
oRow["Floor"] = drBasic["Floor"];
oRow["Section"] = drBasic["Section"];
oRow["Line"] = drBasic["Line"];
DataSet LineManager = new EmployeeService().GetLineManagerFromOrg(Convert.ToInt32(drBasic["EmployeeID"]));
foreach (DataRow or in LineManager.Tables[0].Rows)
{
oRow["LeaveApprover"] = or["Name"];
}
oRow["LeavePeriod"] = ly.Name;
oBody2.Rows.Add(oRow);
if (oLeaveEntrys != null)
{
foreach (LeaveEntry le in oLeaveEntrys)
{
oRow = oBody.NewRow();
oRow["LeaveType"] = le.Leave.Description;
oRow["FromDate"] = le.ApprovedFromDate.ToString("dd MMM yyyy");
oRow["ToDate"] = le.ApprovedToDate.ToString("dd MMM yyyy");
oRow["TotalDays"] = le.ApprovedTotalDays;
oRow["LeaveReason"] = le.ErnLeaveRemarks;
oRow["ApplyDate"] = le.AppliedLeaveDate.ToString("dd MMM yyyy");
oRow["ApproveDate"] = le.ApprovedLeaveDate.ToString("dd MMM yyyy");
oRow["LeaveStatus"] = le.LeaveStatus.ToString();
oRow["Remarks"] = le.Remarks;
oBody.Rows.Add(oRow);
}
}
DataSet dSet = new DataSet();
oBody.TableName = "dsEmpLeaveLedger_EmpLeaveLedger";
dSet.Tables.Add(oBody);
oBody4.TableName = "dsEmpLeaveLedger_LeaveBalance";
dSet.Tables.Add(oBody4);
oBody2.TableName = "dsEmpLeaveLedger_EmpInformation";
dSet.Tables.Add(oBody2);
string RDLC = "LeaveLedgerEcho.rdlc";
return form.CommonReportViewForReports(null, dSet, null, RDLC, null, true, payrollTypeID, reportType);
}
public byte[] ShowMultipleEmployeeLeaveReport(string sEmpIDs, int lyyid, int payrollTypeID, DateTime nextPayProcessDate, string reportType)
{
ReportProcessor form = new ReportProcessor();
DataTable dTEmpLeave = new HRM.Report.PayrollDataSet.dsEmpLeaveLedger.LeaveBalanceDataTable();
LeaveYear lyy = new LeaveYearService().Get(lyyid);
dTEmpLeave = new EmpLeaveStatusService().CurrentYearStatusOptimized(sEmpIDs, lyy, EnumLeaveStatus.Approved, nextPayProcessDate);
DataSet dSet = new DataSet();
dTEmpLeave.TableName = "dsEmpLeaveLedger_LeaveBalance";
if (dTEmpLeave.Rows.Count > 0)
{
dSet.Tables.Add(dTEmpLeave);
List<ReportParameter> oParameters = new List<ReportParameter>();
ReportParameter rParam = new ReportParameter("LeaveYear", string.Format("{0} - {1}", lyy.StartDate.ToString("dd MMM yyyy"), lyy.EndDate.ToString("dd MMM yyyy")));
oParameters.Add(rParam);
string RDLC = "MultipleEmpLeaveBalance.rdlc";
return form.CommonReportViewForReports(null, dSet, null, RDLC, oParameters, true, payrollTypeID, reportType);
//form.CommonReportViewForReports(null, ds, RDLC, oParameters);
}
else
{
throw new Exception("Leave balance not found");
}
}
public byte[] ShowLeaveReport(string sEmpIDs, int lyyid, int payrollTypeID, DateTime nextPayProcessDate, string reportType)
{
ReportProcessor form = new ReportProcessor();
DataTable dTEmpLeave = new HRM.Report.PayrollDataSet.dsEmpLeaveLedger.LeaveBalanceDataTable();
LeaveYear lyy = new LeaveYearService().Get(lyyid);
dTEmpLeave = new EmpLeaveStatusService().CurrentYearStatusOptimized(sEmpIDs, lyy, EnumLeaveStatus.Approved, nextPayProcessDate);
if (dTEmpLeave.Rows.Count > 0)
{
DataSet ds = new DataSet();
dTEmpLeave.TableName = "dsEmpLeaveLedger_LeaveBalance";
ds.Tables.Add(dTEmpLeave);
List<ReportParameter> oParameters = new List<ReportParameter>();
ReportParameter rParam = new ReportParameter("FromDate", lyy.StartDate.ToString("dd MMM yyyy"));
oParameters.Add(rParam);
rParam = new ReportParameter("ToDate", lyy.EndDate.ToString("dd MMM yyyy"));
oParameters.Add(rParam);
string RDLC = "LeaveReportEcho.rdlc";
return form.CommonReportViewForReports(null, ds, null, RDLC, oParameters, true, payrollTypeID, reportType);
}
else
{
throw new Exception("Leave balance not found");
}
}
#endregion
}
}

View File

@ -146,6 +146,7 @@
<None Remove="RDLC\LeaveApplication.rdlc" />
<None Remove="RDLC\LeaveCashAdvice.rdlc" />
<None Remove="RDLC\LeaveLedger.rdlc" />
<None Remove="RDLC\LeaveLedgerEcho.rdlc" />
<None Remove="RDLC\LeaveLedgerForLateAttn.rdlc" />
<None Remove="RDLC\LeaveLedgerNmgtDetails.rdlc" />
<None Remove="RDLC\LeaveLedgerNmgtLeaveType.rdlc" />
@ -157,6 +158,7 @@
<None Remove="RDLC\LeaveProcessData.rdlc" />
<None Remove="RDLC\LeaveRegisterNew.rdlc" />
<None Remove="RDLC\LeaveReport.rdlc" />
<None Remove="RDLC\LeaveReportEcho.rdlc" />
<None Remove="RDLC\LoanApplication.rdlc" />
<None Remove="RDLC\LoanIssue.rdlc" />
<None Remove="RDLC\LoanIssue_prev.rdlc" />
@ -169,6 +171,7 @@
<None Remove="RDLC\MLSecondPayment.rdlc" />
<None Remove="RDLC\MoneyReceipt.rdlc" />
<None Remove="RDLC\MonthlyPFAmount.rdlc" />
<None Remove="RDLC\MultipleEmpLeaveBalance.rdlc" />
<None Remove="RDLC\MultipleLeaveEmp.rdlc" />
<None Remove="RDLC\MultipleLeaveEmpSimple.rdlc" />
<None Remove="RDLC\MultipleLeaveEmpSimpleNmgt.rdlc" />
@ -379,15 +382,20 @@
<EmbeddedResource Include="RDLC\EmployeeDetailWithOPIEcho.rdlc" />
<EmbeddedResource Include="RDLC\EmployeeInfoBasicForExcel.rdlc" />
<EmbeddedResource Include="RDLC\EmployeeInfoBasic.rdlc" />
<EmbeddedResource Include="RDLC\LeaveLedgerEcho.rdlc">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="RDLC\LeaveLedgerNmgtDetails.rdlc" />
<EmbeddedResource Include="RDLC\LeaveLedgerNmgtLeaveType.rdlc">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="RDLC\LeaveLedgerNmgtMultiple.rdlc" />
<EmbeddedResource Include="RDLC\LeaveReportEcho.rdlc" />
<EmbeddedResource Include="RDLC\MaternityLeaveAfter.rdlc" />
<EmbeddedResource Include="RDLC\MonthlyPFAmount.rdlc">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="RDLC\MultipleEmpLeaveBalance.rdlc" />
<EmbeddedResource Include="RDLC\MultipleLeaveEmp.rdlc" />
<EmbeddedResource Include="RDLC\NewCCWiseSalarySheet.rdlc" />
<EmbeddedResource Include="RDLC\PFExceptionNew.rdlc" />

File diff suppressed because it is too large Load Diff

View File

@ -31,6 +31,9 @@
<xs:element name="WorkDayType" msprop:Generator_ColumnPropNameInTable="WorkDayTypeColumn" msprop:Generator_ColumnPropNameInRow="WorkDayType" msprop:Generator_UserColumnName="WorkDayType" msprop:Generator_ColumnVarNameInTable="columnWorkDayType" type="xs:string" minOccurs="0" />
<xs:element name="AttnDate2" msprop:Generator_ColumnPropNameInTable="AttnDate2Column" msprop:Generator_ColumnPropNameInRow="AttnDate2" msprop:Generator_UserColumnName="AttnDate2" msprop:Generator_ColumnVarNameInTable="columnAttnDate2" type="xs:dateTime" minOccurs="0" />
<xs:element name="Remarks" msprop:Generator_ColumnPropNameInTable="RemarksColumn" msprop:Generator_ColumnPropNameInRow="Remarks" msprop:Generator_UserColumnName="Remarks" msprop:Generator_ColumnVarNameInTable="columnRemarks" type="xs:string" minOccurs="0" />
<xs:element name="ApplyDate" msprop:Generator_ColumnPropNameInRow="ApplyDate" msprop:Generator_ColumnPropNameInTable="ApplyDateColumn" msprop:Generator_ColumnVarNameInTable="columnApplyDate" msprop:Generator_UserColumnName="ApplyDate" type="xs:string" minOccurs="0" />
<xs:element name="ApproveDate" msprop:Generator_ColumnPropNameInRow="ApproveDate" msprop:Generator_ColumnPropNameInTable="ApproveDateColumn" msprop:Generator_ColumnVarNameInTable="columnApproveDate" msprop:Generator_UserColumnName="ApproveDate" type="xs:string" minOccurs="0" />
<xs:element name="LeaveStatus" msprop:Generator_ColumnPropNameInRow="LeaveStatus" msprop:Generator_ColumnPropNameInTable="LeaveStatusColumn" msprop:Generator_ColumnVarNameInTable="columnLeaveStatus" msprop:Generator_UserColumnName="LeaveStatus" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
@ -58,7 +61,13 @@
<xs:element name="Department" msprop:Generator_ColumnPropNameInTable="DepartmentColumn" msprop:Generator_ColumnPropNameInRow="Department" msprop:Generator_UserColumnName="Department" msprop:Generator_ColumnVarNameInTable="columnDepartment" type="xs:string" minOccurs="0" />
<xs:element name="Designation" msprop:Generator_ColumnPropNameInTable="DesignationColumn" msprop:Generator_ColumnPropNameInRow="Designation" msprop:Generator_UserColumnName="Designation" msprop:Generator_ColumnVarNameInTable="columnDesignation" type="xs:string" minOccurs="0" />
<xs:element name="JoiningDate" msprop:Generator_ColumnPropNameInTable="JoiningDateColumn" msprop:Generator_ColumnPropNameInRow="JoiningDate" msprop:Generator_UserColumnName="JoiningDate" msprop:Generator_ColumnVarNameInTable="columnJoiningDate" type="xs:string" minOccurs="0" />
<xs:element name="Shift" msprop:Generator_ColumnPropNameInTable="ShiftColumn" msprop:Generator_ColumnPropNameInRow="Shift" msprop:Generator_UserColumnName="Shift" msprop:Generator_ColumnVarNameInTable="columnShift" type="xs:string" minOccurs="0" />
<xs:element name="Shift" msprop:Generator_ColumnPropNameInRow="Shift" msprop:Generator_ColumnPropNameInTable="ShiftColumn" msprop:Generator_ColumnVarNameInTable="columnShift" msprop:Generator_UserColumnName="Shift" type="xs:string" minOccurs="0" />
<xs:element name="LeavePeriod" msprop:Generator_ColumnPropNameInRow="LeavePeriod" msprop:Generator_ColumnPropNameInTable="LeavePeriodColumn" msprop:Generator_ColumnVarNameInTable="columnLeavePeriod" msprop:Generator_UserColumnName="LeavePeriod" type="xs:string" minOccurs="0" />
<xs:element name="LeaveApprover" msprop:Generator_ColumnPropNameInRow="LeaveApprover" msprop:Generator_ColumnPropNameInTable="LeaveApproverColumn" msprop:Generator_ColumnVarNameInTable="columnLeaveApprover" msprop:Generator_UserColumnName="LeaveApprover" type="xs:string" minOccurs="0" />
<xs:element name="LeaveNotifier" msprop:Generator_ColumnPropNameInRow="LeaveNotifier" msprop:Generator_ColumnPropNameInTable="LeaveNotifierColumn" msprop:Generator_ColumnVarNameInTable="columnLeaveNotifier" msprop:Generator_UserColumnName="LeaveNotifier" type="xs:string" minOccurs="0" />
<xs:element name="Floor" msprop:Generator_ColumnPropNameInRow="Floor" msprop:Generator_ColumnPropNameInTable="FloorColumn" msprop:Generator_ColumnVarNameInTable="columnFloor" msprop:Generator_UserColumnName="Floor" type="xs:string" minOccurs="0" />
<xs:element name="Section" msprop:Generator_ColumnPropNameInRow="Section" msprop:Generator_ColumnPropNameInTable="SectionColumn" msprop:Generator_ColumnVarNameInTable="columnSection" msprop:Generator_UserColumnName="Section" type="xs:string" minOccurs="0" />
<xs:element name="Line" msprop:Generator_ColumnPropNameInRow="Line" msprop:Generator_ColumnPropNameInTable="LineColumn" msprop:Generator_ColumnVarNameInTable="columnLine" msprop:Generator_UserColumnName="Line" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
@ -363,6 +372,7 @@
<xs:element name="Opening" msprop:Generator_ColumnPropNameInTable="OpeningColumn" msprop:Generator_ColumnPropNameInRow="Opening" msprop:Generator_UserColumnName="Opening" msprop:Generator_ColumnVarNameInTable="columnOpening" type="xs:string" minOccurs="0" />
<xs:element name="Availed" msprop:Generator_ColumnPropNameInTable="AvailedColumn" msprop:Generator_ColumnPropNameInRow="Availed" msprop:Generator_UserColumnName="Availed" msprop:Generator_ColumnVarNameInTable="columnAvailed" type="xs:string" minOccurs="0" />
<xs:element name="Balance" msprop:Generator_ColumnPropNameInTable="BalanceColumn" msprop:Generator_ColumnPropNameInRow="Balance" msprop:Generator_UserColumnName="Balance" msprop:Generator_ColumnVarNameInTable="columnBalance" type="xs:string" minOccurs="0" />
<xs:element name="CFDays" msprop:Generator_ColumnPropNameInRow="CFDays" msprop:Generator_ColumnPropNameInTable="CFDaysColumn" msprop:Generator_ColumnVarNameInTable="columnCFDays" msprop:Generator_UserColumnName="CFDays" type="xs:string" minOccurs="0" />
<xs:element name="EmpNo" msprop:Generator_ColumnPropNameInTable="EmpNoColumn" msprop:Generator_ColumnPropNameInRow="EmpNo" msprop:Generator_UserColumnName="EmpNo" msprop:Generator_ColumnVarNameInTable="columnEmpNo" type="xs:string" minOccurs="0" />
<xs:element name="Name" msprop:Generator_ColumnPropNameInTable="NameColumn" msprop:Generator_ColumnPropNameInRow="Name" msprop:Generator_UserColumnName="Name" msprop:Generator_ColumnVarNameInTable="columnName" type="xs:string" minOccurs="0" />
<xs:element name="Designation" msprop:Generator_ColumnPropNameInTable="DesignationColumn" msprop:Generator_ColumnPropNameInRow="Designation" msprop:Generator_UserColumnName="Designation" msprop:Generator_ColumnVarNameInTable="columnDesignation" type="xs:string" minOccurs="0" />
@ -375,6 +385,9 @@
<xs:element name="MaxAccumulatedDays" msprop:Generator_ColumnPropNameInTable="MaxAccumulatedDaysColumn" msprop:Generator_ColumnPropNameInRow="MaxAccumulatedDays" msprop:Generator_UserColumnName="MaxAccumulatedDays" msprop:Generator_ColumnVarNameInTable="columnMaxAccumulatedDays" type="xs:string" minOccurs="0" />
<xs:element name="MaxAccumulatedDaysHr" msprop:Generator_ColumnPropNameInTable="MaxAccumulatedDaysHrColumn" msprop:Generator_ColumnPropNameInRow="MaxAccumulatedDaysHr" msprop:Generator_UserColumnName="MaxAccumulatedDaysHr" msprop:Generator_ColumnVarNameInTable="columnMaxAccumulatedDaysHr" type="xs:string" minOccurs="0" />
<xs:element name="LateAttnAdjust" msprop:Generator_ColumnPropNameInTable="LateAttnAdjustColumn" msprop:Generator_ColumnPropNameInRow="LateAttnAdjust" msprop:Generator_UserColumnName="LateAttnAdjust" msprop:Generator_ColumnVarNameInTable="columnLateAttnAdjust" type="xs:string" minOccurs="0" />
<xs:element name="Floor" msprop:Generator_ColumnPropNameInRow="Floor" msprop:Generator_ColumnPropNameInTable="FloorColumn" msprop:Generator_ColumnVarNameInTable="columnFloor" msprop:Generator_UserColumnName="Floor" type="xs:string" minOccurs="0" />
<xs:element name="Section" msprop:Generator_ColumnPropNameInRow="Section" msprop:Generator_ColumnPropNameInTable="SectionColumn" msprop:Generator_ColumnVarNameInTable="columnSection" msprop:Generator_UserColumnName="Section" type="xs:string" minOccurs="0" />
<xs:element name="Line" msprop:Generator_ColumnPropNameInRow="Line" msprop:Generator_ColumnPropNameInTable="LineColumn" msprop:Generator_ColumnVarNameInTable="columnLine" msprop:Generator_UserColumnName="Line" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
@ -762,25 +775,25 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CCWiseSalarySummary" msprop:Generator_RowEvHandlerName="CCWiseSalarySummaryRowChangeEventHandler" msprop:Generator_RowDeletedName="CCWiseSalarySummaryRowDeleted" msprop:Generator_RowDeletingName="CCWiseSalarySummaryRowDeleting" msprop:Generator_RowEvArgName="CCWiseSalarySummaryRowChangeEvent" msprop:Generator_TablePropName="CCWiseSalarySummary" msprop:Generator_RowChangedName="CCWiseSalarySummaryRowChanged" msprop:Generator_RowChangingName="CCWiseSalarySummaryRowChanging" msprop:Generator_TableClassName="CCWiseSalarySummaryDataTable" msprop:Generator_RowClassName="CCWiseSalarySummaryRow" msprop:Generator_TableVarName="tableCCWiseSalarySummary" msprop:Generator_UserTableName="CCWiseSalarySummary">
<xs:element name="CCWiseSalarySummary" msprop:Generator_RowClassName="CCWiseSalarySummaryRow" msprop:Generator_RowEvHandlerName="CCWiseSalarySummaryRowChangeEventHandler" msprop:Generator_RowDeletedName="CCWiseSalarySummaryRowDeleted" msprop:Generator_RowDeletingName="CCWiseSalarySummaryRowDeleting" msprop:Generator_RowEvArgName="CCWiseSalarySummaryRowChangeEvent" msprop:Generator_TablePropName="CCWiseSalarySummary" msprop:Generator_RowChangedName="CCWiseSalarySummaryRowChanged" msprop:Generator_UserTableName="CCWiseSalarySummary" msprop:Generator_RowChangingName="CCWiseSalarySummaryRowChanging" msprop:Generator_TableClassName="CCWiseSalarySummaryDataTable" msprop:Generator_TableVarName="tableCCWiseSalarySummary">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" msprop:Generator_ColumnPropNameInRow="Name" msprop:Generator_ColumnPropNameInTable="NameColumn" msprop:Generator_ColumnVarNameInTable="columnName" msprop:Generator_UserColumnName="Name" type="xs:string" minOccurs="0" />
<xs:element name="Gross" msprop:Generator_ColumnPropNameInRow="Gross" msprop:Generator_ColumnPropNameInTable="GrossColumn" msprop:Generator_ColumnVarNameInTable="columnGross" msprop:Generator_UserColumnName="Gross" type="xs:double" minOccurs="0" />
<xs:element name="PF" msprop:Generator_ColumnPropNameInRow="PF" msprop:Generator_ColumnPropNameInTable="PFColumn" msprop:Generator_ColumnVarNameInTable="columnPF" msprop:Generator_UserColumnName="PF" type="xs:double" minOccurs="0" />
<xs:element name="PFLoan" msprop:Generator_ColumnPropNameInRow="PFLoan" msprop:Generator_ColumnPropNameInTable="PFLoanColumn" msprop:Generator_ColumnVarNameInTable="columnPFLoan" msprop:Generator_UserColumnName="PFLoan" type="xs:double" minOccurs="0" />
<xs:element name="Deduction" msprop:Generator_ColumnPropNameInRow="Deduction" msprop:Generator_ColumnPropNameInTable="DeductionColumn" msprop:Generator_ColumnVarNameInTable="columnDeduction" msprop:Generator_UserColumnName="Deduction" type="xs:double" minOccurs="0" />
<xs:element name="NetPay" msprop:Generator_ColumnPropNameInRow="NetPay" msprop:Generator_ColumnPropNameInTable="NetPayColumn" msprop:Generator_ColumnVarNameInTable="columnNetPay" msprop:Generator_UserColumnName="NetPay" type="xs:double" minOccurs="0" />
<xs:element name="Basic" msprop:Generator_ColumnPropNameInRow="Basic" msprop:Generator_ColumnPropNameInTable="BasicColumn" msprop:Generator_ColumnVarNameInTable="columnBasic" msprop:Generator_UserColumnName="Basic" type="xs:double" minOccurs="0" />
<xs:element name="HR" msprop:Generator_ColumnPropNameInRow="HR" msprop:Generator_ColumnPropNameInTable="HRColumn" msprop:Generator_ColumnVarNameInTable="columnHR" msprop:Generator_UserColumnName="HR" type="xs:double" minOccurs="0" />
<xs:element name="Medical" msprop:Generator_ColumnPropNameInRow="Medical" msprop:Generator_ColumnPropNameInTable="MedicalColumn" msprop:Generator_ColumnVarNameInTable="columnMedical" msprop:Generator_UserColumnName="Medical" type="xs:double" minOccurs="0" />
<xs:element name="Convence" msprop:Generator_ColumnPropNameInRow="Convence" msprop:Generator_ColumnPropNameInTable="ConvenceColumn" msprop:Generator_ColumnVarNameInTable="columnConvence" msprop:Generator_UserColumnName="Convence" type="xs:double" minOccurs="0" />
<xs:element name="MonthlyLocationAllowanceEURO" msprop:Generator_ColumnPropNameInRow="MonthlyLocationAllowanceEURO" msprop:Generator_ColumnPropNameInTable="MonthlyLocationAllowanceEUROColumn" msprop:Generator_ColumnVarNameInTable="columnMonthlyLocationAllowanceEURO" msprop:Generator_UserColumnName="MonthlyLocationAllowanceEURO" type="xs:double" minOccurs="0" />
<xs:element name="ActualGross" msprop:Generator_ColumnPropNameInRow="ActualGross" msprop:Generator_ColumnPropNameInTable="ActualGrossColumn" msprop:Generator_ColumnVarNameInTable="columnActualGross" msprop:Generator_UserColumnName="ActualGross" type="xs:double" minOccurs="0" />
<xs:element name="ChildDeductionEURO" msprop:Generator_ColumnPropNameInRow="ChildDeductionEURO" msprop:Generator_ColumnPropNameInTable="ChildDeductionEUROColumn" msprop:Generator_ColumnVarNameInTable="columnChildDeductionEURO" msprop:Generator_UserColumnName="ChildDeductionEURO" type="xs:double" minOccurs="0" />
<xs:element name="TotalDeduction" msprop:Generator_ColumnPropNameInRow="TotalDeduction" msprop:Generator_ColumnPropNameInTable="TotalDeductionColumn" msprop:Generator_ColumnVarNameInTable="columnTotalDeduction" msprop:Generator_UserColumnName="TotalDeduction" type="xs:double" minOccurs="0" />
<xs:element name="HousingDeductionEURO" msprop:Generator_ColumnPropNameInRow="HousingDeductionEURO" msprop:Generator_ColumnPropNameInTable="HousingDeductionEUROColumn" msprop:Generator_ColumnVarNameInTable="columnHousingDeductionEURO" msprop:Generator_UserColumnName="HousingDeductionEURO" type="xs:double" minOccurs="0" />
<xs:element name="PFLoaninterest" msprop:Generator_ColumnPropNameInRow="PFLoaninterest" msprop:Generator_ColumnPropNameInTable="PFLoaninterestColumn" msprop:Generator_ColumnVarNameInTable="columnPFLoaninterest" msprop:Generator_UserColumnName="PFLoaninterest" type="xs:double" minOccurs="0" />
<xs:element name="Name" msprop:Generator_UserColumnName="Name" msprop:Generator_ColumnPropNameInTable="NameColumn" msprop:Generator_ColumnPropNameInRow="Name" msprop:Generator_ColumnVarNameInTable="columnName" type="xs:string" minOccurs="0" />
<xs:element name="Gross" msprop:Generator_UserColumnName="Gross" msprop:Generator_ColumnPropNameInTable="GrossColumn" msprop:Generator_ColumnPropNameInRow="Gross" msprop:Generator_ColumnVarNameInTable="columnGross" type="xs:double" minOccurs="0" />
<xs:element name="PF" msprop:Generator_UserColumnName="PF" msprop:Generator_ColumnPropNameInTable="PFColumn" msprop:Generator_ColumnPropNameInRow="PF" msprop:Generator_ColumnVarNameInTable="columnPF" type="xs:double" minOccurs="0" />
<xs:element name="PFLoan" msprop:Generator_UserColumnName="PFLoan" msprop:Generator_ColumnPropNameInTable="PFLoanColumn" msprop:Generator_ColumnPropNameInRow="PFLoan" msprop:Generator_ColumnVarNameInTable="columnPFLoan" type="xs:double" minOccurs="0" />
<xs:element name="Deduction" msprop:Generator_UserColumnName="Deduction" msprop:Generator_ColumnPropNameInTable="DeductionColumn" msprop:Generator_ColumnPropNameInRow="Deduction" msprop:Generator_ColumnVarNameInTable="columnDeduction" type="xs:double" minOccurs="0" />
<xs:element name="NetPay" msprop:Generator_UserColumnName="NetPay" msprop:Generator_ColumnPropNameInTable="NetPayColumn" msprop:Generator_ColumnPropNameInRow="NetPay" msprop:Generator_ColumnVarNameInTable="columnNetPay" type="xs:double" minOccurs="0" />
<xs:element name="Basic" msprop:Generator_UserColumnName="Basic" msprop:Generator_ColumnPropNameInTable="BasicColumn" msprop:Generator_ColumnPropNameInRow="Basic" msprop:Generator_ColumnVarNameInTable="columnBasic" type="xs:double" minOccurs="0" />
<xs:element name="HR" msprop:Generator_UserColumnName="HR" msprop:Generator_ColumnPropNameInTable="HRColumn" msprop:Generator_ColumnPropNameInRow="HR" msprop:Generator_ColumnVarNameInTable="columnHR" type="xs:double" minOccurs="0" />
<xs:element name="Medical" msprop:Generator_UserColumnName="Medical" msprop:Generator_ColumnPropNameInTable="MedicalColumn" msprop:Generator_ColumnPropNameInRow="Medical" msprop:Generator_ColumnVarNameInTable="columnMedical" type="xs:double" minOccurs="0" />
<xs:element name="Convence" msprop:Generator_UserColumnName="Convence" msprop:Generator_ColumnPropNameInTable="ConvenceColumn" msprop:Generator_ColumnPropNameInRow="Convence" msprop:Generator_ColumnVarNameInTable="columnConvence" type="xs:double" minOccurs="0" />
<xs:element name="MonthlyLocationAllowanceEURO" msprop:Generator_UserColumnName="MonthlyLocationAllowanceEURO" msprop:Generator_ColumnPropNameInTable="MonthlyLocationAllowanceEUROColumn" msprop:Generator_ColumnPropNameInRow="MonthlyLocationAllowanceEURO" msprop:Generator_ColumnVarNameInTable="columnMonthlyLocationAllowanceEURO" type="xs:double" minOccurs="0" />
<xs:element name="ActualGross" msprop:Generator_UserColumnName="ActualGross" msprop:Generator_ColumnPropNameInTable="ActualGrossColumn" msprop:Generator_ColumnPropNameInRow="ActualGross" msprop:Generator_ColumnVarNameInTable="columnActualGross" type="xs:double" minOccurs="0" />
<xs:element name="ChildDeductionEURO" msprop:Generator_UserColumnName="ChildDeductionEURO" msprop:Generator_ColumnPropNameInTable="ChildDeductionEUROColumn" msprop:Generator_ColumnPropNameInRow="ChildDeductionEURO" msprop:Generator_ColumnVarNameInTable="columnChildDeductionEURO" type="xs:double" minOccurs="0" />
<xs:element name="TotalDeduction" msprop:Generator_UserColumnName="TotalDeduction" msprop:Generator_ColumnPropNameInTable="TotalDeductionColumn" msprop:Generator_ColumnPropNameInRow="TotalDeduction" msprop:Generator_ColumnVarNameInTable="columnTotalDeduction" type="xs:double" minOccurs="0" />
<xs:element name="HousingDeductionEURO" msprop:Generator_UserColumnName="HousingDeductionEURO" msprop:Generator_ColumnPropNameInTable="HousingDeductionEUROColumn" msprop:Generator_ColumnPropNameInRow="HousingDeductionEURO" msprop:Generator_ColumnVarNameInTable="columnHousingDeductionEURO" type="xs:double" minOccurs="0" />
<xs:element name="PFLoaninterest" msprop:Generator_UserColumnName="PFLoaninterest" msprop:Generator_ColumnPropNameInTable="PFLoaninterestColumn" msprop:Generator_ColumnPropNameInRow="PFLoaninterest" msprop:Generator_ColumnVarNameInTable="columnPFLoaninterest" type="xs:double" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>

View File

@ -4,56 +4,56 @@
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DiagramLayout xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ex:showrelationlabel="False" ViewPortX="94" ViewPortY="-2" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<DiagramLayout xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ex:showrelationlabel="False" ViewPortX="-15" ViewPortY="-13" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<Shapes>
<Shape ID="DesignTable:EmpLeaveLedger" ZOrder="25" X="443" Y="-3" Height="257" Width="164" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:CCWiseLeaveEncash" ZOrder="9" X="0" Y="18" Height="49" Width="182" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="86" />
<Shape ID="DesignTable:LeaveYear" ZOrder="15" X="664" Y="33" Height="67" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="57" SplitterPosition="24" />
<Shape ID="DesignTable:EmpInformation" ZOrder="24" X="446" Y="29" Height="143" Width="161" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="139" SplitterPosition="24" />
<Shape ID="DesignTable:OPIRegister" ZOrder="21" X="870" Y="102" Height="143" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="126" SplitterPosition="24" />
<Shape ID="DesignTable:MaternityLeave" ZOrder="30" X="218" Y="32" Height="257" Width="193" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="329" SplitterPosition="24" />
<Shape ID="DesignTable:MaternityStatusDetail" ZOrder="29" X="217" Y="-2" Height="105" Width="193" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="91" SplitterPosition="24" />
<Shape ID="DesignTable:FSSDeduct" ZOrder="36" X="8" Y="196" Height="257" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="228" SplitterPosition="24" />
<Shape ID="DesignTable:FSSAdd" ZOrder="37" X="7" Y="3" Height="257" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="228" SplitterPosition="24" />
<Shape ID="DesignTable:GratuityLedger" ZOrder="20" X="1053" Y="0" Height="143" Width="153" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="125" SplitterPosition="24" />
<Shape ID="DesignTable:GratuityRegister" ZOrder="19" X="1055" Y="34" Height="124" Width="161" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="108" SplitterPosition="24" />
<Shape ID="DesignTable:FSSEmpInformation" ZOrder="43" X="6" Y="101" Height="257" Width="181" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:Budget" ZOrder="18" X="869" Y="66" Height="162" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="158" SplitterPosition="24" />
<Shape ID="DesignTable:BudgetCC" ZOrder="17" X="866" Y="-2" Height="162" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="142" SplitterPosition="24" />
<Shape ID="DesignTable:BudgetComparison" ZOrder="3" X="868" Y="31" Height="238" Width="178" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="245" SplitterPosition="234" />
<Shape ID="DesignTable:FSSAddItem" ZOrder="47" X="7" Y="133" Height="67" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="63" SplitterPosition="24" />
<Shape ID="DesignTable:FSSDeductItem" ZOrder="48" X="8" Y="165" Height="67" Width="154" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="63" SplitterPosition="24" />
<Shape ID="DesignTable:FSSAddOtherItem" ZOrder="46" X="3" Y="361" Height="67" Width="170" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="63" SplitterPosition="24" />
<Shape ID="DesignTable:FStkinwords" ZOrder="45" X="5" Y="328" Height="48" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="44" SplitterPosition="24" />
<Shape ID="DesignTable:FSSsalaryComponent" ZOrder="44" X="7" Y="69" Height="238" Width="188" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="234" SplitterPosition="24" />
<Shape ID="DesignTable:FSEmp" ZOrder="38" X="7" Y="230" Height="257" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:FSSFracsalary" ZOrder="42" X="6" Y="296" Height="219" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="215" SplitterPosition="24" />
<Shape ID="DesignTable:FSPreLeave" ZOrder="41" X="6" Y="263" Height="143" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="139" SplitterPosition="24" />
<Shape ID="DesignTable:fsdec" ZOrder="39" X="7" Y="38" Height="67" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="86" SplitterPosition="24" />
<Shape ID="DesignTable:fstotal" ZOrder="40" X="5" Y="393" Height="86" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="82" SplitterPosition="24" />
<Shape ID="DesignTable:LeaveBalance" ZOrder="14" X="662" Y="-1" Height="257" Width="160" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:EmployeesTaxDeduction" ZOrder="23" X="442" Y="62" Height="162" Width="209" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="158" SplitterPosition="24" />
<Shape ID="DesignTable:TaxInvestment" ZOrder="28" X="219" Y="99" Height="143" Width="152" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="139" SplitterPosition="24" />
<Shape ID="DesignTable:TaxChallan" ZOrder="27" X="218" Y="132" Height="143" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="139" SplitterPosition="24" />
<Shape ID="DesignTable:LeaveApplication" ZOrder="2" X="663" Y="68" Height="257" Width="166" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="253" />
<Shape ID="DesignTable:ShortLeave" ZOrder="16" X="1055" Y="68" Height="181" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="177" SplitterPosition="24" />
<Shape ID="DesignTable:MultipleEmployeeLeave" ZOrder="26" X="217" Y="64" Height="257" Width="204" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:LeaveInformation" ZOrder="13" X="662" Y="97" Height="257" Width="168" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:LeaveLedger" ZOrder="12" X="663" Y="129" Height="257" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="310" SplitterPosition="24" />
<Shape ID="DesignTable:LFAReport" ZOrder="11" X="662" Y="162" Height="238" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="234" SplitterPosition="24" />
<Shape ID="DesignTable:FSTerminalBenefit" ZOrder="35" X="3" Y="427" Height="257" Width="172" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:FSLess" ZOrder="34" X="2" Y="458" Height="200" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="196" SplitterPosition="24" />
<Shape ID="DesignTable:EmpDepartmentalLeave" ZOrder="22" X="439" Y="96" Height="257" Width="204" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:TeamLeaveEmpInfo" ZOrder="31" X="0" Y="0" Height="162" Width="180" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="86" SplitterPosition="24" />
<Shape ID="DesignTable:TeamLeaveType" ZOrder="32" X="0" Y="0" Height="162" Width="159" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="86" SplitterPosition="24" />
<Shape ID="DesignTable:TeamLeaveDetails" ZOrder="33" X="0" Y="0" Height="200" Width="170" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="86" SplitterPosition="24" />
<Shape ID="DesignTable:BonusPaySlip" ZOrder="8" X="0" Y="18" Height="201" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="86" />
<Shape ID="DesignTable:LeaveCashAdvice" ZOrder="7" X="0" Y="18" Height="87" Width="165" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="86" />
<Shape ID="DesignTable:LeaveEntrysForSchedular" ZOrder="10" X="660" Y="195" Height="257" Width="210" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:LeaveEncash" ZOrder="6" X="0" Y="18" Height="182" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="86" />
<Shape ID="DesignTable:MLPayment" ZOrder="5" X="399" Y="182" Height="239" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="253" />
<Shape ID="DesignTable:MLBenefit" ZOrder="4" X="240" Y="185" Height="257" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="253" />
<Shape ID="DesignTable:CCWiseSalarySummary" ZOrder="1" X="943" Y="316" Height="257" Width="221" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="253" />
<Shape ID="DesignTable:EmpLeaveLedger" ZOrder="33" X="443" Y="-3" Height="28" Width="164" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:CCWiseLeaveEncash" ZOrder="41" X="183" Y="456" Height="28" Width="182" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="45" SplitterPosition="24" />
<Shape ID="DesignTable:LeaveYear" ZOrder="11" X="664" Y="33" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="57" SplitterPosition="24" />
<Shape ID="DesignTable:EmpInformation" ZOrder="32" X="448" Y="29" Height="28" Width="161" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:OPIRegister" ZOrder="43" X="870" Y="102" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="126" SplitterPosition="24" />
<Shape ID="DesignTable:MaternityLeave" ZOrder="29" X="218" Y="32" Height="28" Width="193" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="329" SplitterPosition="24" />
<Shape ID="DesignTable:MaternityStatusDetail" ZOrder="31" X="217" Y="-2" Height="28" Width="193" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="91" SplitterPosition="24" />
<Shape ID="DesignTable:FSSDeduct" ZOrder="20" X="8" Y="196" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="228" SplitterPosition="24" />
<Shape ID="DesignTable:FSSAdd" ZOrder="24" X="7" Y="3" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="228" SplitterPosition="24" />
<Shape ID="DesignTable:GratuityLedger" ZOrder="3" X="1053" Y="0" Height="28" Width="153" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="125" SplitterPosition="24" />
<Shape ID="DesignTable:GratuityRegister" ZOrder="4" X="1055" Y="34" Height="28" Width="161" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="108" SplitterPosition="24" />
<Shape ID="DesignTable:FSSEmpInformation" ZOrder="26" X="6" Y="101" Height="28" Width="181" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:Budget" ZOrder="5" X="869" Y="66" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="158" SplitterPosition="24" />
<Shape ID="DesignTable:BudgetCC" ZOrder="7" X="866" Y="-2" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="142" SplitterPosition="24" />
<Shape ID="DesignTable:BudgetComparison" ZOrder="6" X="868" Y="31" Height="28" Width="178" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="245" SplitterPosition="24" />
<Shape ID="DesignTable:FSSAddItem" ZOrder="22" X="7" Y="133" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="63" SplitterPosition="24" />
<Shape ID="DesignTable:FSSDeductItem" ZOrder="21" X="8" Y="165" Height="28" Width="154" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="63" SplitterPosition="24" />
<Shape ID="DesignTable:FSSAddOtherItem" ZOrder="15" X="3" Y="361" Height="28" Width="170" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="63" SplitterPosition="24" />
<Shape ID="DesignTable:FStkinwords" ZOrder="48" X="5" Y="328" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="44" SplitterPosition="24" />
<Shape ID="DesignTable:FSSsalaryComponent" ZOrder="25" X="7" Y="69" Height="28" Width="188" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="234" SplitterPosition="24" />
<Shape ID="DesignTable:FSEmp" ZOrder="19" X="7" Y="230" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:FSSFracsalary" ZOrder="17" X="6" Y="296" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="215" SplitterPosition="24" />
<Shape ID="DesignTable:FSPreLeave" ZOrder="18" X="6" Y="263" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="139" SplitterPosition="24" />
<Shape ID="DesignTable:fsdec" ZOrder="23" X="197" Y="231" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="86" SplitterPosition="24" />
<Shape ID="DesignTable:fstotal" ZOrder="16" X="5" Y="393" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="82" SplitterPosition="24" />
<Shape ID="DesignTable:LeaveBalance" ZOrder="1" X="662" Y="-1" Height="28" Width="177" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="140" SplitterPosition="24" />
<Shape ID="DesignTable:EmployeesTaxDeduction" ZOrder="13" X="442" Y="62" Height="28" Width="209" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="158" SplitterPosition="24" />
<Shape ID="DesignTable:TaxInvestment" ZOrder="28" X="219" Y="99" Height="28" Width="152" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="139" SplitterPosition="24" />
<Shape ID="DesignTable:TaxChallan" ZOrder="27" X="218" Y="132" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="139" SplitterPosition="24" />
<Shape ID="DesignTable:LeaveApplication" ZOrder="35" X="663" Y="68" Height="28" Width="166" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:ShortLeave" ZOrder="42" X="1055" Y="68" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="177" SplitterPosition="24" />
<Shape ID="DesignTable:MultipleEmployeeLeave" ZOrder="30" X="217" Y="64" Height="28" Width="204" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:LeaveInformation" ZOrder="10" X="662" Y="97" Height="28" Width="168" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:LeaveLedger" ZOrder="9" X="663" Y="129" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="310" SplitterPosition="24" />
<Shape ID="DesignTable:LFAReport" ZOrder="8" X="662" Y="162" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="234" SplitterPosition="24" />
<Shape ID="DesignTable:FSTerminalBenefit" ZOrder="14" X="3" Y="427" Height="28" Width="172" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:FSLess" ZOrder="47" X="2" Y="458" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="196" SplitterPosition="24" />
<Shape ID="DesignTable:EmpDepartmentalLeave" ZOrder="12" X="439" Y="96" Height="28" Width="204" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:TeamLeaveEmpInfo" ZOrder="44" X="192" Y="491" Height="28" Width="180" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="86" SplitterPosition="24" />
<Shape ID="DesignTable:TeamLeaveType" ZOrder="45" X="195" Y="524" Height="28" Width="159" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="86" SplitterPosition="24" />
<Shape ID="DesignTable:TeamLeaveDetails" ZOrder="46" X="188" Y="311" Height="28" Width="170" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="86" SplitterPosition="24" />
<Shape ID="DesignTable:BonusPaySlip" ZOrder="40" X="184" Y="423" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="197" SplitterPosition="24" />
<Shape ID="DesignTable:LeaveCashAdvice" ZOrder="39" X="183" Y="385" Height="28" Width="165" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="83" SplitterPosition="24" />
<Shape ID="DesignTable:LeaveEntrysForSchedular" ZOrder="2" X="660" Y="195" Height="28" Width="210" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:LeaveEncash" ZOrder="38" X="199" Y="347" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="178" SplitterPosition="24" />
<Shape ID="DesignTable:MLPayment" ZOrder="37" X="399" Y="182" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="235" SplitterPosition="24" />
<Shape ID="DesignTable:MLBenefit" ZOrder="36" X="240" Y="185" Height="28" Width="150" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
<Shape ID="DesignTable:CCWiseSalarySummary" ZOrder="34" X="378" Y="313" Height="28" Width="221" AdapterExpanded="true" DataTableExpanded="false" OldAdapterHeight="0" OldDataTableHeight="253" SplitterPosition="24" />
</Shapes>
<Connectors />
</DiagramLayout>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -102,14 +102,32 @@ export enum EnumWFCvSortStatus {
}
export enum EnumLeaveCalculationType {
Yearly = 1,
Monthly_Earn = 2,
Hourly_365Day = 3,
Hourly_Monthly = 4,
OneDay_On_18Day_Present = 5,
Hourly_Prorated = 6,
Days_365 = 7,
Yearly_Without_Prorated = 8,
// Yearly = 1,
// Monthly_Earn = 2,
// Hourly_365Day = 3,
// Hourly_Monthly = 4,
// OneDay_On_18Day_Present = 5,
// Hourly_Prorated = 6,
// Days_365 = 7,
// Yearly_Without_Prorated = 8,
Daily = 0,
Monthly = 1,
Yearly = 2,
//Prorated=3,
Not_Applicable = 4,
Not_Applicable_With_Prorated = 5,
Hourly = 6,
//Yearly = 7,
Monthly_Earn = 8,
Hourly_365Day = 9,
Hourly_Monthly = 10,
OneDay_On_18Day_Present = 11,
Hourly_Prorated = 12,
Days_365 = 13,
Yearly_without_Prorated = 14
}
export enum EnumLeaveparamOn {

View File

@ -9,6 +9,15 @@ export class GlobalfunctionExtension {
lastDate.setMonth(lastDate.getMonth() + 1, 0);
return lastDate;
}
public static getFirstDateofYear(inputDate: Date): Date {
inputDate = new Date(inputDate);
return new Date(inputDate.getFullYear(), 0, 1);
}
public static getLastDateOfYear(inputDate: Date): Date {
inputDate = new Date(inputDate);
return new Date(inputDate.getFullYear(), 11, 31);
}
public static capitalizeFirstLetter(inputString: string): string {
debugger;
if (inputString.length === 0) {

View File

@ -1,28 +1,50 @@
<app-loading-panel> </app-loading-panel>
<div class="card card-w-card">
<div class="p-grid">
<div class="p-col-12 p-md-6 p-lg-2">
<!-- <div class="p-col-12 p-md-6 p-lg-2">
<label>Select Employee:</label>
</div>
</div> -->
<div class="p-col-12 p-md-6 p-lg-2">
<app-employee-picker (ItemSelected)="GetSelectedEmployee($event)"></app-employee-picker>
</div>
<div class="p-col-12 p-md-6 p-lg-2">
<label>Leave:</label>
<div class="p-col-12 p-md-6 p-lg-3">
<div class="p-grid">
<div class="p-col-4">
<label>From Date </label>
</div>
<div class="p-col-12 p-md-6 p-lg-2">
<kendo-dropdownlist [data]="leaveList"
[(ngModel)]="leaveId"
[defaultItem]="{ description: 'Select Leave Year...', id: null }"
[textField]="'description'"
[valueField]="'id'"
[valuePrimitive]="true"
style="width: 100%"
class="form-control form-control-sm input-sm"
>
<div class="p-col-8">
<kendo-datepicker format="dd MMM yyyy" [(ngModel)]="fromDate" style="width:100%"></kendo-datepicker>
</div>
</div>
</div>
<div class="p-col-12 p-md-6 p-lg-3">
<div class="p-grid">
<div class="p-col-4">
<label>To Date </label>
</div>
<div class="p-col-8">
<kendo-datepicker format="dd MMM yyyy" [(ngModel)]="toDate" style="width:100%"></kendo-datepicker>
</div>
</div>
</div>
<div class="p-col-12 p-md-6 p-lg-3">
<div class="p-grid">
<div class="p-col-4">
<label>Leave Type </label>
</div>
<div class="p-col-8">
<kendo-dropdownlist [data]="leaveList" [(ngModel)]="leaveId"
[defaultItem]="{ description: 'All', id: null }" [textField]="'description'"
[valueField]="'id'" [valuePrimitive]="true" style="width: 100%"
class="form-control form-control-sm input-sm">
</kendo-dropdownlist>
</div>
<div class="p-col-12 p-md-6 p-lg-2">
</div>
</div>
<div class="p-col-12 p-md-6 p-lg-1" align="right">
<button type="button" class="k-primary" (click)="preview()" icon="preview" kendoButton>Preview</button>
</div>
<!-- <div class="p-col-12 p-md-6 p-lg-2">
<label>Leave Year:</label>
</div>
<div class="p-col-12 p-md-6 p-lg-2">
@ -36,15 +58,10 @@
class="form-control form-control-sm input-sm"
>
</kendo-dropdownlist>
</div>
<div class="p-col-12 p-md-12 p-lg-2" align="right">
<button type="button" class="k-primary" (click)="preview()" icon="preview" kendoButton>Preview</button>
</div>
</div> -->
</div>
</div>
<kendo-dialog *ngIf="showPopUp" (close)="closeForm()"
title="{{PDFTitle}}"
[height]="500" [width]="800">
<kendo-dialog *ngIf="showPopUp" (close)="closeForm()" title="{{PDFTitle}}" [height]="500" [width]="800">
<div class="p-grid">
@ -61,16 +78,9 @@
*ngIf="blocFilterOpened">
</ngx-extended-pdf-viewer>-->
<ngx-extended-pdf-viewer [src]="src"
[showBookmarkButton]="false"
[showOpenFileButton]="false"
[showSidebarButton]="false"
[textLayer]="false"
[enableDragAndDrop]="false"
[showSecondaryToolbarButton]="false"
[zoom]="'page-width'"
[useBrowserLocale]="true"
[height]="'70vh'"
<ngx-extended-pdf-viewer [src]="src" [showBookmarkButton]="false" [showOpenFileButton]="false"
[showSidebarButton]="false" [textLayer]="false" [enableDragAndDrop]="false"
[showSecondaryToolbarButton]="false" [zoom]="'page-width'" [useBrowserLocale]="true" [height]="'70vh'"
[handTool]="true">
</ngx-extended-pdf-viewer>
</div>

View File

@ -9,6 +9,7 @@ import {ApiService} from '../../app.api.service';
import {EnumStatus} from '../../_models/enums';
import {saveAs} from 'file-saver';
import {ReportServices} from '../../_services/reports/report.service';
import { GlobalfunctionExtension } from 'src/app/_models/globalFunctions';
@Component({
selector: 'app-emp-leave-balance',
@ -26,6 +27,8 @@ export class EmpLeaveBalanceComponent implements OnInit {
src: any;
base64Data: any;
leaveId: number;
fromDate: Date = GlobalfunctionExtension.getFirstDateofYear(new Date());
toDate: Date = GlobalfunctionExtension.getLastDateOfYear(new Date());
constructor(public leaveService: LeaveService,
@ -50,10 +53,11 @@ export class EmpLeaveBalanceComponent implements OnInit {
this.leaveYearList = resp;
},
(err) => {
console.log(err);
this.notificationService.showError(err.error);
// console.log(err);
},
() => {
console.log(this.leaveYearList);
// console.log(this.leaveYearList);
}
);
this.leaveService.getAllLeave(EnumStatus.Active, '', '').subscribe(
@ -61,10 +65,11 @@ export class EmpLeaveBalanceComponent implements OnInit {
this.leaveList = resp;
},
(err) => {
console.log(err);
this.notificationService.showError(err.error);
// console.log(err);
},
() => {
console.log(this.leaveList);
// console.log(this.leaveList);
/*this.leaveList.forEach(x => {
x.code = x.code.toLowerCase() + x.id;
});*/
@ -73,19 +78,19 @@ export class EmpLeaveBalanceComponent implements OnInit {
}
preview() {
const leave = this.leaveYearList.find(l => l.id === this.leaveYearId);
if (leave === null) {
this.notificationService.showError('Please select leave year!');
return;
}
// const leave = this.leaveYearList.find(l => l.id === this.leaveYearId);
// if (leave === null) {
// this.notificationService.showError('Please select leave year!');
// return;
// }
const data = {
reportid: 97,
reportid: 724,
itemid: this.leaveId,
bankId: null,
empIds: this.selectedEmployee.employeeID.toString(),
reportType: 'PDF',
fromDate: leave.startDate,
toDate: leave.endDate
fromDate: this.fromDate,
toDate: this.toDate
};
this.loadingPanel.ShowLoadingPanel = true;

View File

@ -0,0 +1,32 @@
.embed-responsive {
position: relative;
display: block;
/* height: 0; */
padding: 0;
overflow: hidden;
/* padding-bottom:68%; */
background: white;
}
.pdf-viewer {
width: 100%;
/* min-height: 700px; */
height: 100%;
/* min-width: 275px; */
/* max-height: 100%;
background-color: white !important; */
}
.window-viewer {
/* position: relative;
top: 0;
left: 0;
transform: translate(5%, 5%); */
width: 70%;
/* height: 90%; */
/* min-width: 300px; */
/* max-width: 100%;
min-height: 80%; */
max-height: 100%;
}

View File

@ -4,14 +4,14 @@
<div class="p-col-12 p-md-6 p-lg-2" style="margin: auto;">
<label>Select Employee:</label>
</div>
<div class="p-col-12 p-md-6 p-lg-3">
<div class="p-col-12 p-md-6 p-lg-2">
<app-employee-picker [MultiSelect]="true"
(ItemSelected)="GetSelectedEmployee($event)"></app-employee-picker>
</div>
<div class="p-col-12 p-md-6 p-lg-2" style="margin: auto;">
<label>Leave Year:</label>
</div>
<div class="p-col-12 p-md-6 p-lg-3">
<div class="p-col-12 p-md-6 p-lg-2">
<kendo-dropdownlist [data]="leaveYearList"
[(ngModel)]="leaveYearId"
[defaultItem]="{ name: 'Select a Leave Year', id: null }"
@ -22,13 +22,14 @@
class="form-control form-control-sm input-sm">
</kendo-dropdownlist>
</div>
<div class="p-col-12 p-md-12 p-lg-2" align="right">
<button type="button" class="k-primary" (click)="preview()" icon="preview" kendoButton>Preview</button>
<div class="p-col-12 p-md-12 p-lg-4" align="right">
<button type="button" kendoButton icon="file-pdf" [primary]="true" (click)="preview('PDF')" style="margin-right: 10px;">Preview</button>
<button type="button" kendoButton icon="file-excel" [primary]="true" (click)="preview('EXCEL')">Export</button>
</div>
</div>
</div>
<div class="card">
<!-- <div class="card">
<div class="p-grid">
<div class="p-col-12 p-md-12 p-lg-12">
<kendo-grid [data]="data" [resizable]="true" [height]="480">
@ -48,4 +49,14 @@
</kendo-grid>
</div>
</div>
</div> -->
<div class="card" *ngIf="showPopUp" class="blur-background">
<kendo-window [height]="600" class='window-viewer' title="{{PDFTitle}}" *ngIf="showPopUp" (close)="closeForm()">
<!-- [height]="600" [style]="{'min-width': '70%','max-width': '100%', 'max-height': '100%'}"> -->
<app-loading-panel> </app-loading-panel>
<div class='embed-responsive'>
<iframe class="pdf-viewer" id="pdf-viewer-report" type='application/pdf' [zoom]="zoomLevel"></iframe>
</div>
</kendo-window>
</div>

View File

@ -1,13 +1,16 @@
import {Component, OnInit} from '@angular/core';
import {SearchEmployee} from '../../_models/Employee/searchEmployee';
import {LeaveYear} from '../../_models/Leave/leaveYear';
import {LeaveService} from '../../_services/leave/leave.service';
import {MultipleEmployeeLeaveBalance} from '../../_models/report/multipleEmployeeLeaveBalance';
import {Leave} from '../../_models/Leave/leave';
import {EnumStatus} from '../../_models/enums';
import {HRMNotificationService} from '../../app.notification.service';
import {loadingPanelService} from '../../hrm-loding panel/loding.panel.service';
import {ApiService} from '../../app.api.service';
import { Component, OnInit } from '@angular/core';
import { SearchEmployee } from '../../_models/Employee/searchEmployee';
import { LeaveYear } from '../../_models/Leave/leaveYear';
import { LeaveService } from '../../_services/leave/leave.service';
import { MultipleEmployeeLeaveBalance } from '../../_models/report/multipleEmployeeLeaveBalance';
import { Leave } from '../../_models/Leave/leave';
import { EnumStatus } from '../../_models/enums';
import { HRMNotificationService } from '../../app.notification.service';
import { loadingPanelService } from '../../hrm-loding panel/loding.panel.service';
import { ApiService } from '../../app.api.service';
import { ReportServices } from 'src/app/_services/reports/report.service';
import { saveAs } from 'file-saver';
import { Router } from '@angular/router';
@Component({
selector: 'app-multiple-emp-leave-balance',
@ -25,9 +28,22 @@ export class MultipleEmpLeaveBalanceComponent implements OnInit {
temp = 'Header boss';
cols: { colfiled: string, colName: string, width: string, color: string }[];
reportType: any;
PDFTitle = 'Employee Leave Balance';
showPopUp = false;
src: any;
base64Data: any;
constructor(public leaveService: LeaveService, public notificationService: HRMNotificationService,
public loadingPanel: loadingPanelService, public apiService: ApiService) {
this.apiService.selectedMenuName = 'Employee Leave Balance';
public loadingPanel: loadingPanelService, public apiService: ApiService,
public reportService: ReportServices,
public router: Router) {
this.reportType = this.router.url.split('/').pop();
debugger
if(this.reportType == 'multiple-emp-leave-balance')
this.apiService.selectedMenuName = 'Multiple Employee Leave Balance';
else if(this.reportType == 'multiple-emp-leave-report')
this.apiService.selectedMenuName = 'Employee Leave Report';
}
ngOnInit() {
@ -65,59 +81,58 @@ export class MultipleEmpLeaveBalanceComponent implements OnInit {
this.selectedEmployees = childData;
}
preview() {
/*this.selectedEmployees.forEach(x => {
if (this.empIds.length !== 0) {
this.empIds += ',';
}
this.empIds += x.employeeID;
});*/
this.loadingPanel.ShowLoadingPanel = true;
if (this.selectedEmployees == undefined || this.selectedEmployees.length == 0) {
this.notificationService.showError('Select employees for the report');
this.loadingPanel.ShowLoadingPanel = false;
return;
}
this.selectedEmployees[0].departmentID = this.leaveYearId;
// this.leaveService.getMultipleEmployeeLeaveBalance(this.selectedEmployees, ).subscribe(
this.leaveService.getMultipleEmployeeLeaveBalance(this.leaveYearId, this.selectedEmployees).subscribe(
(resp) => {
debugger;
this.data = resp;
},
(err) => {
this.notificationService.showError(err.error);
this.loadingPanel.ShowLoadingPanel = false;
// preview() {
// /*this.selectedEmployees.forEach(x => {
// if (this.empIds.length !== 0) {
// this.empIds += ',';
// }
// this.empIds += x.employeeID;
// });*/
// this.loadingPanel.ShowLoadingPanel = true;
// if (this.selectedEmployees == undefined || this.selectedEmployees.length == 0) {
// this.notificationService.showError('Select employees for the report');
// this.loadingPanel.ShowLoadingPanel = false;
// return;
// }
// this.selectedEmployees[0].departmentID = this.leaveYearId;
// // this.leaveService.getMultipleEmployeeLeaveBalance(this.selectedEmployees, ).subscribe(
// this.leaveService.getMultipleEmployeeLeaveBalance(this.leaveYearId, this.selectedEmployees).subscribe(
// (resp) => {
// debugger;
// this.data = resp;
// },
// (err) => {
// this.notificationService.showError(err.error);
// this.loadingPanel.ShowLoadingPanel = false;
},
() => {
this.loadingPanel.ShowLoadingPanel = false;
if (this.data.length > 0) {
this.cols = [];
for (var i = 0; i < Object.keys(this.data[0]).length; i++) {
if (i == 0) {
this.cols.push({
'colfiled': Object.keys(this.data[0])[i], 'colName': this.capitalizeFirstLetter(Object.keys(this.data[0])[i]) == 'EmpNo' ? 'Emp Id' :this.capitalizeFirstLetter(Object.keys(this.data[0])[i]) ,
'width': '80', 'color': 'transparent'
});
} else if (i == 1) {
this.cols.push({
'colfiled': Object.keys(this.data[0])[i], 'colName': this.capitalizeFirstLetter(Object.keys(this.data[0])[i]),
'width': '100', 'color': 'transparent'
});
} else {
this.cols.push({
'colfiled': Object.keys(this.data[0])[i], 'colName': this.replaceUnderscoresWithSpaces(Object.keys(this.data[0])[i].toUpperCase()),
'width': '65', 'color': 'transparent'
});
}
}
}
}
);
}
// },
// () => {
// this.loadingPanel.ShowLoadingPanel = false;
// if (this.data.length > 0) {
// this.cols = [];
// for (var i = 0; i < Object.keys(this.data[0]).length; i++) {
// if (i == 0) {
// this.cols.push({
// 'colfiled': Object.keys(this.data[0])[i], 'colName': this.capitalizeFirstLetter(Object.keys(this.data[0])[i]) == 'EmpNo' ? 'Emp Id' :this.capitalizeFirstLetter(Object.keys(this.data[0])[i]) ,
// 'width': '80', 'color': 'transparent'
// });
// } else if (i == 1) {
// this.cols.push({
// 'colfiled': Object.keys(this.data[0])[i], 'colName': this.capitalizeFirstLetter(Object.keys(this.data[0])[i]),
// 'width': '100', 'color': 'transparent'
// });
// } else {
// this.cols.push({
// 'colfiled': Object.keys(this.data[0])[i], 'colName': this.replaceUnderscoresWithSpaces(Object.keys(this.data[0])[i].toUpperCase()),
// 'width': '65', 'color': 'transparent'
// });
// }
// }
// }
// }
// );
// }
public capitalizeFirstLetter(inputString: string): string {
debugger;
if (inputString.length === 0) {
@ -129,4 +144,92 @@ export class MultipleEmpLeaveBalanceComponent implements OnInit {
if (!str) return str;
return str.replace(/_/g, ' ');
}
preview(reportType: string) {
if (this.selectedEmployees == undefined || this.selectedEmployees.length == 0) {
this.notificationService.showWarning('Select employees for the report');
return;
}
if (this.leaveYearId == undefined || this.leaveYearId == null) {
this.notificationService.showWarning('Select Leave Year');
return;
}
debugger
this.selectedEmployees.forEach(x => {
if (this.empIds !== '') {
this.empIds += ',';
}
this.empIds += x.employeeID;
});
let reportid
if(this.reportType == 'multiple-emp-leave-balance')
reportid = 725;
else if(this.reportType == 'multiple-emp-leave-report')
reportid = 726;
const data = {
reportid: reportid,
itemid: this.leaveYearId,
empIds: this.empIds,
reportType: reportType,
};
this.loadingPanel.ShowLoadingPanel = true;
if (reportType === 'PDF')
this.showPopUp = true;
this.reportService.getCommonReportData(data).subscribe(
(resp: any) => {
debugger;
if (reportType === 'PDF') {
this.src = URL.createObjectURL(this.b64toBlob(resp, 'application/pdf', 1024));
var element = <HTMLIFrameElement>(document.getElementById("pdf-viewer-report"));
element.src = this.src;
} else if (reportType === 'EXCEL') {
this.downloadFile(resp);
}
},
(err) => {
console.log(err);
this.notificationService.showError(err.error);
this.loadingPanel.ShowLoadingPanel = false;
this.showPopUp = false;
},
() => {
this.loadingPanel.ShowLoadingPanel = false;
// this.loadGrid();
}
);
}
downloadFile(blobContent) {
const blob = new Blob([this.b64toBlob(blobContent, 'application/data:application/vnd.ms-excel', 1024)], {});
saveAs(blob, this.PDFTitle + '.xls');
}
b64toBlob(b64Data, contentType, sliceSize) {
const byteCharacters = atob(b64Data);
const byteArrays = [];
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
const slice = byteCharacters.slice(offset, offset + sliceSize);
const byteNumbers = new Array(slice.length);
for (let i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
const byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
const blob = new Blob(byteArrays, { type: contentType });
return blob;
}
closeForm(): void {
this.showPopUp = false;
}
}

View File

@ -261,7 +261,7 @@ export class ReportViewerComponent implements OnInit {
mode: 'multiple', // this.mode
};
}
//#region setReportColumns
setReportColumns(reportType: any) {
debugger
let reportName = '';
@ -1335,7 +1335,7 @@ export class ReportViewerComponent implements OnInit {
};
}
}
//#endregion
loadLeave() {
let leave = [];
this.leaveYearService.getAllLeave(EnumStatus.Regardless).subscribe(

View File

@ -73,6 +73,7 @@ const routes: Routes = [
{ path: 'report-viewer/dailyAbsentReport', component: ReportViewerComponent, canActivate: [AuthGuard] },
{ path: 'report-viewer/dailyAttnReport', component: ReportViewerComponent, canActivate: [AuthGuard] },
{ path: 'multiple-emp-leave-balance', component: MultipleEmpLeaveBalanceComponent, canActivate: [AuthGuard] },
{ path: 'multiple-emp-leave-report', component: MultipleEmpLeaveBalanceComponent, canActivate: [AuthGuard] },
{ path: 'emp-leave-balance', component: EmpLeaveBalanceComponent, canActivate: [AuthGuard] },
{ path: 'month-wise-leave-register', component: MonthWiseLeaveRegisterComponent, canActivate: [AuthGuard] },
{ path: 'leave-register', component: LeaveRegisterComponent, canActivate: [AuthGuard] },

View File

@ -814,6 +814,15 @@ namespace HRM.UI.Controllers.Report
case EnumReportType.LifeCycleDeletedHistor:
bytes = new rptEmployee().GetEmpLFDeletedHistory(sEmpIDs, (int)currentUser.PayrollTypeID, reportType);
break;
case EnumReportType.SingleEmpLeaveBalance:
bytes = new rptEcho().ShowEmployeeIndvLeaveBalance(sEmpIDs, fromDate, toDate, itemid, (int)currentUser.PayrollTypeID, nextPayProcessDate, reportType);
break;
case EnumReportType.MultipleEmpLeaveBalanceEcho:
bytes = new rptEcho().ShowMultipleEmployeeLeaveReport(sEmpIDs, itemid, (int)currentUser.PayrollTypeID, nextPayProcessDate, reportType);
break;
case EnumReportType.LeaveReportEcho:
bytes = new rptEcho().ShowLeaveReport(sEmpIDs, itemid, (int)currentUser.PayrollTypeID, nextPayProcessDate, reportType);
break;
default:
break;
}