Exemple #1
0
        // 加载异常考勤信息
        private void AnormalySalaryEditForm_Load(object sender, EventArgs e)
        {
            if (this._hrDaily_begUpdate != null)
            {
                this.lblEmployeeName.Text   = this._hrDaily_begUpdate.EmployeeName;
                this.lblNote.Text           = this._hrDaily_begUpdate.Note;
                this.lblShouldCheckIn.Text  = this._hrDaily_begUpdate.ShouldCheckIn.Value.ToString("HH:mm");
                this.lblShouldCheckOut.Text = this._hrDaily_begUpdate.ShouldCheckOut.Value.ToString("HH:mm");
                this.lblActualCheckIn.Text  = this._hrDaily_begUpdate.ActualCheckIn == global::Helper.DateTimeParse.NullDate ? "" : this._hrDaily_begUpdate.ActualCheckIn.Value.ToString("HH:mm");
                this.lblActualCheckOut.Text = this._hrDaily_begUpdate.ActualCheckOut == global::Helper.DateTimeParse.NullDate ? "" : this._hrDaily_begUpdate.ActualCheckOut.Value.ToString("HH:mm");
                this.lblDutyDate.Text       = this._hrDaily_begUpdate.DutyDate.Value.ToString("HH:mm");

                //获取重新考勤之后的结果
                Model.Employee emp = new BL.EmployeeManager().Get(this._hrDaily_begUpdate.EmployeeId);
                this._hrDaily = new BL.HrDailyEmployeeAttendInfoManager().Reatten_Controller(this._hrDaily_begUpdate.DutyDate.Value, emp);
                if (this._hrDaily != null)
                {
                    this.ShouldCheckIn.Text              = this._hrDaily.ShouldCheckIn.Value.ToString("HH:mm");
                    this.ShouldCheckOut.Text             = this._hrDaily.ShouldCheckOut.Value.ToString("HH:mm");
                    this.txtActualCheckInTime.EditValue  = this._hrDaily.ActualCheckIn == null ? "" : this._hrDaily_begUpdate.ActualCheckIn.Value.ToString("HH:mm");
                    this.txtActualCheckOutTime.EditValue = this._hrDaily.ActualCheckOut == null ? "" : this._hrDaily_begUpdate.ActualCheckOut.Value.ToString("HH:mm");
                    this.Note.Text = this._hrDaily.Note;
                }
            }
        }
        //保存修改
        private void barBtn_save_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            #region 原方法
            //if (this.txtActualCheckInTime.Text != string.Empty)
            //{
            //    try
            //    {
            //        this._hrDaily.ActualCheckIn = DateTime.Parse(this._hrDaily_begUpdate.DutyDate.Value.ToString("yyyy-MM-dd") + " " + this.txtActualCheckInTime.Text);
            //    }
            //    catch (Exception ex)
            //    {
            //        MessageBox.Show("輸入時間格式有誤,請查證!");
            //        return;
            //    }
            //}
            //else
            //{
            //    MessageBox.Show("實際上班時間不能為空!");
            //    return;
            //}
            //if (this.txtActualCheckOutTime.Text != string.Empty)
            //{
            //    try
            //    {
            //        this._hrDaily.ActualCheckOut = DateTime.Parse(this._hrDaily_begUpdate.DutyDate.Value.ToString("yyyy-MM-dd") + " " + this.txtActualCheckOutTime.Text);
            //    }
            //    catch (Exception ex)
            //    {
            //        MessageBox.Show("輸入時間格式有誤,請查證!");
            //        return;
            //    }
            //}
            //else
            //{
            //    MessageBox.Show("實際下班時間不能為空!");
            //    return;
            //}

            ////判断换日
            //TimeSpan? ts_1 = this._hrDaily.ShouldCheckIn - this._hrDaily.ActualCheckIn;
            //if (Math.Abs(ts_1.Value.Days * 24 + ts_1.Value.Hours) > 13)
            //    this._hrDaily.ActualCheckIn = this._hrDaily.ActualCheckIn.Value.AddDays(1);
            //TimeSpan? ts_2 = this._hrDaily.ShouldCheckOut - this._hrDaily.ActualCheckOut;
            //if (Math.Abs(ts_2.Value.Days * 24 + ts_2.Value.Hours) > 13)
            //    this._hrDaily.ActualCheckOut = this._hrDaily.ActualCheckOut.Value.AddDays(1);

            //if (this._hrDaily.ActualCheckIn > this._hrDaily.ActualCheckOut)
            //{
            //    MessageBox.Show("實際上班時間,不能大於實際下班時間!");
            //    return;
            //}

            //if (this._hrDaily.MLeave != null)
            //{
            //    if (this._hrDaily.MLeave.LeaveRange != 0)
            //    {
            //        this._hrDaily.DayFactor = 0.5 + 0.5 * this._hrDaily.MLeave.LeaveType.PayRate;
            //        this._hrDaily.SpecialBonus = Convert.ToInt32(Convert.ToDouble(this._hrDaily.MBusinessHours.SpecialPay) * 0.5);
            //        this._hrDaily.MonthFactor = 1;
            //        if (this._hrDaily.MLeave.LeaveRange == 1)
            //        {
            //            this._hrDaily.Note = this._hrDaily.MLeave.LeaveType.ToString() + "(上半日)";
            //        }
            //        else
            //        {
            //            this._hrDaily.Note = this._hrDaily.MLeave.LeaveType.ToString() + "(下半日)";
            //        }
            //    }
            //}
            //else
            //{
            //    this._hrDaily.SpecialBonus = Convert.ToInt32(this._hrDaily.MBusinessHours.SpecialPay);
            //    this._hrDaily.DayFactor = 1;
            //}

            //TimeSpan? ts = this._hrDaily.ActualCheckIn - this._hrDaily.ShouldCheckIn;
            //if ((ts.Value.Hours * 60 + ts.Value.Minutes) > 0 && !(this._hrDaily.MLeave != null && this._hrDaily.MLeave.LeaveRange == 0))
            //{
            //    this._hrDaily.LateInMinute = ts.Value.Hours * 60 + ts.Value.Minutes;
            //    this._hrDaily.Note += ";遲到";
            //}
            //else
            //{
            //    this._hrDaily.LateInMinute = 0;
            //}
            //TimeSpan? ts2 = this._hrDaily.ShouldCheckOut - this._hrDaily.ActualCheckOut;
            //if (ts2.Value.Hours * 60 + ts2.Value.Minutes > 0 && !(this._hrDaily.MLeave != null && this._hrDaily.MLeave.LeaveRange == 0))
            //{
            //    this._hrDaily.LateInMinute = ts2.Value.Hours * 60 + ts2.Value.Minutes;
            //    this._hrDaily.Note += ";早退";
            //}

            //this._hrDaily.Note = this._hrDaily.Note.Replace(";卻刷卡資料", "");
            //this._hrDaily.Note = this._hrDaily.Note.Replace("卻刷卡資料", "");

            //this._hrDaily.MonthFactor = 1;  //月基数设为1
            //this._hrDaily.IsNormal = true;  //设置为不存在异常
            //if (this._hrManger.UpdateSave_AnormalySalaryEditForm(this._hrDaily) > 0)//保存修改
            //{
            //    MessageBox.Show(Properties.Resources.SaveSuccess);
            //    this.DialogResult = DialogResult.OK;
            //}
            //else
            //{
            //    MessageBox.Show(Properties.Resources.SavaFailure);
            //}
            #endregion

            #region 新方法,曹瑞 2016年7月16日

            this._hrDaily = _hrManger.Get(this._hrDaily_begUpdate.HrDailyEmployeeAttendInfoId);
            if (this.txtActualCheckInTime.Text != string.Empty)
            {
                try
                {
                    this._hrDaily.ActualCheckIn = DateTime.Parse(this._hrDaily_begUpdate.DutyDate.Value.ToString("yyyy-MM-dd") + " " + this.txtActualCheckInTime.Text);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("輸入時間格式有誤,請查證!");
                    return;
                }
            }
            else
            {
                this._hrDaily.ActualCheckIn = null;
            }
            if (this.txtActualCheckOutTime.Text != string.Empty)
            {
                try
                {
                    this._hrDaily.ActualCheckOut = DateTime.Parse(this._hrDaily_begUpdate.DutyDate.Value.ToString("yyyy-MM-dd") + " " + this.txtActualCheckOutTime.Text);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("輸入時間格式有誤,請查證!");
                    return;
                }
            }
            else
            {
                this._hrDaily.ActualCheckOut = null;
            }
            if (this._hrDaily.ActualCheckIn != null && this._hrDaily.ShouldCheckIn != null)
            {
                TimeSpan?ts_1 = this._hrDaily.ShouldCheckIn - this._hrDaily.ActualCheckIn;
                if (Math.Abs(ts_1.Value.Days * 24 + ts_1.Value.Hours) > 13)
                {
                    this._hrDaily.ActualCheckIn = this._hrDaily.ActualCheckIn.Value.AddDays(1);
                }
            }
            if (this._hrDaily.ActualCheckOut != null && this._hrDaily.ShouldCheckOut != null)
            {
                TimeSpan?ts_2 = this._hrDaily.ShouldCheckOut - this._hrDaily.ActualCheckOut;
                if (Math.Abs(ts_2.Value.Days * 24 + ts_2.Value.Hours) > 13)
                {
                    this._hrDaily.ActualCheckOut = this._hrDaily.ActualCheckOut.Value.AddDays(1);
                }
            }
            try
            {
                DateTime       checkDate = Convert.ToDateTime(this._hrDaily_begUpdate.DutyDate);
                Model.Employee emp       = new BL.EmployeeManager().Get(this._hrDaily_begUpdate.EmployeeId);

                BL.V.BeginTransaction();
                _hrManger.Reatten_Controller(checkDate, emp, this._hrDaily.ActualCheckIn, this._hrDaily.ActualCheckOut);
                MessageBox.Show("訂正成功!", this.Text, MessageBoxButtons.OK);
                BL.V.CommitTransaction();
            }
            catch (Exception ex)
            {
                BL.V.RollbackTransaction();
                MessageBox.Show("訂正失敗!", this.Text, MessageBoxButtons.OK);
                return;
            }

            #endregion
        }