Example #1
0
 public void DoWork()
 {
     T_HR_ATTENDANCESOLUTION ent = new T_HR_ATTENDANCESOLUTION();
    
     // 在此处添加操作实现
     return;
 }
Example #2
0
        public bool Save(ref T_HR_ATTENDANCESOLUTION entAttSol)
        {
            bool flag = false;

            if (lkSchedulingTemplateMaster.DataContext == null)
            {
                Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ERROR"), Utility.GetResourceStr("REQUIRED", "SCHEDULINGTEMPLATEMASTER"));
                return(false);
            }

            if (dgSEList.ItemsSource == null)
            {
                Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ERROR"), Utility.GetResourceStr("REQUIRED", "SCHEDULINGTEMPLATEDETAILSET"));
                return(false);
            }
            if (entAttSol.WORKDAYTYPE == "1" && entAttSol.WORKDAYS == null || entAttSol.WORKDAYS == 0)
            {
                Utility.ShowCustomMessage(MessageTypes.Error,
                                          "工作天数",
                                          "工作天数计算方式设定为“固定方式”时,工作天数(天/月)必须大于0");
                return(false);
            }
            entAttSol.T_HR_SCHEDULINGTEMPLATEMASTER = entTemplateMaster;

            flag = true;

            return(flag);
        }
Example #3
0
        /// <summary>
        /// 重新提交
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void btnReSubmit_Click(object sender, RoutedEventArgs e)
        {
            string strAttendanceSolutionID = string.Empty;

            if (dgAttSolList.SelectedItems == null)
            {
                ComfirmWindow.ConfirmationBox(Utility.GetResourceStr("CONFIRMINFO"), Utility.GetResourceStr("SELECTERROR", "ReSubmit"), Utility.GetResourceStr("CONFIRMBUTTON"));
                return;
            }

            if (dgAttSolList.SelectedItems.Count == 0)
            {
                ComfirmWindow.ConfirmationBox(Utility.GetResourceStr("CONFIRMINFO"), Utility.GetResourceStr("SELECTERROR", "ReSubmit"), Utility.GetResourceStr("CONFIRMBUTTON"));
                return;
            }

            T_HR_ATTENDANCESOLUTION ent = dgAttSolList.SelectedItems[0] as T_HR_ATTENDANCESOLUTION;

            strAttendanceSolutionID = ent.ATTENDANCESOLUTIONID.ToString();
            AttSolRdForm  formAttSolRd = new AttSolRdForm(FormTypes.Resubmit, strAttendanceSolutionID);
            EntityBrowser entBrowser   = new EntityBrowser(formAttSolRd);

            formAttSolRd.MinWidth       = 630;
            formAttSolRd.MinHeight      = 380;
            entBrowser.FormType         = FormTypes.Resubmit;
            entBrowser.ReloadDataEvent += new EntityBrowser.refreshGridView(browser_ReloadDataEvent);
            entBrowser.Show <string>(DialogMode.Default, SMT.SAAS.Main.CurrentContext.Common.ParentLayoutRoot, "", (result) => { });
        }
Example #4
0
        public bool Save(ref T_HR_ATTENDANCESOLUTION entAttSol)
        {
            bool flag = false;
            if (lkSchedulingTemplateMaster.DataContext == null)
            {
                Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ERROR"), Utility.GetResourceStr("REQUIRED", "SCHEDULINGTEMPLATEMASTER"));
                return false;
            }

            if (dgSEList.ItemsSource == null)
            {
                Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ERROR"), Utility.GetResourceStr("REQUIRED", "SCHEDULINGTEMPLATEDETAILSET"));
                return false;
            }
            if (entAttSol.WORKDAYTYPE == "1" && entAttSol.WORKDAYS == null || entAttSol.WORKDAYS == 0)
            {
                Utility.ShowCustomMessage(MessageTypes.Error,
                    "工作天数",
                     "工作天数计算方式设定为“固定方式”时,工作天数(天/月)必须大于0");
                return false;
            }
            entAttSol.T_HR_SCHEDULINGTEMPLATEMASTER = entTemplateMaster;

            flag = true;

            return flag;
        }
Example #5
0
        /// <summary>
        /// 根据公司ID,查询一段时间内的公休假
        /// </summary>
        /// <param name="T_HR_ATTENDANCESOLUTION"></param>
        /// <param name="dtStart"></param>
        /// <param name="dtEnd"></param>
        /// <returns></returns>
        public IQueryable <T_HR_OUTPLANDAYS> GetOutPlanDaysRdListByCompanyIdAndDate(T_HR_ATTENDANCESOLUTION entAttSol, DateTime dtStart, DateTime dtEnd, string strDayType)
        {
            if (entAttSol == null)
            {
                return(null);
            }

            return(GetOutPlanDaysByCompanyIDAndDate(entAttSol.OWNERCOMPANYID, dtStart, dtEnd, strDayType));
        }
Example #6
0
        /// <summary>
        /// 根据主键索引,获得指定的假期记录以便查看编辑
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void clientAtt_GetAttendanceSolutionByIDCompleted(object sender, GetAttendanceSolutionByIDCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                entAttendanceSolution = e.Result;
                if (FormType == FormTypes.Resubmit)
                {
                    entAttendanceSolution.CHECKSTATE = Convert.ToInt32(CheckStates.UnSubmit).ToString();
                }

                entAttendanceSolution.UPDATEDATE   = DateTime.Now;
                entAttendanceSolution.UPDATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID;

                this.DataContext = entAttendanceSolution;

                cbIsCurrentMonth.IsChecked = false;
                if (entAttendanceSolution.ISCURRENTMONTH == (Convert.ToInt32(IsChecked.Yes) + 1).ToString())
                {
                    cbIsCurrentMonth.IsChecked = true;
                }
                //结算岗位
                if (!string.IsNullOrWhiteSpace(entAttendanceSolution.LEFTOFFICERECEIVEPOSTNAME))
                {
                    lkBalancePost.TxtLookUp.Text = entAttendanceSolution.LEFTOFFICERECEIVEPOSTNAME;
                }
                //如果ISAUTOIMPORTPUNCH=0 表示不自动导入; =1表示自动导入
                if (entAttendanceSolution.ISAUTOIMPORTPUNCH == "0")
                {
                    this.RadN.IsChecked = true;
                }
                else
                {
                    this.RadY.IsChecked = true;
                }

                if (entAttendanceSolution.CHECKSTATE != Convert.ToInt32(CheckStates.UnSubmit).ToString())
                {
                    UnEnableFormControl();
                    this.ucOTReward.IsEnabled = false;
                    this.ucDeduct.IsEnabled   = false;
                    //this.ucDef.IsEnabled = false;
                    //this.ucDef.dgSEList.IsEnabled = true;
                    //this.ucDef.cbxkSchedulingCircleType.IsEnabled = false;
                    //this.ucDef.lkSchedulingTemplateMaster.IsEnabled = false;
                    //this.ucDef.txtRemark.IsEnabled = false;
                    this.ucLeave.IsEnabled = false;
                }

                RefreshUI(RefreshedTypes.AuditInfo);
                SetToolBar();
            }
            else
            {
                Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ERROR"), Utility.GetResourceStr(e.Error.Message));
            }
        }
Example #7
0
        private void InitForm()
        {
            entAttendanceSolution = new T_HR_ATTENDANCESOLUTION();
            entAttendanceSolution.ISEXPIRED = "0";
            entAttendanceSolution.YOUTHEXTEND = "0";

            cbIsExpired.IsChecked = false;
            cbYouthIsExpired.IsChecked = false;
            this.DataContext = entAttendanceSolution;
        }
Example #8
0
        private void InitForm()
        {
            entAttendanceSolution             = new T_HR_ATTENDANCESOLUTION();
            entAttendanceSolution.ISEXPIRED   = "0";
            entAttendanceSolution.YOUTHEXTEND = "0";

            cbIsExpired.IsChecked      = false;
            cbYouthIsExpired.IsChecked = false;
            this.DataContext           = entAttendanceSolution;
        }
Example #9
0
        /// <summary>
        /// 新增时,数据初始化
        /// </summary>
        private void InitForm()
        {
            entAttendanceSolution = new T_HR_ATTENDANCESOLUTION();
            entOvertimeReward     = new T_HR_OVERTIMEREWARD();

            //加班设置(T_HR_ATTENDANCESOLUTION 仅设置此部分存储及初始化当前页面的设置)
            entAttendanceSolution.OVERTIMEVALID   = "0";
            entAttendanceSolution.OVERTIMEPAYTYPE = "0";
            entAttendanceSolution.OVERTIMECHECK   = "0";
            cbOTTimeCheck.IsChecked = false;

            entAttendanceSolution.T_HR_OVERTIMEREWARD = entOvertimeReward;

            this.DataContext = entAttendanceSolution;
        }
Example #10
0
        /// <summary>
        /// 新增时,数据初始化
        /// </summary>
        private void InitForm()
        {
            entAttendanceSolution = new T_HR_ATTENDANCESOLUTION();
            entOvertimeReward = new T_HR_OVERTIMEREWARD();

            //加班设置(T_HR_ATTENDANCESOLUTION 仅设置此部分存储及初始化当前页面的设置)
            entAttendanceSolution.OVERTIMEVALID = "0";
            entAttendanceSolution.OVERTIMEPAYTYPE = "0";
            entAttendanceSolution.OVERTIMECHECK = "0";
            cbOTTimeCheck.IsChecked = false;

            entAttendanceSolution.T_HR_OVERTIMEREWARD = entOvertimeReward;

            this.DataContext = entAttendanceSolution;
        }
Example #11
0
        /// <summary>
        /// 根据主键索引,获得指定的假期记录以便查看编辑
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void clientAtt_GetAttendanceSolutionByIDCompleted(object sender, GetAttendanceSolutionByIDCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                entAttendanceSolution = e.Result;

                entAttendanceSolution.UPDATEDATE   = DateTime.Now;
                entAttendanceSolution.UPDATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID;

                this.DataContext = entAttendanceSolution;
            }
            else
            {
                Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ERROR"), Utility.GetResourceStr(e.Error.Message));
            }
        }
Example #12
0
        /// <summary>
        /// 效验输入基本信息内容
        /// </summary>
        /// <param name="entAttSol"></param>
        private void CheckSubmitForm(ref T_HR_ATTENDANCESOLUTION entAttSol)
        {
            if (entAttSol == null)
            {
                return;
            }

            decimal dAllowLostCardTimes = 0, dAllowLateMaxMinute = 0, dAllowLateMaxTimes = 0;

            decimal.TryParse(nudLostCardTimes.Value.ToString(), out dAllowLostCardTimes);
            decimal.TryParse(nudLateMaxMinute.Value.ToString(), out dAllowLateMaxMinute);
            decimal.TryParse(nudLateMaxTimes.Value.ToString(), out dAllowLateMaxTimes);

            entAttSol.ALLOWLOSTCARDTIMES = dAllowLostCardTimes;
            entAttSol.ALLOWLATEMAXMINUTE = dAllowLateMaxMinute;
            entAttSol.ALLOWLATEMAXTIMES  = dAllowLateMaxTimes;
        }
Example #13
0
        public bool Save(ref T_HR_ATTENDANCESOLUTION entAttSol, out ObservableCollection <T_HR_ATTENDFREELEAVE> entListTemp)
        {
            bool flag = false;

            entListTemp = new ObservableCollection <T_HR_ATTENDFREELEAVE>();

            CheckSubmitForm(ref entAttSol);

            if (entAttSol == null)
            {
                return(false);
            }

            if (dgLeaveSetlist.ItemsSource == null)
            {
                Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ERROR"), Utility.GetResourceStr("REQUIRED", "ATTENDANCEUNUSUALDEDUCT"));
                return(false);
            }

            entLeaveTypeSets = dgLeaveSetlist.ItemsSource as ObservableCollection <T_HR_LEAVETYPESET>;
            entListTemp.Clear();


            for (int i = 0; i < entLeaveTypeSets.Count; i++)
            {
                T_HR_ATTENDFREELEAVE entTemp = new T_HR_ATTENDFREELEAVE();
                entTemp.ATTENDFREELEAVEID       = System.Guid.NewGuid().ToString();
                entTemp.T_HR_LEAVETYPESET       = entLeaveTypeSets[i] as T_HR_LEAVETYPESET;
                entTemp.T_HR_ATTENDANCESOLUTION = entAttSol;

                entTemp.CREATEDATE   = DateTime.Now;
                entTemp.CREATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID;
                entTemp.UPDATEDATE   = System.DateTime.Now;
                entTemp.UPDATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID;

                entListTemp.Add(entTemp);
            }

            if (entListTemp.Count > 0)
            {
                flag = true;
            }

            return(flag);
        }
Example #14
0
        /// <summary>
        /// 非编辑状态,定义初始化数据
        /// </summary>
        private void InitBasicForm()
        {
            entAttendanceSolution = new T_HR_ATTENDANCESOLUTION();
            entAttendanceSolution.ATTENDANCESOLUTIONID = System.Guid.NewGuid().ToString().ToUpper();

            //权限控制
            entAttendanceSolution.OWNERCOMPANYID    = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.UserPosts[0].CompanyID;
            entAttendanceSolution.OWNERDEPARTMENTID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.UserPosts[0].DepartmentID;
            entAttendanceSolution.OWNERPOSTID       = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.UserPosts[0].PostID;
            entAttendanceSolution.OWNERID           = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID;


            //2010年2月11日, 11:37:35,目前暂未实现登录部分,人员相关数据为假定值
            entAttendanceSolution.CREATEDATE   = DateTime.Now;
            entAttendanceSolution.CREATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID;
            entAttendanceSolution.UPDATEDATE   = System.DateTime.Now;
            entAttendanceSolution.UPDATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID;

            //页面初始化加载的临时数据
            entAttendanceSolution.ATTENDANCETYPE = "0";
            entAttendanceSolution.CARDTYPE       = "0";
            entAttendanceSolution.WORKDAYTYPE    = "0";
            entAttendanceSolution.ISCURRENTMONTH = "1";
            cbIsCurrentMonth.IsChecked           = false;

            //加班设置
            entAttendanceSolution.OVERTIMEVALID   = "0";
            entAttendanceSolution.OVERTIMEPAYTYPE = "0";
            entAttendanceSolution.OVERTIMECHECK   = "0";

            //考勤异常设置
            entAttendanceSolution.ALLOWLOSTCARDTIMES = 0;
            entAttendanceSolution.ALLOWLATEMAXMINUTE = 0;
            entAttendanceSolution.ALLOWLATEMAXTIMES  = 0;

            //请假设置
            entAttendanceSolution.ANNUALLEAVESET = "0";
            entAttendanceSolution.ISEXPIRED      = "0";

            //审核
            entAttendanceSolution.CHECKSTATE = Convert.ToInt32(SMT.SaaS.FrameworkUI.CheckStates.UnSubmit).ToString();
            entAttendanceSolution.EDITSTATE  = Convert.ToInt32(SMT.SaaS.FrameworkUI.EditStates.UnActived).ToString();

            this.DataContext = entAttendanceSolution;
        }
Example #15
0
        public bool Save(out T_HR_ATTENDANCESOLUTION entAttSol)
        {
            bool flag = false;

            entAttSol = new T_HR_ATTENDANCESOLUTION();

            CheckSubmitForm(out flag);

            if (!flag)
            {
                entAttSol = null;
                return(false);
            }

            entAttSol = Utility.Clone(entAttendanceSolution);
            flag      = true;
            return(flag);
        }
Example #16
0
        /// <summary>
        /// 
        /// </summary>
        private void InitForm()
        {
            entAttendanceSolution = new T_HR_ATTENDANCESOLUTION();
            entAttendanceSolution.ATTENDANCESOLUTIONID = System.Guid.NewGuid().ToString().ToUpper();

            //权限控制
            entAttendanceSolution.OWNERCOMPANYID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.UserPosts[0].CompanyID;
            entAttendanceSolution.OWNERDEPARTMENTID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.UserPosts[0].DepartmentID;
            entAttendanceSolution.OWNERPOSTID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.UserPosts[0].PostID;
            entAttendanceSolution.OWNERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID;


            //2010年2月11日, 11:37:35,目前暂未实现登录部分,人员相关数据为假定值
            entAttendanceSolution.CREATEDATE = DateTime.Now;
            entAttendanceSolution.CREATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID;
            entAttendanceSolution.UPDATEDATE = System.DateTime.Now;
            entAttendanceSolution.UPDATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID;

            //页面初始化加载的临时数据
            entAttendanceSolution.ATTENDANCETYPE = "0";
            entAttendanceSolution.CARDTYPE = "0";
            entAttendanceSolution.WORKDAYTYPE = "0";
            entAttendanceSolution.ISCURRENTMONTH = "0";
          
            //加班设置
            entAttendanceSolution.OVERTIMEVALID = "0";
            entAttendanceSolution.OVERTIMEPAYTYPE = "0";
            entAttendanceSolution.OVERTIMECHECK = "0";

            //考勤异常设置
            entAttendanceSolution.ALLOWLOSTCARDTIMES = 0;
            entAttendanceSolution.ALLOWLATEMAXMINUTE = 0;
            entAttendanceSolution.ALLOWLATEMAXTIMES = 0;

            //请假设置
            entAttendanceSolution.ANNUALLEAVESET = "0";
            entAttendanceSolution.ISEXPIRED = "0";

            //审核
            entAttendanceSolution.CHECKSTATE = Convert.ToInt32(SMT.SaaS.FrameworkUI.CheckStates.UnSubmit).ToString();
            entAttendanceSolution.EDITSTATE = Convert.ToInt32(SMT.SaaS.FrameworkUI.EditStates.UnActived).ToString();

            this.DataContext = entAttendanceSolution;
        }
        private void lkAttSol_FindClick(object sender, EventArgs e)
        {
            Dictionary <string, string> cols = new Dictionary <string, string>();

            cols.Add("ATTENDANCESOLUTIONNAME", "ATTENDANCESOLUTIONNAME");
            LookupForm lookup = new LookupForm(SMT.Saas.Tools.OrganizationWS.EntityNames.AttendanceSolution,
                                               typeof(T_HR_ATTENDANCESOLUTION[]), cols);

            lookup.SelectedClick += (o, ev) =>
            {
                T_HR_ATTENDANCESOLUTION ent = lookup.SelectedObj as T_HR_ATTENDANCESOLUTION;

                if (ent != null)
                {
                    lkAttSol.DataContext = ent;
                }
            };

            lookup.Show <string>(DialogMode.Default, SMT.SAAS.Main.CurrentContext.Common.ParentLayoutRoot, "", (result) => {});
        }
Example #18
0
        /// <summary>
        /// 效验并整理提交的表单
        /// </summary>
        /// <param name="entAttendanceSolutionDeducts"></param>
        /// <param name="entAttendFreeLeaves"></param>
        /// <returns></returns>
        private bool CheckAndSubmitTabForm(ref T_HR_ATTENDANCESOLUTION entAttSol, ref ObservableCollection <T_HR_ATTENDANCESOLUTIONDEDUCT> entAttendanceSolutionDeducts, ref ObservableCollection <T_HR_ATTENDFREELEAVE> entAttendFreeLeaves)
        {
            bool flag = false;

            CheckBasicForm(out flag);

            if (!flag)
            {
                return(false);
            }

            flag = ucOTReward.Save(ref entAttSol);
            if (!flag)
            {
                return(false);
            }

            flag = ucDeduct.Save(ref entAttSol, out entAttendanceSolutionDeducts);
            if (!flag)
            {
                return(false);
            }

            flag = ucLeave.Save(ref entAttSol, out entAttendFreeLeaves);
            if (!flag)
            {
                return(false);
            }

            flag = ucDef.Save(ref entAttSol);
            if (!flag)
            {
                return(false);
            }

            this.DataContext = entAttSol;

            return(flag);
        }
Example #19
0
        /// <summary>
        /// 获取考勤方案对应的考勤异常配置信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void clientAtt_GetAttendanceSolutionDeductRdListByAttSolIDCompleted(object sender, GetAttendanceSolutionDeductRdListByAttSolIDCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                entAttendanceSolutionDeducts = e.Result;

                if (entAttendanceSolutionDeducts == null)
                {
                    entAttendanceSolutionDeducts = new ObservableCollection <T_HR_ATTENDANCESOLUTIONDEDUCT>();
                }

                if (entAttendanceSolutionDeducts.Count > 0)
                {
                    entAttendanceSolution = new T_HR_ATTENDANCESOLUTION();

                    entAttendanceSolution  = entAttendanceSolutionDeducts[0].T_HR_ATTENDANCESOLUTION;
                    nudLostCardTimes.Value = double.Parse(entAttendanceSolution.ALLOWLOSTCARDTIMES.Value.ToString());
                    nudLateMaxMinute.Value = double.Parse(entAttendanceSolution.ALLOWLATEMAXMINUTE.Value.ToString());
                    nudLateMaxTimes.Value  = double.Parse(entAttendanceSolution.ALLOWLATEMAXTIMES.Value.ToString());

                    entAttendanceDeductMasters = new ObservableCollection <T_HR_ATTENDANCEDEDUCTMASTER>();
                    foreach (T_HR_ATTENDANCESOLUTIONDEDUCT item in entAttendanceSolutionDeducts)
                    {
                        entAttendanceDeductMasters.Add(item.T_HR_ATTENDANCEDEDUCTMASTER);
                    }

                    if (entAttendanceDeductMasters.Count > 0)
                    {
                        dgAttendanceDeductlist.ItemsSource = entAttendanceDeductMasters;
                    }
                }

                this.DataContext = entAttendanceSolutionDeducts;
            }
            else
            {
                Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ERROR"), Utility.GetResourceStr(e.Error.Message));
            }
        }
Example #20
0
        /// <summary>
        /// 删除指定的考勤方案
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void btnDelete_Click(object sender, RoutedEventArgs e)
        {
            string strID = "";

            if (dgAttSolList.SelectedItems == null)
            {
                ComfirmWindow.ConfirmationBox(Utility.GetResourceStr("CONFIRMINFO"), Utility.GetResourceStr("SELECTERROR", "DELETE"), Utility.GetResourceStr("CONFIRMBUTTON"));
                return;
            }

            if (dgAttSolList.SelectedItems.Count == 0)
            {
                ComfirmWindow.ConfirmationBox(Utility.GetResourceStr("CONFIRMINFO"), Utility.GetResourceStr("SELECTERROR", "DELETE"), Utility.GetResourceStr("CONFIRMBUTTON"));
                return;
            }

            foreach (object ovj in dgAttSolList.SelectedItems)
            {
                T_HR_ATTENDANCESOLUTION entAttSol = ovj as T_HR_ATTENDANCESOLUTION;
                string Result = "";
                if (entAttSol != null)
                {
                    strID = entAttSol.ATTENDANCESOLUTIONID;
                    if (entAttSol.CHECKSTATE != Convert.ToInt32(CheckStates.UnSubmit).ToString())
                    {
                        ComfirmWindow.ConfirmationBox(Utility.GetResourceStr("CONFIRMINFO"), Utility.GetResourceStr("DELETEAUDITERROR"), Utility.GetResourceStr("CONFIRMBUTTON"));
                        return;
                    }

                    ComfirmWindow delComfirm = new ComfirmWindow();
                    delComfirm.OnSelectionBoxClosed += (obj, result) =>
                    {
                        clientAtt.RemoveAttendanceSolutionAsync(strID);
                    };
                    delComfirm.SelectionBox(Utility.GetResourceStr("DELETECONFIRM"), Utility.GetResourceStr("DELETEALTER"), ComfirmWindow.titlename, Result);
                }
            }
        }
        /// <summary>
        /// 校验输入的查询条件
        /// </summary>
        /// <param name="strVacName"></param>
        /// <param name="strFineType"></param>
        private void CheckInputFilter(ref string strAttendanceSolutionID, ref string strAssignedObjectType, ref string strCheckState)
        {
            if (lkAttSol.DataContext != null)
            {
                T_HR_ATTENDANCESOLUTION ent = lkAttSol.DataContext as T_HR_ATTENDANCESOLUTION;
                strAttendanceSolutionID = ent.ATTENDANCESOLUTIONID;
            }

            if (cbxkAssignedObjectType.SelectedItem != null)
            {
                T_SYS_DICTIONARY entDic = cbxkAssignedObjectType.SelectedItem as T_SYS_DICTIONARY;
                if (!string.IsNullOrEmpty(entDic.DICTIONARYID) && !string.IsNullOrEmpty(entDic.DICTIONCATEGORY))
                {
                    strAssignedObjectType = entDic.DICTIONARYVALUE.ToString();
                }
            }

            if (toolbar1.cbxCheckState.SelectedItem != null)
            {
                T_SYS_DICTIONARY entDic = toolbar1.cbxCheckState.SelectedItem as T_SYS_DICTIONARY;
                strCheckState = entDic.DICTIONARYVALUE.ToString();
            }
        }
Example #22
0
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="entAttSol"></param>
        /// <returns></returns>
        public bool Save(ref T_HR_ATTENDANCESOLUTION entAttSol)
        {
            bool flag = false;

            if (entAttSol == null)
            {
                return(false);
            }

            if (string.IsNullOrEmpty(entAttSol.ATTENDANCESOLUTIONID))
            {
                return(false);
            }

            if (entAttendanceSolution == null)
            {
                return(false);
            }

            CheckSubmitForm(out flag);

            if (!flag)
            {
                return(false);
            }

            entAttSol.OVERTIMEVALID       = entAttendanceSolution.OVERTIMEVALID;
            entAttSol.OVERTIMEPAYTYPE     = entAttendanceSolution.OVERTIMEPAYTYPE;
            entAttSol.OVERTIMECHECK       = entAttendanceSolution.OVERTIMECHECK;
            entAttSol.ONEDAYOVERTIMEHOURS = entAttendanceSolution.ONEDAYOVERTIMEHOURS;

            entAttSol.T_HR_OVERTIMEREWARD = entAttendanceSolution.T_HR_OVERTIMEREWARD;
            flag = true;

            return(flag);
        }
Example #23
0
        /// <summary>
        /// 根据主键索引,获得指定的假期记录以便查看编辑
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void clientAtt_GetAttendanceSolutionByIDCompleted(object sender, GetAttendanceSolutionByIDCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                entAttendanceSolution = e.Result;

                entAttendanceSolution.UPDATEDATE = DateTime.Now;
                entAttendanceSolution.UPDATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID;

                this.DataContext = entAttendanceSolution;
            }
            else
            {
                Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ERROR"), Utility.GetResourceStr(e.Error.Message));
            }
        }        
Example #24
0
        /// <summary>
        /// 检测申请加班的相关信息
        /// </summary>
        /// <param name="request">结果数据实体</param>
        /// <returns>返回结果数据实体</returns>
        public CalculateOTHoursResponse CalculateOTHours(CalculateOTHoursRequest request)
        {
            CalculateOTHoursResponse response = new CalculateOTHoursResponse();

            DateTime dtStartDate = Convert.ToDateTime(request.StartDate + " " + request.StartTime);
            DateTime dtEndDate   = Convert.ToDateTime(request.EndDate + " " + request.EndTime);

            DateTime dtTempStartDate = dtStartDate;
            DateTime dtTempEndDate   = dtEndDate;

            List <string> sWorkArr    = new List <string>(); //工作时间
            List <string> sNotWorkArr = new List <string>(); //休息时间
            List <string> tempWorkArr = new List <string>();

            DateTime FirstCardStartDate  = DateTime.MinValue;
            DateTime FirstCardEndDate    = DateTime.MinValue;
            DateTime SecondCardStartDate = DateTime.MinValue;
            DateTime SecondCardEndDate   = DateTime.MinValue;

            DateTime ThirdCardStartDate  = DateTime.MinValue;
            DateTime ThirdCardEndDate    = DateTime.MinValue;
            DateTime FourthCardStartDate = DateTime.MinValue;
            DateTime FourthCardEndDate   = DateTime.MinValue;

            double totalHours       = 0;
            int    hasFirstSetting  = 1; //0,未设置;1,已设置
            int    hasSecondSetting = 1; //0,未设置;1,已设置
            int    hasThirdSetting  = 1; //0,未设置;1,已设置
            int    hasFourthSetting = 1; //0,未设置;1,已设置

            response.Result         = Enums.Result.Success.GetHashCode();
            response.Message        = string.Empty;
            response.OTHours        = 0;
            response.OTDays         = 0;
            response.Month          = string.Empty;
            response.AttendSolution = string.Empty;
            response.WorkPerDay     = 0;
            response.StartTime      = Convert.ToDateTime(request.StartTime).ToString("HH:mm");

            //判断加班申请是否重复
            T_HR_EMPLOYEEOVERTIMERECORD otEntity = dal.GetObjects <T_HR_EMPLOYEEOVERTIMERECORD>().Where(t => t.OVERTIMERECORDID != request.OverTimeRecordID &&
                                                                                                        t.EMPLOYEEID == request.EmployeeID &&
                                                                                                        ((dtStartDate > t.STARTDATE && dtStartDate < t.ENDDATE) ||//起始时间在已有时间段内
                                                                                                         (dtEndDate > t.STARTDATE && dtEndDate < t.ENDDATE) ||//结束时间在已有时间段内
                                                                                                         (dtStartDate == t.STARTDATE && dtEndDate > t.STARTDATE) ||//当dtStartDate与开始时间重叠时,dtEndDate需大于开始时间
                                                                                                         (dtEndDate == t.ENDDATE && dtStartDate < t.ENDDATE) ||//当dtEndDate与最后时间重叠时dtStartDate需小于束时间
                                                                                                         (dtStartDate <t.STARTDATE && dtEndDate> t.ENDDATE)//新增加班完成包含已有加班
                                                                                                        ) &&
                                                                                                        t.CHECKSTATE != "3" && t.CHECKSTATE != "0"
                                                                                                        ).FirstOrDefault();

            if (otEntity != null)
            {
                response.Result  = Enums.Result.HasDuplicateOTRecord.GetHashCode();//结果:失败
                response.Message = Constants.HasDuplicateOTRecord + ";"
                                   + otEntity.STARTDATE.Value.ToString("yyyy-MM-dd") + " " + otEntity.STARTDATETIME + " ~ "
                                   + otEntity.ENDDATE.Value.ToString("yyyy-MM-dd") + "  " + otEntity.ENDDATETIME;//加班申请重复
                return(response);
            }

            #region "   获取考勤方案,排班明细,排班时间段   "

            AttendanceSolutionBLL   bllAttendanceSolution  = new AttendanceSolutionBLL();
            T_HR_ATTENDANCESOLUTION OTPeriodAttendSolution = bllAttendanceSolution.GetAttendanceSolutionByEmployeeIDAndDate(request.EmployeeID,
                                                                                                                            Convert.ToDateTime(request.StartDate), Convert.ToDateTime(request.EndDate));

            SchedulingTemplateDetailBLL bllTemplateDetail = new SchedulingTemplateDetailBLL();
            IQueryable <T_HR_SCHEDULINGTEMPLATEDETAIL> scheduleSetDetail =
                bllTemplateDetail.GetTemplateDetailRdListByAttendanceSolutionId(OTPeriodAttendSolution.ATTENDANCESOLUTIONID);
            T_HR_SCHEDULINGTEMPLATEMASTER scheduleSetting = scheduleSetDetail.FirstOrDefault().T_HR_SCHEDULINGTEMPLATEMASTER;

            int      iCycleDays       = 0;
            DateTime dtCycleStartDate = Convert.ToDateTime(Convert.ToDateTime(request.StartDate).ToString("yyyy-MM-01"));//按月为周期的排班表
            DateTime dtCurCycleOTDate = Convert.ToDateTime(DateTime.Parse(request.StartDate).ToString("yyyy-MM-dd"));
            //找出加班时间与循环排班详细中对应的日历号,然后通过T_HR_SCHEDULINGTEMPLATEDETAIL找到对应的 打卡时间段: T_HR_SHIFTDEFINE
            if (scheduleSetting.SCHEDULINGCIRCLETYPE == (Common.SchedulingCircleType.Month.GetHashCode() + 1).ToString())
            {//按月循环的排班打卡方式
                iCycleDays = 31;
            }

            if ((scheduleSetting.SCHEDULINGCIRCLETYPE == (Common.SchedulingCircleType.Week.GetHashCode() + 1).ToString()))
            {//按周排班打卡方式
                iCycleDays = 7;
                //如果是按周统计,则从当前算起
                dtCycleStartDate = Convert.ToDateTime(DateTime.Parse(request.StartDate).ToString("yyyy-MM-dd"));
            }

            T_HR_SHIFTDEFINE dayCardSetting = null; //具体的排班明细,最多包括了4个时段的打卡设置,用于计算加班小时数
            for (int i = 0; i < iCycleDays; i++)    //找出加班日期对应的日历中对应明细排班: T_HR_SHIFTDEFINE
            {
                string   strSchedulingDate = (i + 1).ToString();
                DateTime dtCurDate         = new DateTime();

                dtCurDate = dtCycleStartDate.AddDays(i);

                if (dtCurDate != dtCurCycleOTDate)
                {
                    continue;
                }

                T_HR_SCHEDULINGTEMPLATEDETAIL item = scheduleSetDetail.Where(c => c.SCHEDULINGDATE == strSchedulingDate).FirstOrDefault();
                if (item != null)
                {
                    dayCardSetting = item.T_HR_SHIFTDEFINE;//具体的排班明细
                }
            }

            #endregion

            string strMonth = Convert.ToDateTime(request.StartDate).ToString("yyyy年MM月");
            if (OTPeriodAttendSolution != null)
            {
                if (dayCardSetting != null)
                {
                    #region "   休息时间段的设置,以最大四个班次计算  "
                    DateTime notWorkTimeStart = DateTime.MinValue;
                    DateTime notWorkTimeEnd   = DateTime.MinValue;

                    DateTime notWorkTimeStart1 = DateTime.MinValue;
                    DateTime notWorkTimeEnd1   = DateTime.MinValue;

                    DateTime notWorkTimeStart2 = DateTime.MinValue;
                    DateTime notWorkTimeEnd2   = DateTime.MinValue;
                    #endregion

                    #region "   第一时段打卡起始时间  "
                    if (!string.IsNullOrEmpty(dayCardSetting.FIRSTSTARTTIME) && !string.IsNullOrEmpty(dayCardSetting.FIRSTENDTIME))
                    {
                        FirstCardStartDate = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.FIRSTSTARTTIME).ToString("HH:mm:ss"));
                        FirstCardEndDate   = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.FIRSTENDTIME).ToString("HH:mm:ss"));

                        notWorkTimeStart = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.FIRSTENDTIME).ToString("HH:mm:ss"));

                        sWorkArr.Add(FirstCardStartDate.ToString() + "|" + FirstCardEndDate.ToString());

                        response.FirstStartTime = Convert.ToDateTime(dayCardSetting.FIRSTSTARTTIME).ToString("HH:mm:ss");
                        response.FirstEndTime   = Convert.ToDateTime(dayCardSetting.FIRSTENDTIME).ToString("HH:mm:ss");
                    }
                    else
                    {
                        hasFirstSetting = 0;
                    }
                    #endregion
                    #region "   第二时段打卡起始时间  "
                    if (!string.IsNullOrEmpty(dayCardSetting.SECONDSTARTTIME) && !string.IsNullOrEmpty(dayCardSetting.SECONDENDTIME))
                    {
                        SecondCardStartDate = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.SECONDSTARTTIME).ToString("HH:mm:ss"));
                        SecondCardEndDate   = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.SECONDENDTIME).ToString("HH:mm:ss"));

                        notWorkTimeEnd    = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.SECONDSTARTTIME).ToString("HH:mm:ss"));
                        notWorkTimeStart1 = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.SECONDENDTIME).ToString("HH:mm:ss"));

                        sWorkArr.Add(SecondCardStartDate.ToString() + "|" + SecondCardEndDate.ToString());
                        sNotWorkArr.Add(notWorkTimeStart.ToString() + "|" + notWorkTimeEnd.ToString());

                        response.SecondStartTime = Convert.ToDateTime(dayCardSetting.SECONDSTARTTIME).ToString("HH:mm:ss");
                        response.SecondEndTime   = Convert.ToDateTime(dayCardSetting.SECONDENDTIME).ToString("HH:mm:ss");
                    }
                    else
                    {
                        hasSecondSetting = 0;
                    }
                    #endregion
                    #region "   第三时段打卡起始时间  "
                    if (!string.IsNullOrEmpty(dayCardSetting.THIRDSTARTTIME) && !string.IsNullOrEmpty(dayCardSetting.THIRDENDTIME))
                    {
                        ThirdCardStartDate = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.THIRDSTARTTIME).ToString("HH:mm:ss"));
                        ThirdCardEndDate   = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.THIRDENDTIME).ToString("HH:mm:ss"));

                        notWorkTimeEnd1   = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.THIRDSTARTTIME).ToString("HH:mm:ss"));
                        notWorkTimeStart2 = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.THIRDENDTIME).ToString("HH:mm:ss"));

                        sWorkArr.Add(ThirdCardStartDate.ToString() + "|" + ThirdCardEndDate.ToString());
                        sNotWorkArr.Add(notWorkTimeStart1.ToString() + "|" + notWorkTimeEnd1.ToString());

                        response.ThirdStartTime = string.IsNullOrEmpty(dayCardSetting.THIRDSTARTTIME) ? string.Empty : Convert.ToDateTime(dayCardSetting.THIRDSTARTTIME).ToString("HH:mm:ss");
                        response.ThirdEndTime   = string.IsNullOrEmpty(dayCardSetting.THIRDENDTIME) ? string.Empty : Convert.ToDateTime(dayCardSetting.THIRDENDTIME).ToString("HH:mm:ss");
                    }
                    else
                    {
                        hasThirdSetting = 0;
                    }
                    #endregion
                    #region "   第四时段打卡起始时间  "
                    if (!string.IsNullOrEmpty(dayCardSetting.FOURTHSTARTTIME) && !string.IsNullOrEmpty(dayCardSetting.FOURTHENDTIME))
                    {
                        FourthCardStartDate = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.FOURTHSTARTTIME).ToString("HH:mm:ss"));
                        FourthCardEndDate   = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.FOURTHENDTIME).ToString("HH:mm:ss"));

                        notWorkTimeEnd2 = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.FOURTHSTARTTIME).ToString("HH:mm:ss"));

                        sWorkArr.Add(FourthCardStartDate.ToString() + "|" + FourthCardEndDate.ToString());
                        sNotWorkArr.Add(notWorkTimeStart2.ToString() + "|" + notWorkTimeEnd2.ToString());

                        response.FourthStartTime = string.IsNullOrEmpty(dayCardSetting.FOURTHSTARTTIME) ? string.Empty : Convert.ToDateTime(dayCardSetting.FOURTHSTARTTIME).ToString("HH:mm:ss");
                        response.FourthEndTime   = string.IsNullOrEmpty(dayCardSetting.FOURTHENDTIME) ? string.Empty : Convert.ToDateTime(dayCardSetting.FOURTHENDTIME).ToString("HH:mm:ss");
                    }
                    else
                    {
                        hasFourthSetting = 0;
                    }
                    #endregion

                    #region "   判断是否设置了至少两个的打卡时间段   "
                    //为设置打卡时间段,至少设置两个打卡时间段
                    if (hasFirstSetting == 0)
                    {
                        response.Result         = Enums.Result.NonFirstSetting.GetHashCode();
                        response.Month          = strMonth;
                        response.AttendSolution = OTPeriodAttendSolution.ATTENDANCESOLUTIONNAME;
                        response.WorkPerDay     = OTPeriodAttendSolution.WORKTIMEPERDAY.HasValue ? OTPeriodAttendSolution.WORKTIMEPERDAY.Value : 0;
                        response.Message        = Constants.NonFirstSetting;
                        return(response);
                    }

                    if (hasSecondSetting == 0)
                    {
                        response.Result         = Enums.Result.NonSecondSetting.GetHashCode();
                        response.Month          = strMonth;
                        response.AttendSolution = OTPeriodAttendSolution.ATTENDANCESOLUTIONNAME;
                        response.WorkPerDay     = OTPeriodAttendSolution.WORKTIMEPERDAY.HasValue ? OTPeriodAttendSolution.WORKTIMEPERDAY.Value : 0;
                        response.Message        = Constants.NonSecondSetting;
                        return(response);
                    }
                    #endregion

                    #region "   检查加班时间是否在公共假期,或是工作日,或是三八,或是五四     "

                    decimal dWorkMode = OTPeriodAttendSolution.WORKMODE.Value;
                    int     iWorkMode = 0;
                    int.TryParse(dWorkMode.ToString(), out iWorkMode);//获取工作制(工作天数/周)

                    List <int> iWorkDays = new List <int>();
                    SMT.HRM.BLL.Utility.GetWorkDays(iWorkMode, ref iWorkDays);

                    OutPlanDaysBLL bllOutPlanDays = new OutPlanDaysBLL();
                    IQueryable <T_HR_OUTPLANDAYS> entOutPlanDays = bllOutPlanDays.GetOutPlanDaysRdListByEmployeeID(request.EmployeeID);
                    string strVacDayType  = (Convert.ToInt32(SMT.HRM.BLL.Common.OutPlanDaysType.Vacation) + 1).ToString();
                    string strWorkDayType = (Convert.ToInt32(SMT.HRM.BLL.Common.OutPlanDaysType.WorkDay) + 1).ToString();
                    //获取公共假期设置
                    DateTime vacTempStartDate = Convert.ToDateTime(request.StartDate);
                    DateTime vacTempEndDate   = Convert.ToDateTime(request.EndDate);
                    //加班只可能在一天内
                    IQueryable <T_HR_OUTPLANDAYS> entVacDays = entOutPlanDays.Where(s => s.DAYTYPE == strVacDayType &&
                                                                                    vacTempStartDate >= s.STARTDATE && vacTempEndDate <= s.ENDDATE);

                    //获取工作日设置
                    DateTime workTempStartDate = Convert.ToDateTime(request.StartDate);
                    DateTime workTempEndDate   = Convert.ToDateTime(request.EndDate);
                    //加班只可能在一天内
                    IQueryable <T_HR_OUTPLANDAYS> entWorkDays = entOutPlanDays.Where(s => s.DAYTYPE == strWorkDayType &&
                                                                                     workTempStartDate >= s.STARTDATE && workTempEndDate <= s.ENDDATE);
                    //当前星期几,是否要工作
                    //Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6.
                    int  iDayOfWeek = Convert.ToDateTime(request.StartDate).DayOfWeek.GetHashCode();
                    bool iDayCount  = iWorkDays.Contains(iDayOfWeek);

                    DateTime WorkDayEndDate = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.SECONDENDTIME).ToString("HH:mm:ss"));
                    //工作日加班,要在第二时间段以后
                    if (dayCardSetting != null)
                    {
                        if (hasThirdSetting == 1)
                        {
                            WorkDayEndDate = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.THIRDENDTIME).ToString("HH:mm:ss"));
                        }
                        if (hasFourthSetting == 1)
                        {
                            WorkDayEndDate = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.FOURTHENDTIME).ToString("HH:mm:ss"));
                        }
                    }

                    #region "   不是假期    "
                    if (entVacDays.Count() == 0)
                    {     //也不是设置的工作日,
                        if (entWorkDays.Count() == 0)
                        { //并且在上班时间列表中
                            if (iDayCount)
                            {
                                //工作日加班,要在第二时间段以后
                                if (dayCardSetting != null)
                                {
                                    #region 梁杰文 平时加班,加班起始时间要在工作日结束之后
                                    //改判断逻辑dtEndDate <= WorkDayEndDate为WorkDayEndDate>dtStartDate
                                    #endregion
                                    if (WorkDayEndDate > dtStartDate)
                                    {
                                        #region "   在上班时间列表中,这天要上班,不算加班  "
                                        //这天要上班,不算加班
                                        response.Result  = Enums.Result.IsWorkDay.GetHashCode();
                                        response.Message = Constants.IsWorkDay;//是工作日,不算加班
                                        return(response);

                                        #endregion
                                    }
                                }
                            }
                        }
                        else
                        {
                            //工作日加班,要在第二时间段以后
                            if (dayCardSetting != null)
                            {
                                #region 梁杰文 平时加班,加班起始时间要在工作日结束之后
                                //改判断逻辑dtEndDate <= WorkDayEndDate为WorkDayEndDate>dtStartDate
                                #endregion
                                if (WorkDayEndDate > dtStartDate)
                                {
                                    #region "   设置为工作日,这天要上班,不算加班   "
                                    //这天要上班,不算加班
                                    response.Result  = Enums.Result.IsWorkDay.GetHashCode();
                                    response.Message = Constants.IsWorkDay;//是工作日,不算加班
                                    return(response);

                                    #endregion
                                }
                            }
                        }
                    }
                    else
                    {
                        //加班时间在假期设置中,但只是半天的设置
                        foreach (var vac in entVacDays)
                        {
                            #region "   半天公共假期,三八妇女节,青年节    "
                            if (vac.ISHALFDAY == "1")
                            {
                                if (vac.PEROID == "1")//下午
                                {
                                    if (dayCardSetting != null)
                                    {
                                        DateTime HalfMorningStartDate = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.FIRSTSTARTTIME).ToString("HH:mm:ss"));
                                        DateTime HalfMorningEndDate   = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.FIRSTENDTIME).ToString("HH:mm:ss"));
                                        //四个时间中,上午时间的开始与结束
                                        if (hasThirdSetting == 1 && hasFourthSetting == 1)
                                        {
                                            HalfMorningEndDate = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.SECONDENDTIME).ToString("HH:mm:ss"));
                                        }
                                        //如果填写的加班时间段在上午,则不算加班
                                        if (dtEndDate <= HalfMorningEndDate)
                                        {
                                            response.Result         = Enums.Result.IsHalfDayMorningWork.GetHashCode();
                                            response.Month          = strMonth;
                                            response.AttendSolution = OTPeriodAttendSolution.ATTENDANCESOLUTIONNAME;
                                            response.WorkPerDay     = OTPeriodAttendSolution.WORKTIMEPERDAY.HasValue ? OTPeriodAttendSolution.WORKTIMEPERDAY.Value : 0;
                                            response.Message        = Constants.IsHalfDayMorningWork;
                                            return(response);
                                        }
                                    }
                                }
                                else//上午
                                {
                                    if (dayCardSetting != null)
                                    {
                                        DateTime HalfNoonStartDate = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.SECONDSTARTTIME).ToString("HH:mm:ss"));
                                        DateTime HalfNoonEndDate   = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.SECONDENDTIME).ToString("HH:mm:ss"));
                                        //四个时间中,下午时间的开始与结束
                                        if (hasThirdSetting == 1 && hasFourthSetting == 1)
                                        {
                                            HalfNoonStartDate = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.THIRDSTARTTIME).ToString("HH:mm:ss"));
                                            HalfNoonEndDate   = Convert.ToDateTime(request.StartDate + " " + Convert.ToDateTime(dayCardSetting.FOURTHENDTIME).ToString("HH:mm:ss"));
                                        }
                                        //如果填写的加班时间段在下午,则不算加班
                                        if (dtStartDate >= HalfNoonStartDate && dtStartDate <= HalfNoonEndDate)
                                        {
                                            response.Result         = Enums.Result.IsHalfDayNoonWork.GetHashCode();
                                            response.Month          = strMonth;
                                            response.AttendSolution = OTPeriodAttendSolution.ATTENDANCESOLUTIONNAME;
                                            response.WorkPerDay     = OTPeriodAttendSolution.WORKTIMEPERDAY.HasValue ? OTPeriodAttendSolution.WORKTIMEPERDAY.Value : 0;
                                            response.Message        = Constants.IsHalfDayNoonWork;
                                            return(response);
                                        }
                                    }
                                }
                            }
                            #endregion
                        }
                    }
                    #endregion
                    #endregion

                    //填写的加班时段都在4个设置的上班时间段里面,则直接用结束时间减去开始时间
                    if (
                        (dtStartDate >= FirstCardStartDate && dtStartDate <= FirstCardEndDate &&
                         dtEndDate >= FirstCardStartDate && dtEndDate <= FirstCardEndDate)
                        ||
                        (dtStartDate >= SecondCardStartDate && dtStartDate <= SecondCardEndDate &&
                         dtEndDate >= SecondCardStartDate && dtEndDate <= SecondCardEndDate)
                        ||
                        (dtStartDate >= ThirdCardStartDate && dtStartDate <= ThirdCardEndDate &&
                         dtEndDate >= ThirdCardStartDate && dtEndDate <= ThirdCardEndDate)
                        ||
                        (dtStartDate >= FourthCardStartDate && dtStartDate <= FourthCardEndDate &&
                         dtEndDate >= FourthCardStartDate && dtEndDate <= FourthCardEndDate)
                        )
                    {
                        totalHours = dtEndDate.Subtract(dtStartDate).TotalHours;
                    }
                    else
                    {
                        #region "   计算加班时间     "

                        //早7:50打开,将计算加班的有效开始时间设置为8:30,也就是dtCardStartDate
                        //23:00下班,假定四个工作时间段
                        if (dtStartDate < FirstCardStartDate)
                        {
                            dtTempStartDate    = FirstCardStartDate;
                            response.StartTime = dtTempStartDate.ToString("HH:mm:ss");
                        }

                        #region "   找出开始计算加班的时间点    "
                        DateTime tempOTDate = new DateTime();
                        foreach (string str in sWorkArr)
                        {
                            string[] s             = str.Split('|');
                            DateTime WorkStartDate = Convert.ToDateTime(s[0]);
                            DateTime WorkEndDate   = Convert.ToDateTime(s[1]);
                            //如果开始时间在工作时间范围内,那就从开始时间算加班
                            if (dtTempStartDate >= WorkStartDate && dtTempStartDate <= WorkEndDate)
                            {
                                tempOTDate = dtTempStartDate;
                            }
                            //如果开始时间大于工作时间段的结束时间,则属于休息时间段的时间点
                            //找出里他最近的上班时间点作为加班开始时间
                            if (dtTempStartDate > WorkEndDate)
                            {
                                foreach (string str1 in sNotWorkArr)
                                {
                                    string[] sn = str1.Split('|');
                                    DateTime notWorkStartDate = Convert.ToDateTime(sn[0]);
                                    DateTime notWorkEndDate   = Convert.ToDateTime(sn[1]);
                                    //加班开始时间在休息时间点内,则加班的开始时间从休息时间的结束点开始
                                    if (dtTempStartDate >= notWorkStartDate && dtTempStartDate <= notWorkEndDate)
                                    {
                                        tempOTDate = notWorkEndDate;
                                    }
                                    else
                                    {
                                        //不在所有的休息时间段内,则说明加班是在
                                        //一天正常的上班时间段以外进行
                                        tempOTDate = dtTempStartDate;
                                    }
                                }
                            }
                        }
                        #endregion

                        #region "   设置具体的加班是时间段     "
                        for (int i = 0; i < sWorkArr.Count(); i++)
                        {
                            string[] ss            = sWorkArr[i].Split('|');
                            DateTime WorkStartDate = Convert.ToDateTime(ss[0]);
                            DateTime WorkEndDate   = Convert.ToDateTime(ss[1]);
                            //工作时间段的开始时间大于加班开始时间
                            if (WorkStartDate >= tempOTDate)
                            {
                                //加班结束时间大于工作时间段的结束时间
                                //则说明加班时间包含这段工作时间段,计算完整的加班时间段
                                if (dtTempEndDate >= WorkEndDate)
                                {
                                    if (sNotWorkArr.Count() == 0)
                                    {
                                        tempWorkArr.Add(WorkStartDate.ToString() + "|" + dtTempEndDate.ToString());
                                    }

                                    foreach (string str3 in sNotWorkArr)
                                    {
                                        string[] sn = str3.Split('|');
                                        DateTime notWorkStartDate = Convert.ToDateTime(sn[0]);
                                        DateTime notWorkEndDate   = Convert.ToDateTime(sn[1]);
                                        if (dtTempEndDate >= notWorkStartDate && dtTempEndDate <= notWorkEndDate)
                                        {
                                            tempWorkArr.Add(WorkStartDate.ToString() + "|" + WorkEndDate.ToString());
                                        }
                                        else if (dtTempEndDate >= WorkEndDate)
                                        {
                                            if (i == sWorkArr.Count() - 1)
                                            {
                                                WorkEndDate = dtTempEndDate;
                                            }
                                            tempWorkArr.Add(WorkStartDate.ToString() + "|" + WorkEndDate.ToString());
                                            sNotWorkArr.Remove(str3);
                                            break;
                                        }
                                        else
                                        {
                                            tempWorkArr.Add(WorkStartDate.ToString() + "|" + notWorkStartDate.ToString());
                                            sNotWorkArr.Remove(str3);
                                            break;
                                        }
                                    }
                                }
                                else
                                {
                                    if (sNotWorkArr.Count() == 0)
                                    {
                                        tempWorkArr.Add(WorkStartDate.ToString() + "|" + dtTempEndDate.ToString());
                                    }

                                    foreach (string str3 in sNotWorkArr)
                                    {
                                        string[] sn = str3.Split('|');
                                        DateTime notWorkStartDate = Convert.ToDateTime(sn[0]);
                                        DateTime notWorkEndDate   = Convert.ToDateTime(sn[1]);
                                        if (dtTempEndDate >= notWorkStartDate && dtTempEndDate <= notWorkEndDate)
                                        {
                                        }
                                        else if (dtTempEndDate >= WorkEndDate)
                                        {
                                            tempWorkArr.Add(WorkStartDate.ToString() + "|" + WorkEndDate.ToString());
                                            sNotWorkArr.Remove(str3);
                                            break;
                                        }
                                        else
                                        {
                                            tempWorkArr.Add(WorkStartDate.ToString() + "|" + dtTempEndDate.ToString());
                                            sNotWorkArr.Remove(str3);
                                            break;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                if (i == sWorkArr.Count() - 1)
                                {
                                    WorkEndDate = dtTempEndDate;
                                }
                                tempWorkArr.Add(tempOTDate.ToString() + "|" + WorkEndDate.ToString());
                            }
                        }
                        #endregion

                        #region "   计算加班时长  "
                        tempWorkArr = tempWorkArr.Distinct().ToList();
                        foreach (string str4 in tempWorkArr)
                        {
                            string[] sss           = str4.Split('|');
                            DateTime WorkStartDate = Convert.ToDateTime(sss[0]);
                            DateTime WorkEndDate   = Convert.ToDateTime(sss[1]);
                            if (WorkStartDate <= WorkEndDate)
                            {
                                totalHours += Math.Round(WorkEndDate.Subtract(WorkStartDate).TotalHours, 1);
                            }
                        }
                        #endregion

                        #endregion
                    }
                }


                response.Result         = Enums.Result.Success.GetHashCode();
                response.OTHours        = totalHours;
                response.OTDays         = Math.Round(totalHours / Convert.ToDouble(OTPeriodAttendSolution.WORKTIMEPERDAY), 2);
                response.Month          = strMonth;
                response.AttendSolution = OTPeriodAttendSolution.ATTENDANCESOLUTIONNAME;
                response.WorkPerDay     = OTPeriodAttendSolution.WORKTIMEPERDAY.HasValue ? OTPeriodAttendSolution.WORKTIMEPERDAY.Value : 0;
                response.Message        = "";
                return(response);
            }


            response.Result         = Enums.Result.NonAttendenceSolution.GetHashCode();
            response.Message        = Constants.NonAttendenceSolution;
            response.OTHours        = 0;
            response.OTDays         = 0;
            response.Month          = strMonth;
            response.AttendSolution = string.Format("未找到{0}对应的考勤方案", strMonth);
            response.WorkPerDay     = 0;
            return(response);
        }
Example #25
0
        /// <summary>
        /// 获取指定员工的实际销假天数(实际销假天数=销假天数-公休假天数-每周休息天数),实际销假时长(按小时计,实际销假合计时长=非整天销假时长-当日作息间隙休息时间+整天销假时长)
        /// </summary>
        /// <param name="strCancelLeaveId">当前销假记录的ID</param>
        /// <param name="strEmployeeID">员工ID</param>
        /// <param name="dtLeaveStartTime">销假起始时间</param>
        /// <param name="dtLeaveEndTime">销假截止时间</param>
        /// <param name="dLeaveDay">实际销假天数</param>
        /// <param name="dLeaveTime">实际销假时长</param>
        /// <param name="dLeaveTotalTime">实际销假合计时长</param>
        public string GetRealCancelLeaveDayByEmployeeIdAndDate(string strCancelLeaveId, string strEmployeeID, DateTime dtCancelLeaveStartTime, DateTime dtCancelLeaveEndTime, ref decimal dCancelLeaveDay, ref decimal dCancelLeaveTime, ref decimal dCancelLeaveTotalTime)
        {
            string strMsg = string.Empty;

            try
            {
                T_HR_EMPLOYEECANCELLEAVE entCancelLeaveRecord = GetEmployeeCancelLeaveByID(strCancelLeaveId);
                bool flag = false;

                if (entCancelLeaveRecord != null)
                {
                    if (entCancelLeaveRecord.STARTDATETIME == dtCancelLeaveStartTime && entCancelLeaveRecord.ENDDATETIME == dtCancelLeaveEndTime)
                    {
                        if (entCancelLeaveRecord.LEAVEDAYS == null)
                        {
                            dCancelLeaveDay = 0;
                        }
                        else
                        {
                            dCancelLeaveDay = entCancelLeaveRecord.LEAVEDAYS.Value;
                        }

                        if (entCancelLeaveRecord.LEAVEHOURS == null)
                        {
                            dCancelLeaveTime = 0;
                        }
                        else
                        {
                            dCancelLeaveTime = entCancelLeaveRecord.LEAVEHOURS.Value;
                        }

                        if (entCancelLeaveRecord.TOTALHOURS == null)
                        {
                            dCancelLeaveTotalTime = 0;
                        }
                        else
                        {
                            dCancelLeaveTotalTime = entCancelLeaveRecord.TOTALHOURS.Value;
                        }

                        flag = true;
                    }
                }

                if (flag)
                {
                    return(strMsg);
                }

                DateTime dtStart, dtEnd = new DateTime();
                decimal  dTotalLeaveDay = 0;                                                   //起止时间的时长

                DateTime.TryParse(dtCancelLeaveStartTime.ToString("yyyy-MM-dd"), out dtStart); //获取销假起始日期
                DateTime.TryParse(dtCancelLeaveEndTime.ToString("yyyy-MM-dd"), out dtEnd);     //获取销假截止日期

                AttendanceSolutionAsignBLL   bllAttendSolAsign = new AttendanceSolutionAsignBLL();
                T_HR_ATTENDANCESOLUTIONASIGN entAttendSolAsign = bllAttendSolAsign.GetAttendanceSolutionAsignByEmployeeIDAndDate(strEmployeeID, dtStart);
                if (entAttendSolAsign == null)
                {
                    //当前员工没有分配考勤方案,无法提交销假申请
                    return("{NONEXISTASIGNEDATTENSOL}");
                }

                //获取考勤方案
                T_HR_ATTENDANCESOLUTION entAttendSol = entAttendSolAsign.T_HR_ATTENDANCESOLUTION;
                decimal dWorkTimePerDay = entAttendSol.WORKTIMEPERDAY.Value;
                decimal dWorkMode       = entAttendSol.WORKMODE.Value;
                int     iWorkMode       = 0;
                int.TryParse(dWorkMode.ToString(), out iWorkMode);//获取工作制(工作天数/周)

                List <int> iWorkDays = new List <int>();
                Utility.GetWorkDays(iWorkMode, ref iWorkDays);//获取每周上班天数

                OutPlanDaysBLL bllOutPlanDays = new OutPlanDaysBLL();
                IQueryable <T_HR_OUTPLANDAYS> entOutPlanDays = bllOutPlanDays.GetOutPlanDaysRdListByEmployeeID(strEmployeeID);

                string strVacDayType  = (Convert.ToInt32(Common.OutPlanDaysType.Vacation) + 1).ToString();
                string strWorkDayType = (Convert.ToInt32(Common.OutPlanDaysType.WorkDay) + 1).ToString();
                IQueryable <T_HR_OUTPLANDAYS> entVacDays = entOutPlanDays.Where(s => s.DAYTYPE == strVacDayType);
                //IQueryable<T_HR_OUTPLANDAYS> entWorkDays = entOutPlanDays.Where(s => s.DAYTYPE == strWorkDayType && s.STARTDATE >= dtStart && s.ENDDATE <= dtEnd);
                // 销假时间要在开始时间和结束时间之间
                //注释掉没考虑某一区间的情况
                //IQueryable<T_HR_OUTPLANDAYS> entWorkDays = entOutPlanDays.Where(s => s.DAYTYPE == strWorkDayType && s.STARTDATE <= dtStart && s.ENDDATE >= dtEnd);
                //条件过滤有四种情况
                //1:在区间内
                //2:大于开始时间且结束时间小于销假结束时间
                //3:开始日期大于 销假开始日期且结束日期处于有效期之间
                //4:开始日期小于销假开始日期且结束日期在开始时间和结束时间
                IQueryable <T_HR_OUTPLANDAYS> entWorkDays = entOutPlanDays.Where(s => s.DAYTYPE == strWorkDayType &&
                                                                                 ((s.STARTDATE <= dtStart && s.ENDDATE >= dtEnd) ||
                                                                                  (s.STARTDATE >= dtStart && s.ENDDATE <= dtEnd) ||
                                                                                  (s.STARTDATE >= dtStart && s.STARTDATE <= dtEnd && s.ENDDATE >= dtEnd) ||
                                                                                  (s.STARTDATE <= dtStart && s.ENDDATE >= dtStart && s.ENDDATE <= dtEnd)));
                SchedulingTemplateDetailBLL bllTemplateDetail = new SchedulingTemplateDetailBLL();
                IQueryable <T_HR_SCHEDULINGTEMPLATEDETAIL> entTemplateDetails = bllTemplateDetail.GetTemplateDetailRdListByAttendanceSolutionId(entAttendSol.ATTENDANCESOLUTIONID);
                T_HR_SCHEDULINGTEMPLATEMASTER entTemplateMaster = entTemplateDetails.FirstOrDefault().T_HR_SCHEDULINGTEMPLATEMASTER;

                TimeSpan ts = dtEnd.Subtract(dtStart);

                decimal dVacDay = 0, dWorkDay = 0;
                decimal dLeaveFirstDayTime = 0, dLeaveLastDayTime = 0, dLeaveFirstLastTime = 0;//请假第一天的时长,请假最后一天的时长,请假首尾两天合计时长
                if (dtCancelLeaveStartTime != dtCancelLeaveEndTime)
                {
                    EmployeeLeaveRecordBLL bllLeaveRecord = new EmployeeLeaveRecordBLL();
                    bllLeaveRecord.CalculateNonWholeDayLeaveTime(dtCancelLeaveStartTime, dtStart, entTemplateMaster, entTemplateDetails, entVacDays, entWorkDays, iWorkDays, "S", ref dLeaveFirstDayTime);
                    bllLeaveRecord.CalculateNonWholeDayLeaveTime(dtCancelLeaveEndTime, dtEnd, entTemplateMaster, entTemplateDetails, entVacDays, entWorkDays, iWorkDays, "E", ref dLeaveLastDayTime);

                    dLeaveFirstLastTime = dLeaveFirstDayTime + dLeaveLastDayTime;

                    if (dtStart == dtEnd)
                    {
                        dLeaveFirstLastTime = dLeaveFirstLastTime - dWorkTimePerDay * 60;
                    }
                }
                else
                {
                    dLeaveFirstLastTime = dWorkTimePerDay * 60;
                }


                dTotalLeaveDay = ts.Days;
                if (ts.Days > 0)
                {
                    //取得总的请假天数(此天数扣除了首尾两天的时间,根据请假的情况,可能包含了公休假及周假天数,扣除首尾两天的计算只适合请三天以上的)
                    int iDays = ts.Days - 1;
                    dTotalLeaveDay = iDays;

                    for (int i = 0; i < iDays; i++)
                    {
                        int      j         = i + 1;
                        bool     isVacDay  = false;
                        DateTime dtCurDate = dtStart.AddDays(j);
                        if (iWorkDays.Contains(Convert.ToInt32(dtCurDate.DayOfWeek)) == false)
                        {
                            dVacDay += 1;
                        }

                        if (entVacDays.Count() > 0)
                        {
                            foreach (T_HR_OUTPLANDAYS item_Vac in entVacDays)
                            {
                                if (item_Vac.STARTDATE.Value <= dtCurDate && item_Vac.ENDDATE >= dtCurDate)
                                {
                                    isVacDay = true;
                                    break;
                                }
                            }
                        }

                        if (isVacDay)
                        {
                            dVacDay += 1;
                        }

                        if (entWorkDays.Count() > 0)
                        {
                            foreach (T_HR_OUTPLANDAYS item_Work in entWorkDays)
                            {
                                if (item_Work.STARTDATE.Value <= dtCurDate && item_Work.ENDDATE >= dtCurDate)
                                {
                                    dWorkDay += 1;
                                    break;
                                }
                            }
                        }
                    }
                }

                dCancelLeaveDay = dTotalLeaveDay - dVacDay + dWorkDay;    //请假天数 = 请假天数-首尾两天 - 总休假天数 + 休假调剂工作天数
                decimal dTempTime = decimal.Round((dLeaveFirstLastTime) / 60, 1);
                if (dTempTime >= dWorkTimePerDay)
                {
                    decimal  dTempDay = decimal.Round(dTempTime / dWorkTimePerDay, 2);
                    string[] strList  = dTempDay.ToString().Split('.');
                    if (strList.Length == 2)
                    {
                        dCancelLeaveDay += decimal.Parse(strList[0].ToString());
                        dCancelLeaveTime = dTempTime - dWorkTimePerDay * decimal.Parse(strList[0].ToString());
                    }
                    else
                    {
                        dCancelLeaveDay += dTempDay;
                    }
                }
                else if (dTempTime < dWorkTimePerDay)
                {
                    dCancelLeaveTime = dTempTime;
                }

                dCancelLeaveTotalTime = dCancelLeaveDay * dWorkTimePerDay + dCancelLeaveTime;
            }
            catch (Exception ex)
            {
                strMsg = ex.Message;
                Utility.SaveLog(ex.ToString());
            }

            return(strMsg);
        }
Example #26
0
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="entAttSol"></param>
        /// <returns></returns>
        public bool Save(ref T_HR_ATTENDANCESOLUTION entAttSol)
        {
            bool flag = false;
            if (entAttSol == null)
            {
                return false;
            }

            if (string.IsNullOrEmpty(entAttSol.ATTENDANCESOLUTIONID))
            {
                return false;
            }

            if (entAttendanceSolution == null)
            {
                return false;
            }

            CheckSubmitForm(out flag);

            if (!flag)
            {
                return false;
            }

            entAttSol.OVERTIMEVALID = entAttendanceSolution.OVERTIMEVALID;
            entAttSol.OVERTIMEPAYTYPE = entAttendanceSolution.OVERTIMEPAYTYPE;
            entAttSol.OVERTIMECHECK = entAttendanceSolution.OVERTIMECHECK;
            entAttSol.ONEDAYOVERTIMEHOURS = entAttendanceSolution.ONEDAYOVERTIMEHOURS;

            entAttSol.T_HR_OVERTIMEREWARD = entAttendanceSolution.T_HR_OVERTIMEREWARD;
            flag = true;

            return flag;
        }
Example #27
0
        /// <summary>
        /// 效验输入基本信息内容
        /// </summary>
        /// <param name="entAttSol"></param>
        private void CheckSubmitForm(ref T_HR_ATTENDANCESOLUTION entAttSol)
        {
            if (entAttSol == null)
            {
                return;
            }

            decimal dAdjustExpiredValue      = 0;
            decimal dYouthAdjustExpiredValue = 0;

            if (cbxkAnnualLeaveSet.SelectedItem == null)
            {
                Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ANNUALLEAVESET"), string.Format(Utility.GetResourceStr("REQUIRED"), Utility.GetResourceStr("ANNUALLEAVESET")));
                //entAttSol = null;
                return;
            }
            else
            {
                T_SYS_DICTIONARY entDic = cbxkAnnualLeaveSet.SelectedItem as T_SYS_DICTIONARY;
                if (string.IsNullOrEmpty(entDic.DICTIONARYID) || string.IsNullOrEmpty(entDic.DICTIONCATEGORY) || string.IsNullOrEmpty(entDic.DICTIONARYVALUE.ToString()))
                {
                    Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ANNUALLEAVESET"), string.Format(Utility.GetResourceStr("REQUIRED"), Utility.GetResourceStr("ANNUALLEAVESET")));
                    entAttSol = null;
                    return;
                }

                entAttSol.ANNUALLEAVESET = entDic.DICTIONARYVALUE.Value.ToString();
            }

            if (dgLeaveSetlist.ItemsSource == null)
            {
                Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("LEAVESETFORM"), string.Format(Utility.GetResourceStr("REQUIRED"), Utility.GetResourceStr("LEAVESETFORM")));
                return;
            }
            //注释原因:在加班单终审时没有进行加1判断
            //entAttendanceSolution.ISEXPIRED = (Convert.ToInt32(IsChecked.No) + 1).ToString();
            entAttendanceSolution.ISEXPIRED   = (Convert.ToInt32(IsChecked.No)).ToString();
            entAttendanceSolution.YOUTHEXTEND = (Convert.ToInt32(IsChecked.No)).ToString();
            entAttSol.ISEXPIRED   = (Convert.ToInt32(IsChecked.No)).ToString();
            entAttSol.YOUTHEXTEND = (Convert.ToInt32(IsChecked.No)).ToString();
            if (cbIsExpired.IsChecked.Value == true)
            {
                //entAttendanceSolution.ISEXPIRED = (Convert.ToInt32(IsChecked.Yes) + 1).ToString();
                //entAttSol.ISEXPIRED = (Convert.ToInt32(IsChecked.Yes) + 1).ToString();
                entAttendanceSolution.ISEXPIRED = (Convert.ToInt32(IsChecked.Yes)).ToString();
                entAttSol.ISEXPIRED             = (Convert.ToInt32(IsChecked.Yes)).ToString();
                decimal.TryParse(nudAdjustExpiredValue.Value.ToString(), out dAdjustExpiredValue);
                if (dAdjustExpiredValue <= 0)
                {
                    Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ADJUSTEXPIREDVALUE"), string.Format(Utility.GetResourceStr("DATECOMPARE"), Utility.GetResourceStr("ADJUSTEXPIREDVALUE"), "0"));
                    entAttSol = null;
                    return;
                }
            }
            if (cbYouthIsExpired.IsChecked.Value == true)
            {
                entAttendanceSolution.YOUTHEXTEND = (Convert.ToInt32(IsChecked.Yes)).ToString();
                entAttSol.YOUTHEXTEND             = (Convert.ToInt32(IsChecked.Yes)).ToString();
                decimal.TryParse(nudYouthAdjustExpiredValue.Value.ToString(), out dYouthAdjustExpiredValue);
                if (dYouthAdjustExpiredValue <= 0)
                {
                    Utility.ShowCustomMessage(MessageTypes.Error, "提示", "三八五四延长时间不能小于或等于0");
                    entAttSol = null;
                    return;
                }
            }

            entAttSol.ADJUSTEXPIREDVALUE = dAdjustExpiredValue;
            entAttSol.YOUTHEXTENDVALUE   = dYouthAdjustExpiredValue;
        }
Example #28
0
        /// <summary>
        /// 效验并整理提交的表单
        /// </summary>
        /// <param name="entAttendanceSolutionDeducts"></param>
        /// <param name="entAttendFreeLeaves"></param>
        /// <returns></returns>
        private bool CheckAndSubmitTabForm(ref T_HR_ATTENDANCESOLUTION entAttSol, ref ObservableCollection<T_HR_ATTENDANCESOLUTIONDEDUCT> entAttendanceSolutionDeducts, ref ObservableCollection<T_HR_ATTENDFREELEAVE> entAttendFreeLeaves)
        {
            bool flag = false;
            CheckBasicForm(out flag);

            if (!flag)
            {
                return false;
            }

            flag = ucOTReward.Save(ref entAttSol);
            if (!flag)
            {
                return false;
            }

            flag = ucDeduct.Save(ref entAttSol, out entAttendanceSolutionDeducts);
            if (!flag)
            {
                return false;
            }

            flag = ucLeave.Save(ref entAttSol, out entAttendFreeLeaves);
            if (!flag)
            {
                return false;
            }

            flag = ucDef.Save(ref entAttSol);
            if (!flag)
            {
                return false;
            }

            this.DataContext = entAttSol;

            return flag;
        }
Example #29
0
 public string ModifyAttendanceSolution(T_HR_ATTENDANCESOLUTION entTemp)
 {
     using (AttendanceSolutionBLL bllAttendanceSolution = new AttendanceSolutionBLL())
     {
         return bllAttendanceSolution.ModifyAttSol(entTemp);
     }
 }
Example #30
0
        public bool Save(ref T_HR_ATTENDANCESOLUTION entAttSol, out ObservableCollection<T_HR_ATTENDFREELEAVE> entListTemp)
        {
            bool flag = false;
            entListTemp = new ObservableCollection<T_HR_ATTENDFREELEAVE>();

            CheckSubmitForm(ref entAttSol);

            if (entAttSol == null)
            {
                return false;
            }
            
            if (dgLeaveSetlist.ItemsSource == null)
            {
                Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ERROR"), Utility.GetResourceStr("REQUIRED", "ATTENDANCEUNUSUALDEDUCT"));
                return false;
            }

            entLeaveTypeSets = dgLeaveSetlist.ItemsSource as ObservableCollection<T_HR_LEAVETYPESET>;
            entListTemp.Clear();


            for (int i = 0; i < entLeaveTypeSets.Count; i++)
            {
                T_HR_ATTENDFREELEAVE entTemp = new T_HR_ATTENDFREELEAVE();
                entTemp.ATTENDFREELEAVEID = System.Guid.NewGuid().ToString();
                entTemp.T_HR_LEAVETYPESET = entLeaveTypeSets[i] as T_HR_LEAVETYPESET;
                entTemp.T_HR_ATTENDANCESOLUTION = entAttSol;

                entTemp.CREATEDATE = DateTime.Now;
                entTemp.CREATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID;
                entTemp.UPDATEDATE = System.DateTime.Now;
                entTemp.UPDATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID;

                entListTemp.Add(entTemp);
            }

            if (entListTemp.Count > 0)
            {
                flag = true;
            }

            return flag;
        }
Example #31
0
        /// <summary>
        /// 效验输入基本信息内容
        /// </summary>
        /// <param name="entAttSol"></param>
        private void CheckSubmitForm(ref T_HR_ATTENDANCESOLUTION entAttSol)
        {
            if (entAttSol == null)
            {
                return;
            }

            decimal dAdjustExpiredValue = 0;
            decimal dYouthAdjustExpiredValue = 0;
            if (cbxkAnnualLeaveSet.SelectedItem == null)
            {
                Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ANNUALLEAVESET"), string.Format(Utility.GetResourceStr("REQUIRED"), Utility.GetResourceStr("ANNUALLEAVESET")));
                //entAttSol = null;
                return;
            }
            else
            {
                T_SYS_DICTIONARY entDic = cbxkAnnualLeaveSet.SelectedItem as T_SYS_DICTIONARY;
                if (string.IsNullOrEmpty(entDic.DICTIONARYID) || string.IsNullOrEmpty(entDic.DICTIONCATEGORY) || string.IsNullOrEmpty(entDic.DICTIONARYVALUE.ToString()))
                {
                    Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ANNUALLEAVESET"), string.Format(Utility.GetResourceStr("REQUIRED"), Utility.GetResourceStr("ANNUALLEAVESET")));
                    entAttSol = null;
                    return;
                }

                entAttSol.ANNUALLEAVESET = entDic.DICTIONARYVALUE.Value.ToString();
            }

            if (dgLeaveSetlist.ItemsSource == null)
            {
                Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("LEAVESETFORM"), string.Format(Utility.GetResourceStr("REQUIRED"), Utility.GetResourceStr("LEAVESETFORM")));
                return; 
            }
            //注释原因:在加班单终审时没有进行加1判断
            //entAttendanceSolution.ISEXPIRED = (Convert.ToInt32(IsChecked.No) + 1).ToString();
            entAttendanceSolution.ISEXPIRED = (Convert.ToInt32(IsChecked.No)).ToString();
            entAttendanceSolution.YOUTHEXTEND = (Convert.ToInt32(IsChecked.No)).ToString();
            entAttSol.ISEXPIRED = (Convert.ToInt32(IsChecked.No)).ToString();
            entAttSol.YOUTHEXTEND = (Convert.ToInt32(IsChecked.No)).ToString();
            if (cbIsExpired.IsChecked.Value == true)
            {
                //entAttendanceSolution.ISEXPIRED = (Convert.ToInt32(IsChecked.Yes) + 1).ToString();
                //entAttSol.ISEXPIRED = (Convert.ToInt32(IsChecked.Yes) + 1).ToString();
                entAttendanceSolution.ISEXPIRED = (Convert.ToInt32(IsChecked.Yes)).ToString();
                entAttSol.ISEXPIRED = (Convert.ToInt32(IsChecked.Yes)).ToString();
                decimal.TryParse(nudAdjustExpiredValue.Value.ToString(), out dAdjustExpiredValue);
                if (dAdjustExpiredValue <= 0)
                {
                    Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ADJUSTEXPIREDVALUE"), string.Format(Utility.GetResourceStr("DATECOMPARE"), Utility.GetResourceStr("ADJUSTEXPIREDVALUE"), "0"));
                    entAttSol = null;
                    return;
                }
            }
            if (cbYouthIsExpired.IsChecked.Value == true)
            {                
                entAttendanceSolution.YOUTHEXTEND = (Convert.ToInt32(IsChecked.Yes)).ToString();
                entAttSol.YOUTHEXTEND = (Convert.ToInt32(IsChecked.Yes)).ToString();
                decimal.TryParse(nudYouthAdjustExpiredValue.Value.ToString(), out dYouthAdjustExpiredValue);
                if (dYouthAdjustExpiredValue <= 0)
                {
                    Utility.ShowCustomMessage(MessageTypes.Error, "提示", "三八五四延长时间不能小于或等于0");
                    entAttSol = null;
                    return;
                }
            }

            entAttSol.ADJUSTEXPIREDVALUE = dAdjustExpiredValue;
            entAttSol.YOUTHEXTENDVALUE = dYouthAdjustExpiredValue;
        }
Example #32
0
        /// <summary>
        /// 根据主键索引,获得指定的假期记录以便查看编辑
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void clientAtt_GetAttendanceSolutionByIDCompleted(object sender, GetAttendanceSolutionByIDCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                entAttendanceSolution = e.Result;
                if (FormType == FormTypes.Resubmit)
                {
                    entAttendanceSolution.CHECKSTATE = Convert.ToInt32(CheckStates.UnSubmit).ToString();
                }

                entAttendanceSolution.UPDATEDATE = DateTime.Now;
                entAttendanceSolution.UPDATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID;

                this.DataContext = entAttendanceSolution;

                cbIsCurrentMonth.IsChecked = false;
                if (entAttendanceSolution.ISCURRENTMONTH == (Convert.ToInt32(IsChecked.Yes) + 1).ToString())
                {
                    cbIsCurrentMonth.IsChecked = true;
                }

                //如果ISAUTOIMPORTPUNCH=0 表示不自动导入; =1表示自动导入
                if (entAttendanceSolution.ISAUTOIMPORTPUNCH=="0")
                {
                    this.RadN.IsChecked = true;
                }
                else
                {
                    this.RadY.IsChecked = true;
                }

                if (entAttendanceSolution.CHECKSTATE != Convert.ToInt32(CheckStates.UnSubmit).ToString())
                {
                    UnEnableFormControl();
                    this.ucOTReward.IsEnabled = false;
                    this.ucDeduct.IsEnabled = false;
                    this.ucDef.IsEnabled = false;
                    this.ucLeave.IsEnabled = false;
                }

                RefreshUI(RefreshedTypes.AuditInfo);
                SetToolBar();
            }
            else
            {
                Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ERROR"), Utility.GetResourceStr(e.Error.Message));
            }
        }
Example #33
0
        /// <summary>
        /// 获取考勤方案对应的考勤异常配置信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void clientAtt_GetAttendanceSolutionDeductRdListByAttSolIDCompleted(object sender, GetAttendanceSolutionDeductRdListByAttSolIDCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                entAttendanceSolutionDeducts = e.Result;

                if (entAttendanceSolutionDeducts == null)
                {
                    entAttendanceSolutionDeducts = new ObservableCollection<T_HR_ATTENDANCESOLUTIONDEDUCT>();
                }

                if (entAttendanceSolutionDeducts.Count > 0)
                {
                    entAttendanceSolution = new T_HR_ATTENDANCESOLUTION();

                    entAttendanceSolution = entAttendanceSolutionDeducts[0].T_HR_ATTENDANCESOLUTION;
                    nudLostCardTimes.Value = double.Parse(entAttendanceSolution.ALLOWLOSTCARDTIMES.Value.ToString());
                    nudLateMaxMinute.Value = double.Parse(entAttendanceSolution.ALLOWLATEMAXMINUTE.Value.ToString());
                    nudLateMaxTimes.Value = double.Parse(entAttendanceSolution.ALLOWLATEMAXTIMES.Value.ToString());

                    entAttendanceDeductMasters = new ObservableCollection<T_HR_ATTENDANCEDEDUCTMASTER>();
                    foreach (T_HR_ATTENDANCESOLUTIONDEDUCT item in entAttendanceSolutionDeducts)
                    {
                        entAttendanceDeductMasters.Add(item.T_HR_ATTENDANCEDEDUCTMASTER);
                    }

                    if (entAttendanceDeductMasters.Count > 0)
                    {
                        dgAttendanceDeductlist.ItemsSource = entAttendanceDeductMasters;
                    }
                }

                this.DataContext = entAttendanceSolutionDeducts;
            }
            else
            {
                Utility.ShowCustomMessage(MessageTypes.Error, Utility.GetResourceStr("ERROR"), Utility.GetResourceStr(e.Error.Message));
            }
        }
Example #34
0
 public string ModifyAttendanceSolutionAndChangeRelation(T_HR_ATTENDANCESOLUTION entTemp, List<T_HR_ATTENDANCESOLUTIONDEDUCT> entAttendanceSolutionDeducts, List<T_HR_ATTENDFREELEAVE> entAttendFreeLeaves)
 {
     using (AttendanceSolutionBLL bllAttendanceSolution = new AttendanceSolutionBLL())
     {
         return bllAttendanceSolution.ModifyAndChangeRelation(entTemp, entAttendanceSolutionDeducts, entAttendFreeLeaves);
     }
 }
Example #35
0
        /// <summary>
        /// 效验输入基本信息内容
        /// </summary>
        /// <param name="entAttSol"></param>
        private void CheckSubmitForm(ref T_HR_ATTENDANCESOLUTION entAttSol)
        {
            if (entAttSol == null)
            {
                return;
            }

            decimal dAllowLostCardTimes = 0, dAllowLateMaxMinute = 0, dAllowLateMaxTimes = 0;

            decimal.TryParse(nudLostCardTimes.Value.ToString(), out dAllowLostCardTimes);
            decimal.TryParse(nudLateMaxMinute.Value.ToString(), out dAllowLateMaxMinute);
            decimal.TryParse(nudLateMaxTimes.Value.ToString(), out dAllowLateMaxTimes);

            entAttSol.ALLOWLOSTCARDTIMES = dAllowLostCardTimes;
            entAttSol.ALLOWLATEMAXMINUTE = dAllowLateMaxMinute;
            entAttSol.ALLOWLATEMAXTIMES = dAllowLateMaxTimes;
        }
Example #36
0
        /// <summary>
        /// 计算外出确认时长
        /// </summary>
        /// <param name="strEmployeeId"></param>
        /// <param name="dtOTStart"></param>
        /// <param name="dtOTEnd"></param>
        /// <param name="dOverTimeHours"></param>
        /// <returns></returns>
        public string CalculateOverTimeHours(string strEmployeeId, DateTime dtOTStart, DateTime dtOTEnd, ref string dOverTimeHours)
        {
            string  strRes = string.Empty;
            decimal dTotalOverTimeHours = 0;

            DateTime dtStart, dtEnd = new DateTime();

            dtStart = dtOTStart;
            dtEnd   = dtOTEnd;
            //DateTime.TryParse(dtOTStart.ToString("yyyy-MM-dd"), out dtStart);        //获取请假起始日期
            //DateTime.TryParse(dtOTEnd.ToString("yyyy-MM-dd"), out dtEnd);            //获取请假截止日期
            AttendanceSolutionAsignBLL   bllAttendSolAsign = new AttendanceSolutionAsignBLL();
            T_HR_ATTENDANCESOLUTIONASIGN entAttendSolAsign = bllAttendSolAsign.GetAttendanceSolutionAsignByEmployeeIDAndDate(strEmployeeId, dtStart);

            if (entAttendSolAsign == null)
            {
                //当前员工没有分配考勤方案,无法提交请假申请
                return("没有找到员工分配的考勤方案!");
            }

            //获取考勤方案
            T_HR_ATTENDANCESOLUTION entAttendSol = entAttendSolAsign.T_HR_ATTENDANCESOLUTION;
            decimal dWorkTimePerDay = entAttendSol.WORKTIMEPERDAY.Value;
            decimal dWorkMode       = entAttendSol.WORKMODE.Value;
            int     iWorkMode       = 0;

            int.TryParse(dWorkMode.ToString(), out iWorkMode);//获取工作制(工作天数/周)

            List <int> iWorkDays = new List <int>();

            Utility.GetWorkDays(iWorkMode, ref iWorkDays);

            OutPlanDaysBLL bllOutPlanDays = new OutPlanDaysBLL();
            IQueryable <T_HR_OUTPLANDAYS> entOutPlanDays = bllOutPlanDays.GetOutPlanDaysRdListByEmployeeID(strEmployeeId);

            string strVacDayType  = (Convert.ToInt32(Common.OutPlanDaysType.Vacation) + 1).ToString();
            string strWorkDayType = (Convert.ToInt32(Common.OutPlanDaysType.WorkDay) + 1).ToString();
            IQueryable <T_HR_OUTPLANDAYS> entVacDays  = entOutPlanDays.Where(s => s.DAYTYPE == strVacDayType);
            IQueryable <T_HR_OUTPLANDAYS> entWorkDays = entOutPlanDays.Where(s => s.DAYTYPE == strWorkDayType && s.STARTDATE >= dtStart && s.ENDDATE <= dtEnd);

            SchedulingTemplateDetailBLL bllTemplateDetail = new SchedulingTemplateDetailBLL();
            IQueryable <T_HR_SCHEDULINGTEMPLATEDETAIL> entTemplateDetails = bllTemplateDetail.GetTemplateDetailRdListByAttendanceSolutionId(entAttendSol.ATTENDANCESOLUTIONID);
            T_HR_SCHEDULINGTEMPLATEMASTER entTemplateMaster = entTemplateDetails.FirstOrDefault().T_HR_SCHEDULINGTEMPLATEMASTER;

            dtEnd   = new DateTime(dtEnd.Year, dtEnd.Month, dtEnd.Day, dtEnd.Hour, dtEnd.Minute, 0);
            dtStart = new DateTime(dtStart.Year, dtStart.Month, dtStart.Day, dtStart.Hour, dtStart.Minute, 0);
            TimeSpan ts      = dtEnd.Subtract(dtStart);
            int      iOTDays = ts.Days;
            string   strMsg  = string.Empty;

            dTotalOverTimeHours = iOTDays * dWorkTimePerDay + ts.Hours;
            if (dTotalOverTimeHours > 0)
            {
                dOverTimeHours = Math.Round(dTotalOverTimeHours, 0) + "小时";
            }
            if (ts.Minutes > 0)
            {
                dOverTimeHours = dOverTimeHours + ts.Minutes + "分";
            }
            return(strRes + strMsg);
        }
Example #37
0
        public bool Save(out T_HR_ATTENDANCESOLUTION entAttSol)
        {
            bool flag = false;
            entAttSol = new T_HR_ATTENDANCESOLUTION();

            CheckSubmitForm(out flag);

            if (!flag)
            {
                entAttSol = null;
                return false;
            }

            entAttSol = Utility.Clone(entAttendanceSolution);
            flag = true;
            return flag;
        }