public void showDailyAttendance() { DailyAttendance am = new DailyAttendance(); am.MdiParent = this; SetMdiForm(am.Text, typeof(DailyAttendance)); }
//Work Times calculation controller private void ProcessDailyAttendance(DailyAttendance _attData, string Remarks) { try { DailyAttendance attendanceRecord = _attData; Employee employee = attendanceRecord.Employee; List <ShiftChangedEmp> _shiftEmpCh = new List <ShiftChangedEmp>(); Expression <Func <ShiftChangedEmp, bool> > SpecificEntries = aa => aa.EmpID == _attData.EmpID; _shiftEmpCh = ShiftChangedEmpRepo.FindBy(SpecificEntries); List <Shift> shifts = new List <Shift>(); Expression <Func <Shift, bool> > SpecificEntries2 = aa => aa.PShiftID == _attData.Employee.ShiftID; shifts = ShiftRepo.FindBy(SpecificEntries2); List <ShiftChanged> cshifts = new List <ShiftChanged>(); Expression <Func <ShiftChanged, bool> > SpecificEntries3 = aa => aa.ShiftID == _attData.Employee.ShiftID; cshifts = ShiftChangedRepo.FindBy(SpecificEntries3); //Employee employee = _attData.Employee; if (_attData.StatusLeave == true) { _attData.ShifMin = 0; } //If TimeIn and TimeOut are not null, then calculate other Atributes if (_attData.TimeIn != null && _attData.TimeOut != null) { Shift _shift = ATAssistant.GetEmployeeChangedShift(_attData.Employee, _shiftEmpCh.Where(aa => aa.EmpID == _attData.EmpID).ToList(), _attData.AttDate.Value, shifts); MyShift shift = ATAssistant.GetEmployeeShift(_shift); if (_attData.StatusHL == true) { _attData.ShifMin = ATAssistant.CalculateShiftMinutes(shift, _attData.AttDate.Value.DayOfWeek); _attData.ShifMin = (short)(_attData.ShifMin / 2); } //If TimeIn = TimeOut then calculate according to DutyCode if (_attData.TimeIn == _attData.TimeOut) { CalculateInEqualToOut(_attData); } else { if (_attData.DutyTime == new TimeSpan(0, 0, 0)) { ATWorkMinCalculator.CalculateOpenShiftTimes(_attData, shift, _attData.Employee.OTPolicy); } ATWorkMinCalculator.CalculateShiftTimes(_attData, shift, _attData.Employee.OTPolicy); } } else { CalculateInEqualToOut(_attData); } } catch (Exception ex) { } if (Remarks != "") { _attData.Remarks = _attData.Remarks + "[" + Remarks + "]"; } DailyAttendanceRepo.Edit(_attData); DailyAttendanceRepo.Save(); }
public override global::System.Data.DataSet Clone() { DailyAttendance cln = ((DailyAttendance)(base.Clone())); cln.InitVars(); cln.SchemaSerializationMode = this.SchemaSerializationMode; return(cln); }
public static void DailyAttendanceDialog() { Employee emp = Dialogs.GetEmployee(); if (emp != null) { DailyAttendance da = UnitOfWork.get().DailyAttendances.TypeAttendance(emp); PrinterAdapter.Instance.printDailyAttendances(da); } }
public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedDataSetSchema(global::System.Xml.Schema.XmlSchemaSet xs) { DailyAttendance ds = new DailyAttendance(); global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); global::System.Xml.Schema.XmlSchemaAny any = new global::System.Xml.Schema.XmlSchemaAny(); any.Namespace = ds.Namespace; sequence.Items.Add(any); type.Particle = sequence; global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); if (xs.Contains(dsSchema.TargetNamespace)) { global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); try { global::System.Xml.Schema.XmlSchema schema = null; dsSchema.Write(s1); for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext();) { schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); s2.SetLength(0); schema.Write(s2); if ((s1.Length == s2.Length)) { s1.Position = 0; s2.Position = 0; for (; ((s1.Position != s1.Length) && (s1.ReadByte() == s2.ReadByte()));) { ; } if ((s1.Position == s1.Length)) { return(type); } } } } finally { if ((s1 != null)) { s1.Close(); } if ((s2 != null)) { s2.Close(); } } } xs.Add(dsSchema); return(type); }
private void SaveOldAttData(DailyAttendance _OldAttData, int Userid) { try { _ManualEditData.OldDutyCode = _OldAttData.DutyCode; _ManualEditData.OldTimeIn = _OldAttData.TimeIn; _ManualEditData.OldTimeOut = _OldAttData.TimeOut; _ManualEditData.OldDutyTime = _OldAttData.DutyTime; _ManualEditData.OldOTMin = _OldAttData.ApprovedOT; _ManualEditData.EmpDate = _OldAttData.EmpDate; _ManualEditData.UserID = Userid; _ManualEditData.EditDateTime = DateTime.Now; _ManualEditData.EmpID = _OldAttData.EmpID; _ManualEditData.OldRemarks = _OldAttData.Remarks; } catch (Exception ex) { } }
public static DailyAttendanceViewModel FromEntity(DailyAttendance attendance) { var item = new DailyAttendanceViewModel(); item.Day = attendance.Date.Day.ToString(); item.EditPageUrl = CreateEditPageUrl(attendance.Date); item.DayOfWeek = attendance.Date.Value.ToString("ddd"); if (attendance.Category == Domains.Category.Attendance) { item.StartTime = attendance.StartTime.value.ToString("HH:mm"); item.EndTime = attendance.EndTime.value.ToString("HH:mm"); item.ActualWorkHours = attendance.ActualWorkTimeSpan.ToString(@"hh\:mm"); } else { item.Category = attendance.Category.ToString(); } return(item); }
public ActionResult Create(DailyOvertime obj) { string _EmpNo = Request.Form["EmpNo"].ToString(); Expression <Func <VHR_EmployeeProfile, bool> > SpecificEntries121 = c => c.OEmpID == _EmpNo; VMLoggedUser LoggedInUser = Session["LoggedInUser"] as VMLoggedUser; List <VHR_EmployeeProfile> _emp = vHR_EmployeeProfile.GetIndexSpecific(SpecificEntries121); if (obj.OTDate == null || obj.OTDate <= DateTime.Today.AddDays(-200)) { ModelState.AddModelError("OTDate", "OT Date must be valid"); } else { if (!DDService.IsDateLieBetweenActivePayroll(obj.OTDate.Value)) { ModelState.AddModelError("OTDate", "Payroll Period is Closed for this date"); } } if ((obj.SingleEncashableOT == null && obj.SingleEncashableOT <= 0) && (obj.DoubleEncashbaleOT == null && obj.DoubleEncashbaleOT <= 0) && (obj.CPLOT == null && obj.CPLOT <= 0)) { ModelState.AddModelError("SingleEncashableOT", "Overtime must be valid"); } if (_emp.Count == 0) { ModelState.AddModelError("OTDate", "Emp No not exist"); } else { // int? EmpLocID = _emp.First().LocationID; //if (LoggedInUser.UserLoctions.Where(aa => aa.LocationID == EmpLocID).Count() == 0) //ModelState.AddModelError("OTDate", "You do not have rights to add overtime for this employee"); int?EmpDepID = _emp.First().OUCommonID; if (LoggedInUser.UserDepartments.Where(aa => aa.DepartmentID == EmpDepID).Count() == 0) { ModelState.AddModelError("OTDate", "You do not have rights to add overtime for this employee"); } obj.EmployeeID = _emp.First().PEmployeeID; Expression <Func <DailyOvertime, bool> > SpecificEntries2 = c => c.EmployeeID == obj.EmployeeID && c.OTDate == obj.OTDate; if (DailyOvertimeService.GetIndexSpecific(SpecificEntries2).Count > 0) { ModelState.AddModelError("OTDate", "Already have OT for this date"); } } if (ModelState.IsValid) { if (obj.SingleEncashableOT > 0) { obj.SingleEncashableOT = obj.SingleEncashableOT * 60; } if (obj.DoubleEncashbaleOT > 0) { obj.DoubleEncashbaleOT = obj.DoubleEncashbaleOT * 60; } if (obj.CPLOT > 0) { obj.CPLOT = obj.CPLOT * 60; } obj.AddedByUserID = LoggedInUser.PUserID; obj.AddedDate = DateTime.Now; DailyOvertimeService.PostCreate(obj); // Update Attendance Data Expression <Func <DailyAttendance, bool> > SpecificEntries2 = c => c.EmpID == obj.EmployeeID && c.AttDate == obj.OTDate; List <DailyAttendance> attDatas = DailyAttendanceService.GetIndexSpecific(SpecificEntries2).ToList(); if (attDatas.Count > 0) { DailyAttendance attdata = attDatas.First(); if (obj.SingleEncashableOT > 0) { attdata.ApprovedOT = (short)obj.SingleEncashableOT; } if (obj.DoubleEncashbaleOT > 0) { attdata.ApprovedDoubleOT = (short)obj.DoubleEncashbaleOT; } if (obj.CPLOT > 0) { attdata.ApprovedCPL = (short)obj.CPLOT; } DailyAttendanceService.PostEdit(attdata); DDService.ProcessMonthlyAttendance((DateTime)obj.OTDate, (int)obj.EmployeeID, obj.EmployeeID.ToString()); // Update Employee Pool LeaveCPLPool dbLeavePoolCPL = new LeaveCPLPool(); Expression <Func <LeaveCPLPool, bool> > SpecificEntries3 = c => c.EmployeeID == obj.EmployeeID; if (LeaveCPLPoolService.GetIndexSpecific(SpecificEntries3).Count() > 0) { dbLeavePoolCPL = LeaveCPLPoolService.GetIndexSpecific(SpecificEntries3).First(); dbLeavePoolCPL.LastEntryDateTime = DateTime.Now; dbLeavePoolCPL.RemainingHours = dbLeavePoolCPL.RemainingHours + (obj.CPLOT / 60); if (dbLeavePoolCPL.RemainingHours == null) { dbLeavePoolCPL.RemainingHours = 0; dbLeavePoolCPL.RemainingHours = (dbLeavePoolCPL.RemainingHours) + (obj.CPLOT / 60); } dbLeavePoolCPL.TotalHours = (dbLeavePoolCPL.TotalHours) + (obj.CPLOT / 60); if (dbLeavePoolCPL.TotalHours == null) { dbLeavePoolCPL.TotalHours = 0; dbLeavePoolCPL.TotalHours = (dbLeavePoolCPL.TotalHours) + (obj.CPLOT / 60); } dbLeavePoolCPL.CPLDays = 0; LeaveCPLPoolService.PostEdit(dbLeavePoolCPL); } else { dbLeavePoolCPL = new LeaveCPLPool(); dbLeavePoolCPL.EmployeeID = obj.EmployeeID; dbLeavePoolCPL.LastEntryDateTime = DateTime.Now; dbLeavePoolCPL.RemainingHours = obj.CPLOT / 60; dbLeavePoolCPL.TotalHours = obj.CPLOT / 60; dbLeavePoolCPL.CPLDays = 0; LeaveCPLPoolService.PostCreate(dbLeavePoolCPL); } // Update CPL if (dbLeavePoolCPL.RemainingHours >= 4) { int total = (int)(dbLeavePoolCPL.RemainingHours / 4); float remaining = (float)(dbLeavePoolCPL.RemainingHours - (total * 4)); float days = (float)(total / 2.0); // Add into CPL Balance LeaveCPLEmpBalance dbLeaveBalanceCPL = new LeaveCPLEmpBalance(); dbLeaveBalanceCPL.EmployeeID = obj.EmployeeID; dbLeaveBalanceCPL.EntryDateTime = DateTime.Now; dbLeaveBalanceCPL.ExpireDate = DateTime.Today.AddDays(60); dbLeaveBalanceCPL.IsExpire = false; dbLeaveBalanceCPL.RemainingDays = days; dbLeaveBalanceCPL.TotalDays = days; dbLeaveBalanceCPL.Used = 0; LeaveCPLEmpBalanceService.PostCreate(dbLeaveBalanceCPL); // update CPL Pool dbLeavePoolCPL.RemainingHours = dbLeavePoolCPL.RemainingHours - (days * 8); //dbLeavePoolCPL.RemainingHours = dbLeavePoolCPL.RemainingHours + remaining; LeaveCPLPoolService.PostEdit(dbLeavePoolCPL); // Get PayrollPeriod PayrollPeriod dbPayrollPeriod = ATAssistant.GetPayrollPeriodObject(obj.OTDate.Value, DDService.GetAllPayrollPeriod()); // Update Days in Leave Quota LeaveQuotaYear dbLeaveQuotaYear = new LeaveQuotaYear(); Expression <Func <LeaveQuotaYear, bool> > SpecificEntries4 = c => c.FinancialYearID == dbPayrollPeriod.FinancialYearID && c.EmployeeID == obj.EmployeeID && c.LeaveTypeID == 4; if (LeaveQuotaYearService.GetIndexSpecific(SpecificEntries4).Count > 0) { dbLeaveQuotaYear = LeaveQuotaYearService.GetIndexSpecific(SpecificEntries4).First(); dbLeaveQuotaYear.GrandTotal = dbLeaveQuotaYear.GrandTotal + days; dbLeaveQuotaYear.GrandRemaining = dbLeaveQuotaYear.GrandRemaining + days; dbLeaveQuotaYear.YearlyTotal = dbLeaveQuotaYear.YearlyTotal + days; dbLeaveQuotaYear.YearlyRemaining = dbLeaveQuotaYear.YearlyRemaining + days; LeaveQuotaYearService.PostEdit(dbLeaveQuotaYear); } else { dbLeaveQuotaYear.EmployeeID = obj.EmployeeID; dbLeaveQuotaYear.FinancialYearID = dbPayrollPeriod.FinancialYearID; dbLeaveQuotaYear.LeaveTypeID = 4; dbLeaveQuotaYear.GrandTotal = 0; dbLeaveQuotaYear.GrandRemaining = 0; dbLeaveQuotaYear.YearlyTotal = 0; dbLeaveQuotaYear.YearlyRemaining = 0; dbLeaveQuotaYear.GrandTotal = dbLeaveQuotaYear.GrandTotal + days; dbLeaveQuotaYear.GrandRemaining = dbLeaveQuotaYear.GrandRemaining + days; dbLeaveQuotaYear.YearlyTotal = dbLeaveQuotaYear.YearlyTotal + days; dbLeaveQuotaYear.YearlyRemaining = dbLeaveQuotaYear.YearlyRemaining + days; LeaveQuotaYearService.PostCreate(dbLeaveQuotaYear); } } } //DDService.SaveAuditLog(LoggedInUser.PUserID, AuditFormAttendance.Crew, AuditTypeCommon.Add, obj.PDailyOTID, App_Start.AppAssistant.GetClientMachineInfo()); return(Json("OK", JsonRequestBehavior.AllowGet)); } return(PartialView("Create", obj)); }
private string CalculateDATimeForExcel(DailyAttendance item) { TimeSpan ShiftTime = new TimeSpan(); TimeSpan TimeIn = new TimeSpan(); TimeSpan TimeOut = new TimeSpan(); TimeSpan Work = new TimeSpan(); TimeSpan LateIn = new TimeSpan(); TimeSpan LateOut = new TimeSpan(); TimeSpan EarlyIn = new TimeSpan(); TimeSpan EarlyOut = new TimeSpan(); TimeSpan Overtime = new TimeSpan(); string row = ""; string dutytime = ""; string shifttime = ""; string timein = ""; string timeout = ""; string work = ""; string latein = ""; string lateout = ""; string earlyin = ""; string earlyout = ""; string overtime = ""; row = row + item.DutyCode + "\t"; dutytime = item.DutyTime.Value.TotalHours.ToString("00") + ":" + item.DutyTime.Value.Minutes.ToString("00"); if (item.ShifMin > 0) { ShiftTime = new TimeSpan(0, (int)item.ShifMin, 0); int hours = (int)ShiftTime.TotalHours; int min = (int)(item.ShifMin - (hours * 60)); shifttime = hours.ToString("00") + ":" + min.ToString("00"); } if (item.TimeIn != null) { TimeIn = item.TimeIn.Value.TimeOfDay; int hours = (int)TimeIn.TotalHours; int min = (int)TimeIn.Minutes; timein = hours.ToString("00") + ":" + min.ToString("00"); } if (item.TimeOut != null) { TimeOut = item.TimeOut.Value.TimeOfDay; int hours = (int)TimeOut.TotalHours; int min = (int)TimeOut.Minutes; timeout = hours.ToString("00") + ":" + min.ToString("00"); } if (item.WorkMin > 0) { Work = new TimeSpan(0, (int)item.WorkMin, 0); int hours = (int)Work.TotalHours; int min = (int)(item.WorkMin - (hours * 60)); work = hours.ToString("00") + ":" + min.ToString("00"); } if (item.LateIn > 0) { LateIn = new TimeSpan(0, (int)item.LateIn, 0); int hours = (int)LateIn.TotalHours; int min = (int)(item.LateIn - (hours * 60)); latein = hours.ToString("00") + ":" + min.ToString("00"); } if (item.LateOut > 0) { LateOut = new TimeSpan(0, (int)item.LateOut, 0); int hours = (int)LateOut.TotalHours; int min = (int)(item.LateOut - (hours * 60)); lateout = hours.ToString("00") + ":" + min.ToString("00"); } if (item.EarlyIn > 0) { EarlyIn = new TimeSpan(0, (int)item.EarlyIn, 0); int hours = (int)EarlyIn.TotalHours; int min = (int)(item.EarlyIn - (hours * 60)); earlyin = hours.ToString("00") + ":" + min.ToString("00"); } if (item.EarlyOut > 0) { EarlyOut = new TimeSpan(0, (int)item.EarlyOut, 0); int hours = (int)EarlyOut.TotalHours; int min = (int)(item.EarlyOut - (hours * 60)); earlyout = hours.ToString("00") + ":" + min.ToString("00"); } if (item.OTMin > 0) { Overtime = new TimeSpan(0, (int)item.OTMin, 0); int hours = (int)Overtime.TotalHours; int min = (int)(item.OTMin - (hours * 60)); overtime = hours.ToString("00") + ":" + min.ToString("00"); } row = row + dutytime + "\t" + shifttime + "\t" + timein + "\t" + timeout + "\t" + work + "\t" + latein + "\t" + lateout + "\t" + earlyin + "\t" + earlyout + "\t" + overtime + "\t" + item.Remarks; return(row); }
public ActionResult SaveEditEntries() { bool edited = false; int empID = Convert.ToInt32(Request.Form["empID"].ToString()); VMLoggedUser LoggedInUser = Session["LoggedInUser"] as VMLoggedUser; DateTime dtFrom = Convert.ToDateTime(Request.Form["dateFrom"].ToString()); DateTime dtTo = Convert.ToDateTime(Request.Form["dateTo"].ToString()); List <DailyAttendance> oldAttendance = DailyAttendanceEditorService.GetEmployeeAttendance(empID, dtFrom, dtTo); for (int i = 1; i <= oldAttendance.Count; i++) { string empDate = Request.Form["EmpDate-" + i.ToString()].ToString(); DailyAttendance att = oldAttendance.First(aa => aa.EmpDate == empDate); string DutyCode = Request.Form["DutyCode-" + i.ToString()].ToString(); string DutyTime = Request.Form["DutyTime-" + i.ToString()].ToString(); string ShiftTime = Request.Form["ShiftTime-" + i.ToString()].ToString(); string TimeIn = Request.Form["TimeIn-" + i.ToString()].ToString(); string TimeOut = Request.Form["TimeOut-" + i.ToString()].ToString(); string Remarks = Request.Form["Remarks-" + i.ToString()].ToString(); EditAttendanceList editlist = DailyAttendanceEditorService.GetEditAttendanceList(empDate, DutyCode, DutyTime, ShiftTime, TimeIn, TimeOut, Remarks); if (DailyAttendanceEditorService.CheckRecordIsEdited(att, editlist)) { edited = true; DateTime _NewTimeIn = new DateTime(); DateTime _NewTimeOut = new DateTime(); _NewTimeIn = (DateTime)(att.AttDate + editlist.TimeIn); if (editlist.TimeIn != null && editlist.TimeOut != null) { if (editlist.TimeOut < editlist.TimeIn) { _NewTimeOut = att.AttDate.Value.AddDays(1) + editlist.TimeOut; } else { _NewTimeOut = (DateTime)(att.AttDate + editlist.TimeOut); } DailyAttendanceEditorService.ManualAttendanceProcess(editlist.EmpDate, "", false, _NewTimeIn, _NewTimeOut, editlist.DutyCode, LoggedInUser.PUserID, editlist.DutyTime, Remarks, (short)editlist.ShiftTime.TotalMinutes); } else { if (editlist.TimeIn.TotalMinutes > 0) { _NewTimeIn = (DateTime)(att.AttDate + editlist.TimeIn); } if (editlist.TimeOut.TotalMinutes > 0) { _NewTimeOut = (DateTime)(att.AttDate + editlist.TimeOut); } DailyAttendanceEditorService.ManualAttendanceProcess(editlist.EmpDate, "", false, _NewTimeIn, _NewTimeOut, editlist.DutyCode, LoggedInUser.PUserID, editlist.DutyTime, Remarks, (short)editlist.ShiftTime.TotalMinutes); } } } // Process Monthly Attendance if (edited == true) { DDService.ProcessMonthlyAttendance(dtFrom, empID, empID.ToString()); } List <DailyAttendance> dailyAttendance = new List <DailyAttendance>(); dailyAttendance = DailyAttendanceEditorService.GetEmployeeAttendance(empID, dtFrom, dtTo); return(View("EditMultipleEntries", DailyAttendanceEditorService.GetAttendanceAttributes(dailyAttendance, dtFrom, dtTo, empID))); }
public ActionResult SaveEditEntriesDateWise(AttEditSingleEmployee Model) { try { int count = Convert.ToInt32(Request.Form["Count"].ToString()); VMLoggedUser LoggedInUser = Session["LoggedInUser"] as VMLoggedUser; DateTime dt = Convert.ToDateTime(Request.Form["Date"].ToString()); string Criteria = Request.Form["Criteria"].ToString(); int CriteriaData = Convert.ToInt32(Request.Form["CriteriaData"].ToString()); string CriteriaRBName = (Request.Form["CriteriaRBName"].ToString()); List <DailyAttendance> oldAttendance = new List <DailyAttendance>(); Expression <Func <DailyAttendance, bool> > rbAll = aa => aa.AttDate == dt; oldAttendance = DailyAttendanceService.GetIndexSpecific(rbAll); string Message = ""; for (int i = 1; i <= count; i++) { //int EmpID = Convert.ToInt32(Request.Form["Row" + i.ToString()].ToString()); string empDate = Request.Form["EmpDate-" + i.ToString()].ToString(); DailyAttendance att = oldAttendance.First(aa => aa.EmpDate == empDate); string DutyCode = Request.Form["DutyCode-" + i.ToString()].ToString(); string DutyTime = Request.Form["DutyTime-" + i.ToString()].ToString(); string ShiftTime = Request.Form["ShiftTime-" + i.ToString()].ToString(); string TimeIn = Request.Form["TimeIn-" + i.ToString()].ToString(); string TimeOut = Request.Form["TimeOut-" + i.ToString()].ToString(); string Remarks = Request.Form["Remarks-" + i.ToString()].ToString(); EditAttendanceList editlist = DailyAttendanceEditorService.GetEditAttendanceList(empDate, DutyCode, DutyTime, ShiftTime, TimeIn, TimeOut, Remarks); if (DailyAttendanceEditorService.CheckRecordIsEdited(att, editlist)) { DateTime _NewTimeIn = new DateTime(); DateTime _NewTimeOut = new DateTime(); _NewTimeIn = (DateTime)(att.AttDate + editlist.TimeIn); if (editlist.TimeIn != null && editlist.TimeOut != null) { if (editlist.TimeOut < editlist.TimeIn) { _NewTimeOut = att.AttDate.Value.AddDays(1) + editlist.TimeOut; } else { _NewTimeOut = (DateTime)(att.AttDate + editlist.TimeOut); } DailyAttendanceEditorService.ManualAttendanceProcess(editlist.EmpDate, "", false, _NewTimeIn, _NewTimeOut, editlist.DutyCode, LoggedInUser.PUserID, editlist.DutyTime, Remarks, (short)editlist.ShiftTime.TotalMinutes); } else { if (editlist.TimeIn.TotalMinutes > 0) { _NewTimeIn = (DateTime)(att.AttDate + editlist.TimeIn); } if (editlist.TimeOut.TotalMinutes > 0) { _NewTimeOut = (DateTime)(att.AttDate + editlist.TimeOut); } DailyAttendanceEditorService.ManualAttendanceProcess(editlist.EmpDate, "", false, _NewTimeIn, _NewTimeOut, editlist.DutyCode, LoggedInUser.PUserID, editlist.DutyTime, Remarks, (short)editlist.ShiftTime.TotalMinutes); } DDService.ProcessMonthlyAttendance(dt, (int)att.EmpID, att.EmpNo); } else { } } VMEditAttendanceDateWise vm = DailyAttendanceEditorService.EditDateWiseEntries(dt, CriteriaRBName.ToString(), CriteriaData.ToString(), CriteriaData.ToString(), CriteriaData.ToString(), CriteriaData.ToString(), CriteriaData.ToString()); return(View("EditDateWiseEntries", vm)); } catch (Exception) { throw; } }
public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); DailyAttendance ds = new DailyAttendance(); global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); any1.Namespace = "http://www.w3.org/2001/XMLSchema"; any1.MinOccurs = new decimal(0); any1.MaxOccurs = decimal.MaxValue; any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; sequence.Items.Add(any1); global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; any2.MinOccurs = new decimal(1); any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; sequence.Items.Add(any2); global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); attribute1.Name = "namespace"; attribute1.FixedValue = ds.Namespace; type.Attributes.Add(attribute1); global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); attribute2.Name = "tableTypeName"; attribute2.FixedValue = "DataTable1DataTable"; type.Attributes.Add(attribute2); type.Particle = sequence; global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); if (xs.Contains(dsSchema.TargetNamespace)) { global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); try { global::System.Xml.Schema.XmlSchema schema = null; dsSchema.Write(s1); for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext();) { schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); s2.SetLength(0); schema.Write(s2); if ((s1.Length == s2.Length)) { s1.Position = 0; s2.Position = 0; for (; ((s1.Position != s1.Length) && (s1.ReadByte() == s2.ReadByte()));) { ; } if ((s1.Position == s1.Length)) { return(type); } } } } finally { if ((s1 != null)) { s1.Close(); } if ((s2 != null)) { s2.Close(); } } } xs.Add(dsSchema); return(type); }
//Replace New TimeIn and Out with Old TimeIN and Out in Attendance Data public void ManualAttendanceProcess(string EmpDate, string JobCardName, bool JobCardStatus, DateTime NewTimeIn, DateTime NewTimeOut, string NewDutyCode, int _UserID, TimeSpan _NewDutyTime, string _Remarks, short _ShiftMins) { Expression <Func <DailyAttendance, bool> > SpecificEntries = aa => aa.EmpDate == EmpDate; _OldAttData = DailyAttendanceRepo.FindBy(SpecificEntries).First(); if (_OldAttData != null) { if (JobCardStatus == false) { SaveOldAttData(_OldAttData, _UserID); if (SaveNewAttData(NewTimeIn, NewTimeOut, NewDutyCode, _NewDutyTime, _Remarks, _ShiftMins)) { _OldAttData.TimeIn = NewTimeIn; _OldAttData.TimeOut = NewTimeOut; _OldAttData.Tin0 = NewTimeIn; _OldAttData.Tout0 = NewTimeOut; _OldAttData.DutyCode = NewDutyCode; _OldAttData.DutyTime = _NewDutyTime; _OldAttData.WorkMin = 0; _OldAttData.LateIn = 0; _OldAttData.LateOut = 0; _OldAttData.EarlyIn = 0; _OldAttData.EarlyOut = 0; _OldAttData.OTMin = 0; _OldAttData.GZOTMin = 0; _OldAttData.ExtraMin = 0; _OldAttData.TotalShortMin = 0; _OldAttData.Tin0 = null; _OldAttData.Tout0 = null; _OldAttData.Tin1 = null; _OldAttData.Tout1 = null; _OldAttData.Tin2 = null; _OldAttData.Tout2 = null; _OldAttData.Tin3 = null; _OldAttData.Tout3 = null; _OldAttData.Tin4 = null; _OldAttData.Tout4 = null; _OldAttData.Tin5 = null; _OldAttData.Tout5 = null; _OldAttData.Tin6 = null; _OldAttData.Tout6 = null; _OldAttData.Tin6 = null; _OldAttData.Tout6 = null; _OldAttData.Tin7 = null; _OldAttData.Tout7 = null; _OldAttData.Tin8 = null; _OldAttData.Tout8 = null; _OldAttData.Tin9 = null; _OldAttData.Tout9 = null; _OldAttData.Tin10 = null; _OldAttData.Tout10 = null; _OldAttData.Tin11 = null; _OldAttData.Tout11 = null; _OldAttData.Tin12 = null; _OldAttData.Tout2 = null; _OldAttData.Tin13 = null; _OldAttData.Tout13 = null; _OldAttData.Tin14 = null; _OldAttData.Tout14 = null; _OldAttData.Tin15 = null; _OldAttData.Tout15 = null; _OldAttData.DutyCode = NewDutyCode; _OldAttData.DutyTime = _NewDutyTime; _OldAttData.ShifMin = _ShiftMins; switch (_OldAttData.DutyCode) { case "D": _OldAttData.StatusAB = true; if (_OldAttData.StatusHL == true) { _OldAttData.AbDays = 0.5; _OldAttData.PDays = 0; _OldAttData.LeaveDays = 0.5; _OldAttData.DutyCode = "L"; } else { _OldAttData.AbDays = 1; _OldAttData.PDays = 0; _OldAttData.LeaveDays = 0; } _OldAttData.StatusP = false; _OldAttData.StatusMN = true; _OldAttData.StatusDO = false; _OldAttData.StatusGZ = false; _OldAttData.StatusLeave = false; _OldAttData.StatusOT = false; _OldAttData.OTMin = null; _OldAttData.EarlyIn = null; _OldAttData.EarlyOut = null; _OldAttData.LateIn = null; _OldAttData.LateOut = null; _OldAttData.WorkMin = null; _OldAttData.GZOTMin = null; break; case "G": _OldAttData.StatusAB = false; _OldAttData.StatusP = false; _OldAttData.StatusMN = true; _OldAttData.StatusDO = false; _OldAttData.StatusGZ = true; _OldAttData.StatusLeave = false; _OldAttData.StatusOT = false; _OldAttData.OTMin = null; _OldAttData.EarlyIn = null; _OldAttData.EarlyOut = null; _OldAttData.LateIn = null; _OldAttData.LateOut = null; _OldAttData.WorkMin = null; _OldAttData.GZOTMin = null; _OldAttData.PDays = 0; _OldAttData.AbDays = 0; _OldAttData.LeaveDays = 0; break; case "R": _OldAttData.StatusAB = false; _OldAttData.StatusP = false; _OldAttData.StatusMN = true; _OldAttData.StatusDO = true; _OldAttData.StatusGZ = false; _OldAttData.StatusLeave = false; _OldAttData.StatusOT = false; _OldAttData.OTMin = null; _OldAttData.EarlyIn = null; _OldAttData.EarlyOut = null; _OldAttData.LateIn = null; _OldAttData.LateOut = null; _OldAttData.WorkMin = null; _OldAttData.GZOTMin = null; _OldAttData.PDays = 0; _OldAttData.AbDays = 0; _OldAttData.LeaveDays = 0; break; } ProcessDailyAttendance(_OldAttData, _Remarks); } } } }
private void FillReport(bool isInitial = false, bool throwException = true) { ReportCompositeRequest req = GetRequest(); ListResponse <Model.Reports.RT301> resp = _reportsService.ChildGetAll <Model.Reports.RT301>(req); //if (!resp.Success) //{ // throw new Exception(resp.Error + "<br>" + GetGlobalResourceObject("Errors", "ErrorLogId") + resp.LogId + "</br>"); //} if (!resp.Success) { Common.ReportErrorMessage(resp, GetGlobalResourceObject("Errors", "Error_1").ToString(), GetGlobalResourceObject("Errors", "ErrorLogId").ToString()); } List <Model.Reports.DailyAttendance> atts = new List <Model.Reports.DailyAttendance>(); resp.Items.ForEach(x => atts.Add(new Model.Reports.DailyAttendance() { name = x.name, branchName = x.branchName, departmentName = x.departmentName, Date = DateTime.ParseExact(x.dayId, "yyyyMMdd", new CultureInfo("en")), lateness = x.OL_A_SIGN[0] == '-' ? (new TimeSpan(Convert.ToInt32(x.OL_A.Substring(1, 2)), -Convert.ToInt32(x.OL_A.Substring(4, 2)), 0)) : (new TimeSpan(Convert.ToInt32(x.OL_A.Substring(0, 2)), Convert.ToInt32(x.OL_A.Substring(3, 2)), 0)), early = x.OL_D_SIGN[0] == '-' ? (new TimeSpan(Convert.ToInt32(x.OL_D.Substring(1, 2)), Convert.ToInt32(x.OL_D.Substring(4, 2)), 0)) : (new TimeSpan(Convert.ToInt32(x.OL_D.Substring(0, 2)), Convert.ToInt32(x.OL_D.Substring(3, 2)), 0)), workingHours = new TimeSpan(Convert.ToInt32(x.workingTime.Substring(0, 2)), Convert.ToInt32(x.workingTime.Substring(3, 2)), 0), workingHoursString = x.workingTime, earlyString = x.OL_D, latenessString = x.OL_A })); atts.ForEach(x => { x.DOW = GetGlobalResourceObject("Common", x.Date.DayOfWeek.ToString() + "Text").ToString(); x.DateString = x.Date.ToString(_systemService.SessionHelper.GetDateformat(), CultureInfo.CurrentUICulture); }); DailyAttendance h = new DailyAttendance(); h.RightToLeft = _systemService.SessionHelper.CheckIfArabicSession() ? DevExpress.XtraReports.UI.RightToLeft.Yes : DevExpress.XtraReports.UI.RightToLeft.No; h.RightToLeftLayout = _systemService.SessionHelper.CheckIfArabicSession() ? DevExpress.XtraReports.UI.RightToLeftLayout.Yes : DevExpress.XtraReports.UI.RightToLeftLayout.No; h.DataSource = atts; h.Parameters["From"].Value = DateTime.Parse(req.Parameters["_fromDate"]).ToString(_systemService.SessionHelper.GetDateformat()); h.Parameters["To"].Value = DateTime.Parse(req.Parameters["_toDate"]).ToString(_systemService.SessionHelper.GetDateformat()); h.Parameters["User"].Value = _systemService.SessionHelper.GetCurrentUser(); if (resp.Items.Count > 0) { if (req.Parameters["_employeeId"] != "0") { h.Parameters["Employee"].Value = resp.Items[0].name; } else { h.Parameters["Employee"].Value = GetGlobalResourceObject("Common", "All"); } } h.CreateDocument(); ASPxWebDocumentViewer1.DataBind(); ASPxWebDocumentViewer1.OpenReport(h); }
public void printDailyAttendances(DailyAttendance da) { pdoc.PrintPage += new PrintPageEventHandler(pdoc_PrintDailyAttendance); this.dailyAttendance = da; openDialog(); }
public static void CalculateOpenShiftTimes(DailyAttendance attendanceRecord, MyShift shift, OTPolicy otPolicy) { try { //Calculate WorkMin if (attendanceRecord != null) { //Calculate WorkMin if (attendanceRecord.Remarks != null) { attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[Absent]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[LI]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[[Manual]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[N-OT]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[LI]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[LO]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[EI]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[EO]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[R-OT]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[G-OT]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[HA-HCL]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[HA-HSL]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[HA-HAL]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[DO]", ""); } else { attendanceRecord.Remarks = ""; } if (attendanceRecord.TimeOut != null && attendanceRecord.TimeIn != null) { attendanceRecord.Remarks = ""; TimeSpan mins = (TimeSpan)(attendanceRecord.TimeOut - attendanceRecord.TimeIn); attendanceRecord.WorkMin = (short)mins.TotalMinutes; double _workHours = mins.TotalHours; //Check if GZ holiday then place all WorkMin in GZOTMin if (attendanceRecord.StatusGZ == true && attendanceRecord.DutyCode == "G") { if (otPolicy.CalculateGZOT == true) { if (otPolicy.PerDayOTLimitHour > _workHours) { attendanceRecord.GZOTMin = (short)mins.TotalMinutes; } else { int policyOTLimitMin = (int)(otPolicy.PerDayOTLimitHour * 60.0); attendanceRecord.GZOTMin = (short)policyOTLimitMin; } attendanceRecord.StatusGZOT = true; attendanceRecord.Remarks = attendanceRecord.Remarks + "[G-OT]"; } else { attendanceRecord.WorkMin = (short)mins.TotalMinutes; } } else if (attendanceRecord.StatusDO == true && attendanceRecord.DutyCode == "R") { if (otPolicy.CalculateRestOT == true) { if (otPolicy.PerDayOTLimitHour > _workHours) { attendanceRecord.OTMin = (short)mins.TotalMinutes; } else { int policyOTLimitMin = (int)(otPolicy.PerDayOTLimitHour * 60.0); attendanceRecord.OTMin = (short)policyOTLimitMin; } attendanceRecord.StatusOT = true; attendanceRecord.Remarks = attendanceRecord.Remarks + "[R-OT]"; } else { attendanceRecord.WorkMin = (short)mins.TotalMinutes; } } else { attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[Absent]", ""); attendanceRecord.StatusAB = false; attendanceRecord.StatusP = true; if (mins.TotalMinutes < ((attendanceRecord.ShifMin + attendanceRecord.BreakMin) - shift.EarlyOut)) { Int16 EarlyoutMin = (Int16)((attendanceRecord.ShifMin + attendanceRecord.BreakMin) - Convert.ToInt16(mins.TotalMinutes)); if (EarlyoutMin > shift.EarlyOut) { attendanceRecord.EarlyOut = EarlyoutMin; attendanceRecord.StatusEO = true; attendanceRecord.Remarks = attendanceRecord.Remarks + "[EO]"; } else { attendanceRecord.StatusEO = null; attendanceRecord.EarlyOut = 0; attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[EO]", ""); } } else { attendanceRecord.StatusEO = null; attendanceRecord.EarlyOut = 0; attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[EO]", ""); } if (attendanceRecord.WorkMin > (attendanceRecord.ShifMin + attendanceRecord.BreakMin)) { short LateOutMins = (short)(attendanceRecord.WorkMin - (attendanceRecord.ShifMin + attendanceRecord.BreakMin)); if (LateOutMins > shift.LateOut) { attendanceRecord.LateOut = (short)LateOutMins; // Late Out cannot have an early out, In case of poll at multiple times before and after shiftend attendanceRecord.EarlyOut = 0; attendanceRecord.StatusLO = true; attendanceRecord.Remarks = attendanceRecord.Remarks + "[LO]"; } else { attendanceRecord.StatusLO = null; attendanceRecord.LateOut = 0; attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[LO]", ""); } } else { attendanceRecord.StatusLO = null; attendanceRecord.LateOut = 0; attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[LO]", ""); } if ((attendanceRecord.StatusGZ != true || attendanceRecord.StatusDO != true)) { if (attendanceRecord.LateOut != null) { if (otPolicy.CalculateNOT == true) { float otHour = (float)(attendanceRecord.LateOut / 60.0); if (otPolicy.PerDayOTLimitHour > otHour) { attendanceRecord.OTMin = (short)attendanceRecord.LateOut; } else { int policyOTLimitMin = (int)(otPolicy.PerDayOTLimitHour * 60.0); attendanceRecord.OTMin = (short)policyOTLimitMin; } attendanceRecord.StatusOT = true; attendanceRecord.Remarks = attendanceRecord.Remarks + "[N-OT]"; } else { attendanceRecord.WorkMin = (short)mins.TotalMinutes; } attendanceRecord.StatusOT = true; attendanceRecord.Remarks = attendanceRecord.Remarks + "[N-OT]"; } } //Subtract EarlyIn and LateOut from Work Minutes if (shift.SubtractEIFromWork == true) { if (attendanceRecord.EarlyIn != null && attendanceRecord.EarlyIn > shift.EarlyIn) { attendanceRecord.WorkMin = (short)(attendanceRecord.WorkMin - attendanceRecord.EarlyIn); } } if (shift.SubtractOTFromWork == true) { if (attendanceRecord.OTMin != null && attendanceRecord.OTMin > shift.OverTimeMin) { attendanceRecord.WorkMin = (short)(attendanceRecord.WorkMin - attendanceRecord.OTMin); } } if (shift.AddEIInOT == true) { if (attendanceRecord.EarlyIn != null) { if (attendanceRecord.OTMin != null) { attendanceRecord.OTMin = (short)(attendanceRecord.OTMin + attendanceRecord.EarlyIn); } else { if (attendanceRecord.EarlyIn != null && attendanceRecord.EarlyIn > shift.OverTimeMin) { attendanceRecord.OTMin = (short)attendanceRecord.EarlyIn; } } } } if (shift.RoundOffWorkMin == true) { if (attendanceRecord.LateOut != null || attendanceRecord.EarlyIn != null) { if (attendanceRecord.WorkMin > (attendanceRecord.ShifMin + attendanceRecord.BreakMin) && (attendanceRecord.WorkMin <= (attendanceRecord.ShifMin + attendanceRecord.BreakMin + shift.OverTimeMin))) { attendanceRecord.WorkMin = attendanceRecord.ShifMin; } } } //Mark Absent if less than 4 hours if (attendanceRecord.AttDate.Value.DayOfWeek != DayOfWeek.Friday && attendanceRecord.StatusDO != true && attendanceRecord.StatusGZ != true) { short MinShiftMin = (short)shift.MinHrs; if (attendanceRecord.WorkMin < MinShiftMin) { attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[Absent]", ""); attendanceRecord.StatusAB = true; attendanceRecord.StatusP = false; attendanceRecord.Remarks = attendanceRecord.Remarks + "[Absent]"; } else { attendanceRecord.StatusAB = false; attendanceRecord.StatusP = true; attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[Absent]", ""); } } } } } } catch (Exception ex) { } }
public static void CalculateShiftTimes(DailyAttendance attendanceRecord, MyShift shift, OTPolicy otPolicy) { try { attendanceRecord.TimeIn = attendanceRecord.TimeIn.Value.Trim(TimeSpan.TicksPerMinute); attendanceRecord.TimeOut = attendanceRecord.TimeOut.Value.Trim(TimeSpan.TicksPerMinute); // Break start and End Times DateTime ts = attendanceRecord.TimeIn.Value.Date + new TimeSpan(13, 0, 0); DateTime te = attendanceRecord.TimeIn.Value.Date + new TimeSpan(14, 0, 0); //Calculate Difference between Times #region --- For Time Difference Calculations-- TimeSpan mins = new TimeSpan(); if (shift.CalDiffOnly == true) { TimeSpan?min4 = new TimeSpan(); TimeSpan?min5 = new TimeSpan(); TimeSpan min1 = new TimeSpan(); TimeSpan min2 = new TimeSpan(); TimeSpan min3 = new TimeSpan(); if (attendanceRecord.Tout0 != null && attendanceRecord.Tin0 != null) { attendanceRecord.Tin0 = attendanceRecord.Tin0.Value.Trim(TimeSpan.TicksPerMinute); attendanceRecord.Tout0 = attendanceRecord.Tout0.Value.Trim(TimeSpan.TicksPerMinute); min1 = (TimeSpan)(attendanceRecord.Tout0 - attendanceRecord.Tin0); } if (attendanceRecord.Tout1 != null && attendanceRecord.Tin1 != null) { attendanceRecord.Tin1 = attendanceRecord.Tin1.Value.Trim(TimeSpan.TicksPerMinute); attendanceRecord.Tout1 = attendanceRecord.Tout1.Value.Trim(TimeSpan.TicksPerMinute); min2 = (TimeSpan)(attendanceRecord.Tout1 - attendanceRecord.Tin1); } if (attendanceRecord.Tout2 != null && attendanceRecord.Tin2 != null) { min3 = (TimeSpan)(attendanceRecord.Tout2 - attendanceRecord.Tin2); } mins = min1 + min2 + min3; if (min4 != null) { mins = mins + (TimeSpan)min4; } if (min5 != null) { mins = mins + (TimeSpan)min5; } } else { mins = (TimeSpan)(attendanceRecord.TimeOut - attendanceRecord.TimeIn); } #endregion double _workHours = mins.TotalHours; attendanceRecord.WorkMin = (short)(mins.TotalMinutes); if (attendanceRecord.WorkMin > 0) { if (attendanceRecord.Remarks != null) { attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[Absent]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[Manual]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[LI]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[M]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[N-OT]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[LO]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[LO]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[EI]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[EO]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[R-OT]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[G-OT]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[HA]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[DO]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[GZ]", ""); } else { attendanceRecord.Remarks = ""; } if (attendanceRecord.StatusMN == true) { attendanceRecord.Remarks = "[M]" + attendanceRecord.Remarks; } //Check if GZ holiday then place all WorkMin in GZOTMin if (attendanceRecord.StatusGZ == true && attendanceRecord.DutyCode == "G") { #region -- GZ Calculation-- if (otPolicy.CalculateGZOT == true) { if (otPolicy.PerDayGOTLimitHour >= _workHours) { int hour = (int)(mins.TotalMinutes / 60); int min = hour * 60; int remainingmin = (int)mins.TotalMinutes - min; if (remainingmin >= otPolicy.MinMinutesForOneHour) { attendanceRecord.GZOTMin = (short)((hour + 1) * 60); } else { attendanceRecord.GZOTMin = (short)((hour) * 60); } } else { int policyOTLimitMin = (int)(otPolicy.PerDayGOTLimitHour * 60.0); attendanceRecord.GZOTMin = (short)policyOTLimitMin; } } else { attendanceRecord.WorkMin = 0; attendanceRecord.ExtraMin = (short)mins.TotalMinutes; } if (attendanceRecord.GZOTMin > 0) { attendanceRecord.StatusGZOT = true; attendanceRecord.Remarks = attendanceRecord.Remarks + "[G-OT]"; } #endregion } //if Rest day then place all WorkMin in OTMin else if (attendanceRecord.StatusDO == true && attendanceRecord.DutyCode == "R") { #region -- Rest Calculation -- if (otPolicy.CalculateRestOT == true) { if (otPolicy.PerDayROTLimitHour >= _workHours) { if (mins.TotalMinutes < otPolicy.MinMinutesForOneHour) { attendanceRecord.OTMin = 0; } else if (attendanceRecord.OTMin >= otPolicy.MinMinutesForOneHour && attendanceRecord.OTMin <= 61) { attendanceRecord.OTMin = 60; } else { int hour = (int)(mins.TotalMinutes / 60); int min = hour * 60; int remainingmin = (int)mins.TotalMinutes - min; if (remainingmin >= otPolicy.MinMinutesForOneHour) { attendanceRecord.OTMin = (short)((hour + 1) * 60); } else { attendanceRecord.OTMin = (short)((hour) * 60); } } } else if (otPolicy.PerDayROTLimitHour == 0) { int hour = (int)(mins.TotalMinutes / 60); int min = hour * 60; int remainingmin = (int)mins.TotalMinutes - min; if (remainingmin >= otPolicy.MinMinutesForOneHour) { attendanceRecord.OTMin = (short)((hour + 1) * 60); } else { attendanceRecord.OTMin = (short)((hour) * 60); } } else { int policyOTLimitMin = (int)(otPolicy.PerDayROTLimitHour * 60.0); attendanceRecord.OTMin = (short)policyOTLimitMin; } } else { attendanceRecord.WorkMin = 0; attendanceRecord.ExtraMin = (short)mins.TotalMinutes; } if (attendanceRecord.OTMin > 0) { attendanceRecord.StatusOT = true; attendanceRecord.Remarks = attendanceRecord.Remarks + "[R-OT]"; } #endregion } else { attendanceRecord.StatusAB = false; attendanceRecord.StatusP = true; attendanceRecord.ExtraMin = 0; #region -- Margins-- //Calculate Late IN, Compare margin with Shift Late In if (attendanceRecord.TimeIn.Value.TimeOfDay > attendanceRecord.DutyTime) { TimeSpan lateMinsSpan = (TimeSpan)(attendanceRecord.TimeIn.Value.TimeOfDay - attendanceRecord.DutyTime); if (lateMinsSpan.Minutes > shift.LateIn) { attendanceRecord.LateIn = (short)lateMinsSpan.TotalMinutes; attendanceRecord.StatusLI = true; attendanceRecord.EarlyIn = 0; attendanceRecord.Remarks = attendanceRecord.Remarks + "[LI]"; } else { attendanceRecord.StatusLI = null; attendanceRecord.LateIn = 0; attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[LI]", ""); } } else { attendanceRecord.StatusLI = null; attendanceRecord.LateIn = 0; attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[LI]", ""); } //Calculate Early In, Compare margin with Shift Early In if (attendanceRecord.TimeIn.Value.TimeOfDay < attendanceRecord.DutyTime) { TimeSpan EarlyInMinsSpan = (TimeSpan)(attendanceRecord.DutyTime - attendanceRecord.TimeIn.Value.TimeOfDay); if (EarlyInMinsSpan.TotalMinutes > shift.EarlyIn) { attendanceRecord.EarlyIn = (short)EarlyInMinsSpan.TotalMinutes; attendanceRecord.StatusEI = true; attendanceRecord.LateIn = 0; attendanceRecord.Remarks = attendanceRecord.Remarks + "[EI]"; } else { attendanceRecord.StatusEI = null; attendanceRecord.EarlyIn = 0; attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[EI]", ""); } } else { attendanceRecord.StatusEI = null; attendanceRecord.EarlyIn = 0; attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[EI]", ""); } // CalculateShiftEndTime = ShiftStart + DutyHours DateTime shiftEnd = ATAssistant.CalculateShiftEndTimeWithAttData(attendanceRecord.AttDate.Value, attendanceRecord.DutyTime.Value, (short)(attendanceRecord.ShifMin + attendanceRecord.BreakMin)); //Calculate Early Out, Compare margin with Shift Early Out if (attendanceRecord.TimeOut < shiftEnd) { TimeSpan EarlyOutMinsSpan = (TimeSpan)(shiftEnd - attendanceRecord.TimeOut); if (EarlyOutMinsSpan.TotalMinutes > shift.EarlyOut) { attendanceRecord.EarlyOut = (short)EarlyOutMinsSpan.TotalMinutes; attendanceRecord.StatusEO = true; attendanceRecord.LateOut = 0; attendanceRecord.Remarks = attendanceRecord.Remarks + "[EO]"; } else { attendanceRecord.StatusEO = null; attendanceRecord.EarlyOut = 0; attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[EO]", ""); } } else { attendanceRecord.StatusEO = null; attendanceRecord.EarlyOut = 0; attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[EO]", ""); } //Calculate Late Out, Compare margin with Shift Late Out if (attendanceRecord.TimeOut > shiftEnd) { TimeSpan LateOutMinsSpan = (TimeSpan)(attendanceRecord.TimeOut - shiftEnd); if (LateOutMinsSpan.TotalMinutes > shift.LateOut) { attendanceRecord.LateOut = (short)LateOutMinsSpan.TotalMinutes; // Late Out cannot have an early out, In case of poll at multiple times before and after shiftend attendanceRecord.EarlyOut = 0; attendanceRecord.StatusLO = true; attendanceRecord.Remarks = attendanceRecord.Remarks + "[LO]"; } else { attendanceRecord.StatusLO = null; attendanceRecord.LateOut = 0; attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[LO]", ""); } } else { attendanceRecord.StatusLO = null; attendanceRecord.LateOut = 0; attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[LO]", ""); } #endregion if (otPolicy.CalculateNOT == true && attendanceRecord.LateOut > 0) { attendanceRecord.OTMin = (short)attendanceRecord.LateOut; } else if (otPolicy.CalculateNOT == false) { if (attendanceRecord.LateOut > 0) { attendanceRecord.ExtraMin = (short)(attendanceRecord.LateOut + attendanceRecord.ExtraMin); } if (attendanceRecord.EarlyIn > 0) { attendanceRecord.ExtraMin = (short)(attendanceRecord.EarlyIn + attendanceRecord.ExtraMin); } } #region -- Shift Things //Subtract EarlyIn and LateOut from Work Minutes if (shift.SubtractEIFromWork == true) { if (attendanceRecord.EarlyIn != null && attendanceRecord.EarlyIn > shift.EarlyIn) { attendanceRecord.WorkMin = (short)(attendanceRecord.WorkMin - attendanceRecord.EarlyIn); } } if (shift.SubtractOTFromWork == true) { if (attendanceRecord.LateOut != null && attendanceRecord.LateOut > shift.LateOut) { attendanceRecord.WorkMin = (short)(attendanceRecord.WorkMin - attendanceRecord.LateOut); } } if (shift.AddEIInOT == true && otPolicy.CalculateNOT == true) { if (attendanceRecord.EarlyIn != null) { if (attendanceRecord.OTMin != null) { attendanceRecord.OTMin = (short)(attendanceRecord.OTMin + attendanceRecord.EarlyIn); } else { if (attendanceRecord.EarlyIn != null && attendanceRecord.EarlyIn > shift.OverTimeMin) { attendanceRecord.OTMin = (short)attendanceRecord.EarlyIn; } } } } // Deduct break if (attendanceRecord.DutyCode == "D") { //Normal if (attendanceRecord.TimeIn != null && attendanceRecord.TimeOut != null) { if (attendanceRecord.TimeIn < ts && attendanceRecord.TimeOut > te) { attendanceRecord.WorkMin = (short)(attendanceRecord.WorkMin - attendanceRecord.BreakMin); } else { if (attendanceRecord.TotalShortMin > 0) { attendanceRecord.TotalShortMin = (short)(attendanceRecord.TotalShortMin + attendanceRecord.BreakMin); } } } } //RoundOff Work Minutes //if (shift.RoundOffWorkMin == true) //{ // if (attendanceRecord.LateOut != null || attendanceRecord.EarlyIn != null) // { // if (attendanceRecord.WorkMin > (attendanceRecord.ShifMin - shift.LateIn) && (attendanceRecord.WorkMin <= ((attendanceRecord.ShifMin + attendanceRecord.BreakMin) + 2))) // { // attendanceRecord.WorkMin = (short)(attendanceRecord.ShifMin); // } // } //} #endregion #region -- OT Calculation -- if ((attendanceRecord.StatusGZ != true || attendanceRecord.StatusDO != true)) { if (attendanceRecord.OTMin != null) { if (otPolicy.CalculateNOT == true) { float otHour = (float)(attendanceRecord.OTMin / 60.0); if (otPolicy.PerDayOTLimitHour >= otHour) { if (otPolicy.MinMinutesForOneHour == 0) { attendanceRecord.OTMin = (short)attendanceRecord.OTMin; } else { if (attendanceRecord.OTMin < otPolicy.MinMinutesForOneHour) { attendanceRecord.OTMin = 0; } else if (attendanceRecord.OTMin >= otPolicy.MinMinutesForOneHour && attendanceRecord.OTMin <= 61) { attendanceRecord.OTMin = 60; } else { if (attendanceRecord.OTMin != null) { int hour = (int)(attendanceRecord.OTMin / 60); int min = hour * 60; int remainingmin = (int)attendanceRecord.OTMin - min; if (remainingmin >= otPolicy.MinMinutesForOneHour) { attendanceRecord.OTMin = (short)((hour + 1) * 60); } else { attendanceRecord.OTMin = (short)min; } } } } } else { int policyOTLimitMin = (int)(otPolicy.PerDayOTLimitHour * 60.0); attendanceRecord.OTMin = (short)policyOTLimitMin; } } else { attendanceRecord.WorkMin = (short)mins.TotalMinutes; } if (attendanceRecord.OTMin > 0) { attendanceRecord.StatusOT = true; attendanceRecord.Remarks = attendanceRecord.Remarks + "[N-OT]"; } } } #endregion #region --- Half Absent and Short Time --- if (attendanceRecord.StatusHL == true) { attendanceRecord.TotalShortMin = 0; attendanceRecord.EarlyOut = 0; attendanceRecord.LateIn = 0; attendanceRecord.LateOut = 0; attendanceRecord.OTMin = 0; attendanceRecord.ExtraMin = 0; attendanceRecord.TotalShortMin = 0; attendanceRecord.StatusLI = false; attendanceRecord.StatusEO = false; attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[LI]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[EO]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[N-OT]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[LO]", ""); attendanceRecord.PDays = 0.5; attendanceRecord.AbDays = 0; attendanceRecord.LeaveDays = 0.5; // update if lateout } else { attendanceRecord.PDays = 1; attendanceRecord.AbDays = 0; attendanceRecord.LeaveDays = 0; short totalshortMin = 0; if (attendanceRecord.LateIn > 0) { totalshortMin = (short)attendanceRecord.LateIn; } if (attendanceRecord.EarlyOut > 0) { totalshortMin = (short)(totalshortMin + attendanceRecord.EarlyOut); } attendanceRecord.TotalShortMin = totalshortMin; int marginForST = 10; if (shift.LateIn > 0) { marginForST = shift.LateIn; } if (attendanceRecord.WorkMin < (attendanceRecord.ShifMin - marginForST)) { attendanceRecord.TotalShortMin = (Int16)(attendanceRecord.TotalShortMin + (attendanceRecord.ShifMin - (attendanceRecord.WorkMin + totalshortMin))); } if (otPolicy.CalculateNOT == true) { if (attendanceRecord.OTMin > 0) { if (attendanceRecord.TotalShortMin > 0) { attendanceRecord.ActualOT = (short)(attendanceRecord.OTMin - attendanceRecord.TotalShortMin); } } } } #endregion #region -- Mark Absent -- //Mark Absent if less than 4 hours if (attendanceRecord.AttDate.Value.DayOfWeek != DayOfWeek.Friday && attendanceRecord.StatusDO != true && attendanceRecord.StatusGZ != true) { if (attendanceRecord.StatusHL != true) { short MinShiftMin = (short)shift.MinHrs; if (attendanceRecord.WorkMin < MinShiftMin) { attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[Absent]", ""); attendanceRecord.StatusAB = true; attendanceRecord.StatusP = false; attendanceRecord.PDays = 0; attendanceRecord.AbDays = 1; attendanceRecord.LeaveDays = 0; attendanceRecord.Remarks = attendanceRecord.Remarks + "[Absent]"; } else { attendanceRecord.StatusAB = false; attendanceRecord.StatusP = true; if (attendanceRecord.StatusHL == true) { attendanceRecord.PDays = 0.5; attendanceRecord.AbDays = 0; attendanceRecord.LeaveDays = 0.5; } else { attendanceRecord.PDays = 1; attendanceRecord.AbDays = 0; attendanceRecord.LeaveDays = 0; } attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[Absent]", ""); } } } #endregion //RoundOff Work Minutes if (shift.RoundOffWorkMin == true) { if (attendanceRecord.WorkMin >= (attendanceRecord.ShifMin - shift.LateIn) && (attendanceRecord.WorkMin <= ((attendanceRecord.ShifMin) + shift.LateIn))) { attendanceRecord.WorkMin = (short)(attendanceRecord.ShifMin); } if (attendanceRecord.WorkMin > 0 && attendanceRecord.StatusHL != true) { //if (attendanceRecord.ShifMin <= attendanceRecord.WorkMin + attendanceRecord.TotalShortMin) //{ // attendanceRecord.WorkMin = attendanceRecord.ShifMin; //} } if (attendanceRecord.WorkMin > 0 && attendanceRecord.StatusHL == true) { //attendanceRecord.WorkMin = (short)(attendanceRecord.ShifMin); } } } #region -- Break for GZ, Rest and Normal Day //GZ Break if (attendanceRecord.DutyCode == "G") { if (attendanceRecord.TimeIn != null && attendanceRecord.TimeOut != null) { if (attendanceRecord.TimeIn < ts && attendanceRecord.TimeOut > te) { if (attendanceRecord.GZOTMin > 0) { attendanceRecord.GZOTMin = (short)(attendanceRecord.GZOTMin - attendanceRecord.BreakMin); } if (attendanceRecord.ExtraMin > 0) { attendanceRecord.ExtraMin = (short)(attendanceRecord.ExtraMin - attendanceRecord.BreakMin); } } } } //Rest else if (attendanceRecord.DutyCode == "R") { if (attendanceRecord.TimeIn != null && attendanceRecord.TimeOut != null) { if (attendanceRecord.TimeIn < ts && attendanceRecord.TimeOut > te) { if (attendanceRecord.OTMin > 0) { attendanceRecord.OTMin = (short)(attendanceRecord.OTMin - attendanceRecord.BreakMin); } if (attendanceRecord.ExtraMin > 0) { attendanceRecord.ExtraMin = (short)(attendanceRecord.ExtraMin - attendanceRecord.BreakMin); } } } } #endregion } } catch (Exception ex) { } }
private void CalculateInEqualToOut(DailyAttendance attendanceRecord) { attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[Absent]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[LI]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[EI]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[EO]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[LO]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[HA]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[DO]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[GZ]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[G-OT]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[R-OT]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[N-OT]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[Manual]", ""); attendanceRecord.Remarks = attendanceRecord.Remarks.Replace("[M]", ""); switch (attendanceRecord.DutyCode) { case "G": attendanceRecord.StatusAB = false; attendanceRecord.StatusGZ = true; attendanceRecord.WorkMin = 0; attendanceRecord.EarlyIn = 0; attendanceRecord.EarlyOut = 0; attendanceRecord.LateIn = 0; attendanceRecord.LateOut = 0; attendanceRecord.OTMin = 0; attendanceRecord.PDays = 0; attendanceRecord.AbDays = 0; attendanceRecord.LeaveDays = 0; attendanceRecord.GZOTMin = 0; attendanceRecord.StatusGZOT = false; attendanceRecord.TimeIn = null; attendanceRecord.TimeOut = null; attendanceRecord.Remarks = attendanceRecord.Remarks + "[GZ][M]"; break; case "R": attendanceRecord.StatusAB = false; attendanceRecord.StatusGZ = false; attendanceRecord.WorkMin = 0; attendanceRecord.EarlyIn = 0; attendanceRecord.EarlyOut = 0; attendanceRecord.LateIn = 0; attendanceRecord.LateOut = 0; attendanceRecord.OTMin = 0; attendanceRecord.GZOTMin = 0; attendanceRecord.StatusGZOT = false; attendanceRecord.TimeIn = null; attendanceRecord.TimeOut = null; attendanceRecord.StatusDO = true; attendanceRecord.PDays = 0; attendanceRecord.AbDays = 0; attendanceRecord.LeaveDays = 0; attendanceRecord.Remarks = attendanceRecord.Remarks + "[DO][M]"; break; case "D": if (attendanceRecord.StatusLeave == true) { attendanceRecord.AbDays = 0; attendanceRecord.PDays = 0; attendanceRecord.LeaveDays = 1; attendanceRecord.StatusGZ = false; attendanceRecord.WorkMin = 0; attendanceRecord.EarlyIn = 0; attendanceRecord.EarlyOut = 0; attendanceRecord.LateIn = 0; attendanceRecord.LateOut = 0; attendanceRecord.OTMin = 0; attendanceRecord.GZOTMin = 0; attendanceRecord.StatusGZOT = false; attendanceRecord.TimeIn = null; attendanceRecord.TimeOut = null; attendanceRecord.StatusDO = false; attendanceRecord.StatusP = false; attendanceRecord.Remarks = attendanceRecord.Remarks + "[M]"; } else if (attendanceRecord.StatusHL == true) { attendanceRecord.AbDays = 0.5; attendanceRecord.PDays = 0; attendanceRecord.LeaveDays = 0.5; attendanceRecord.StatusHL = true; attendanceRecord.StatusAB = true; attendanceRecord.StatusGZ = false; attendanceRecord.WorkMin = 0; attendanceRecord.EarlyIn = 0; attendanceRecord.EarlyOut = 0; attendanceRecord.LateIn = 0; attendanceRecord.LateOut = 0; attendanceRecord.OTMin = 0; attendanceRecord.GZOTMin = 0; attendanceRecord.StatusGZOT = false; attendanceRecord.TimeIn = null; attendanceRecord.TimeOut = null; attendanceRecord.StatusDO = false; attendanceRecord.StatusP = false; attendanceRecord.Remarks = attendanceRecord.Remarks + "[HA][M]"; } else { attendanceRecord.AbDays = 1; attendanceRecord.PDays = 0; attendanceRecord.LeaveDays = 0; attendanceRecord.StatusAB = true; attendanceRecord.StatusGZ = false; attendanceRecord.WorkMin = 0; attendanceRecord.EarlyIn = 0; attendanceRecord.EarlyOut = 0; attendanceRecord.LateIn = 0; attendanceRecord.LateOut = 0; attendanceRecord.OTMin = 0; attendanceRecord.GZOTMin = 0; attendanceRecord.StatusGZOT = false; attendanceRecord.TimeIn = null; attendanceRecord.TimeOut = null; attendanceRecord.StatusDO = false; attendanceRecord.StatusP = false; attendanceRecord.Remarks = attendanceRecord.Remarks + "[Absent][M]"; } break; } }
public CustomList <DailyAttendance> GetAllAttForDailyAttendanceProcess(string fromDate, string toDate, string searchStr, string PW, string PH, string PLV, string SinglePunch) { return(DailyAttendance.GetAllAttForDailyAttendanceProcess(fromDate, toDate, searchStr, PW, PH, PLV, SinglePunch)); }
public string GetDayStatus(Int64 empKey, int shiftID, string workDate) { return(DailyAttendance.GetDayStatus(empKey, shiftID, workDate)); }
public bool CheckRecordIsEdited(DailyAttendance att, EditAttendanceList editlist) { //check for attendance is edited bool edited = false; TimeSpan breakmin = new TimeSpan(); if (att.BreakMin > 0) { breakmin = new TimeSpan(0, (int)att.BreakMin, 0); } else { breakmin = new TimeSpan(0, 0, 0); } if (att.DutyCode != editlist.DutyCode) { edited = true; } if (att.DutyTime != editlist.DutyTime) { edited = true; } if (att.ShifMin != editlist.ShiftTime.TotalMinutes) { edited = true; } if (att.TimeIn != null) { if (editlist.TimeIn != null) { if (att.TimeIn.Value.TimeOfDay.Hours.ToString("00") + att.TimeIn.Value.TimeOfDay.Minutes.ToString("00") != editlist.TimeIn.Hours.ToString("00") + editlist.TimeIn.Minutes.ToString("00")) { edited = true; } } else { edited = true; } } else { if (editlist.TimeIn != null) { if (editlist.TimeIn.TotalMinutes > 0) { edited = true; } } } if (att.TimeOut != null) { if (editlist.TimeOut != null) { if (att.TimeOut.Value.TimeOfDay.Hours.ToString("00") + att.TimeOut.Value.TimeOfDay.Minutes.ToString("00") != editlist.TimeOut.Hours.ToString("00") + editlist.TimeOut.Minutes.ToString("00")) { edited = true; } } else { edited = true; } } else { if (editlist.TimeOut != null) { if (editlist.TimeOut.TotalMinutes > 0) { edited = true; } } } if (att.DutyCode != editlist.DutyCode) { edited = true; } return(edited); }