示例#1
0
        public void showDailyAttendance()
        {
            DailyAttendance am = new DailyAttendance();

            am.MdiParent = this;
            SetMdiForm(am.Text, typeof(DailyAttendance));
        }
示例#2
0
 //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);
        }
示例#4
0
        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);
        }
示例#6
0
 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)
     {
     }
 }
示例#7
0
        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);
            }
示例#13
0
        //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);
                    }
                }
            }
        }
示例#14
0
        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);
        }
示例#15
0
 public void printDailyAttendances(DailyAttendance da)
 {
     pdoc.PrintPage      += new PrintPageEventHandler(pdoc_PrintDailyAttendance);
     this.dailyAttendance = da;
     openDialog();
 }
示例#16
0
 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)
     {
     }
 }
示例#17
0
        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)
            {
            }
        }
示例#18
0
        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;
            }
        }
示例#19
0
 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));
 }
示例#20
0
 public string GetDayStatus(Int64 empKey, int shiftID, string workDate)
 {
     return(DailyAttendance.GetDayStatus(empKey, shiftID, workDate));
 }
示例#21
0
        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);
        }