void cbCa_SelectionChangeCommitted(object sender, EventArgs e) { cCaAbs ca = (cbCa.SelectedItem) as cCaAbs; if (ca == null) { AutoClosingMessageBox.Show("ca null", "", 1000); return; } DateTime ngay = DateTime.Today.Date; if (ca.ID == 0 || ca.ID == int.MinValue || ca.ID == int.MinValue + 1) { dtpBDLam.Value = new DateTime(ngay.Year, ngay.Month, ngay.Day, 0, 0, 0); dtpKTLam.Value = new DateTime(ngay.Year, ngay.Month, ngay.Day, 0, 0, 0); dtpBDLam.Update(); dtpKTLam.Update(); return; } // chọn ca 1, 2 ,.... DateTime timeBD = ngay.Add(ca.OnnTS); DateTime timeKT = ngay.Add(ca.OffTS); dtpBDLam.Value = timeBD; dtpKTLam.Value = timeKT; }
private void cbCa_SelectedIndexChanged(object sender, EventArgs e) { cCaAbs tmpCa = (cCaAbs)cbCa.SelectedItem; DateTime gio = (radVao.Checked) ? dateTimeGioMoi.Value.Date.Add(tmpCa.OnnTS) : dateTimeGioMoi.Value.Date.Add(tmpCa.OffTS); dateTimeGioMoi.Value = new DateTime(gio.Year, gio.Month, gio.Day, gio.Hour, gio.Minute, 0); }
private bool DuDieuKienTach(cChkInOut CIO, cCaAbs caMoi) { var ca3 = ((cCaChuan)caMoi).catruoc; var ca1 = ((cCaChuan)caMoi).casauuu; var ngay = CIO.ThuocNgayCong; if (ngay.Add(ca3.OffTS).Subtract(XL2._30phut) < CIO.Vao.Time || CIO.Raa.Time < ngay.Add(ca1.OnnTS).Add(XL2._30phut)) { return(false); } return(true); }
void dateTimeGioMoi_ValueChanged(object sender, EventArgs e) { cCaAbs tmpCa = (cCaAbs)cbCa.SelectedItem; bool tmpCheckIn = radVao.Checked; if (!((tmpCheckIn && dateTimeGioMoi.Value.TimeOfDay == tmpCa.OnnTS) || (tmpCheckIn == false && dateTimeGioMoi.Value.TimeOfDay == tmpCa.OffTS))) { cbCa.SelectedIndexChanged -= cbCa_SelectedIndexChanged; cbCa.SelectedIndex = 0; cbCa.Refresh(); cbCa.SelectedIndexChanged += cbCa_SelectedIndexChanged; } }
private void switchButton1_ValueChanged(object sender, EventArgs e) { cCaAbs tmpCa = (cCaAbs)cbCa.SelectedItem; bool tmpKieuGioVao = radVao.Checked; if (!((tmpKieuGioVao && dateTimeGioMoi.Value.TimeOfDay == tmpCa.OnnTS) || (tmpKieuGioVao == false && dateTimeGioMoi.Value.TimeOfDay == tmpCa.OffTS))) { cbCa.SelectedIndexChanged -= cbCa_SelectedIndexChanged; cbCa.SelectedIndex = 0; cbCa.Refresh(); cbCa.SelectedIndexChanged += cbCa_SelectedIndexChanged; } lbKieuGio.Text = string.Format("Giờ {0}", (radVao.Checked ? "vào" : "ra")); }
private void linkTinhLaiCong_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { var ngay = DateTime.Today; TimeSpan timespanBD = dtpBDLam.Value.TimeOfDay; TimeSpan timeSpanKT = dtpKTLam.Value.TimeOfDay; var timeBD = ngay.Add(timespanBD); var timeKT = ngay.Add(timeSpanKT); if (timespanBD > timeSpanKT) { timeKT = timeKT.AddDays(1d); } cCaAbs ca = cbCa.SelectedItem as cCaAbs; if (ca == null) { AutoClosingMessageBox.Show("ca null", "", 1000); return; } var sophutOT = (checkXNLamThem.Checked && numSoPhutOT.Value > 0) ? (int)numSoPhutOT.Value : 0; var tinhPCTC = (checkTinhPC150.Checked); var tongGioLam = TimeSpan.Zero; var Cong = 0d; var Phucap = 0d; if (ca.QuaDem && timespanBD < timeSpanKT && timespanBD < XL2._04h30) { timeBD = timeBD.AddDays(1d); timeKT = timeKT.AddDays(1d); } TinhToan(ngay, ca.ID, ca.WorkingTimeTS, ca.Workingday, ca.LunchMin, ngay.Add(ca.OnnTS), ngay.Add(ca.OffTS), ngay.Add(ca.chophepTreTS), ngay.Add(ca.chophepSomTS), timeBD, timeKT, sophutOT, tinhPCTC, out tongGioLam, out Cong, out Phucap); tbGioLam.Text = tongGioLam.TotalHours.ToString("#0.##"); tbCong.Text = Cong.ToString("0.0#"); tbPC.Text = Phucap.ToString("0.0#"); }
private void btnThucHien_Click(object sender, EventArgs e) { #region kiểm tra kết nối csdl trước khi thực hiện if (SqlDataAccessHelper.TestConnection(SqlDataAccessHelper.ConnectionString) == false) { AutoClosingMessageBox.Show("Mất kết nối với CSDL. Vui lòng thử lại sau.", "Lỗi", 2000); return; } #endregion #region lấy và kiểm tra dsnv được chọn BindingContext[dgrdDSNVTrgPhg.DataSource].EndCurrentEdit(); //2. lấy danh sách nhân viên check, nếu chưa có nv nào check thì thông báo IEnumerable <DataGridViewRow> lstGridViewRow = dgrdDSNVTrgPhg.Rows.Cast <DataGridViewRow>(); var listDataRow = from row in (lstGridViewRow)select row.DataBoundItem as DataRowView; var listNV = (from rowView in listDataRow where (rowView["check"] != DBNull.Value && (bool)rowView["check"]) select((cUserInfo)rowView["cUserInfo"]).MaCC).ToArray(); if (listNV.Length == 0) { AutoClosingMessageBox.Show("Bạn chưa chọn Nhân viên", "Thông báo", 2000); return; } #endregion #region lấy ds các ngày đã check var DSNgayCheck = checklistNgay.Items.Cast <object>().Where((t, i) => checklistNgay.GetItemChecked(i)).Cast <DateTime>().ToList(); if (DSNgayCheck.Count == 0) { AutoClosingMessageBox.Show("Bạn chưa chọn ngày làm việc.", "Thông báo", 2000); return; } #endregion #region lấy ca được chọn // kiểm tra chọn ca làm việc chưa? chưa thì báo cCaAbs ca = cbCa.SelectedItem as cCaAbs; if (ca == null || cbCa.SelectedIndex == 0) { AutoClosingMessageBox.Show("Bạn chưa chọn ca làm việc.", "Thông báo", 1500); return; } #endregion #region lấy check xác nhận làm thêm và check pc 50, lý do, ghi chú string lydo = (cbLyDo.SelectedItem != null) ? cbLyDo.SelectedItem.ToString() : cbLyDo.SelectedText; string ghichu = tbGhiChu.Text; #endregion #region lấy thời gian //đã chọn ca làm việc /* * TimeSpan tgInn = dtpBDLam.Value.TimeOfDay; * TimeSpan tgOut = dtpKTLam.Value.TimeOfDay; * if (tgInn > tgOut) tgOut = tgOut.Add(XL2._1ngay); */ var ngay1 = DateTime.Today.Date; TimeSpan TimeSpanBD = dtpBDLam.Value.TimeOfDay; TimeSpan TimeSpanKT = dtpKTLam.Value.TimeOfDay; var timeBD = ngay1.Add(TimeSpanBD); var timeKT = ngay1.Add(TimeSpanKT); if (TimeSpanBD > TimeSpanKT) { timeKT = timeKT.AddDays(1d); } var sophutOT = (checkXNLamThem.Checked && numSoPhutOT.Value > 0) ? (int)numSoPhutOT.Value : 0; var TinhPCTC = (checkTinhPC150.Checked); var giolam = TimeSpan.Zero; var Cong = 0d; var PhuCap = 0d; #endregion var TreSomTinhCV = checkTreSomTinhCV.Checked; if (ca.QuaDem && TimeSpanBD < TimeSpanKT && TimeSpanBD < XL2._04h30) { timeBD = timeBD.AddDays(1d); timeKT = timeKT.AddDays(1d); } if (TinhToan(ngay1, ca.ID, ca.WorkingTimeTS, ca.Workingday, ca.LunchMin, ngay1.Add(ca.OnnTS), ngay1.Add(ca.OffTS), ngay1.Add(ca.chophepTreTS), ngay1.Add(ca.chophepSomTS), timeBD, timeKT, sophutOT, TinhPCTC, out giolam, out Cong, out PhuCap) == false) { return; } bool flagError = false; #region hỏi lại trước khi thực hiện if ( MessageBox.Show( "Bạn muốn thêm các giờ chấm công tay cho các nhân viên?\nVui lòng kiểm tra kỹ thời gian nhập để không làm sai lệch công của nhân viên.", Resources.capXacNhan, MessageBoxButtons.YesNo) == DialogResult.No) { return; } #endregion foreach (var macc in listNV) { foreach (var ngay in DSNgayCheck) { DateTime TimeStrInn = ngay.Date.Add(TimeSpanBD); DateTime TimeStrOut = ngay.Date.Add(TimeSpanKT); if (TimeSpanBD > TimeSpanKT) { TimeStrOut = TimeStrOut.AddDays(1d); } if (ca.QuaDem && TimeSpanBD < TimeSpanKT && TimeSpanBD < XL2._04h30) { TimeStrInn = TimeStrInn.AddDays(1d); TimeStrOut = TimeStrOut.AddDays(1d); } if (ca.ID == int.MinValue) { XL.TaoCaTuDo((cCaTuDo)ca, TimeStrInn, XL2._08gio, XL2.ChoPhepTre, XL2.ChoPhepSom, XL2.LamThemAfterOT, 1f, "8"); } else if (ca.ID == int.MinValue + 1) { XL.TaoCaTuDo((cCaTuDo)ca, TimeStrInn, XL2._12gio, XL2.ChoPhepTre, XL2.ChoPhepSom, XL2.LamThemAfterOT, 1.5f, "D"); } if (ngay <= XL2.ThangKetCong && XL2.ThangKetCong != DateTime.MinValue) { continue; //tbd temp patch } if (checkXNLamThem.Checked || TinhPCTC || TreSomTinhCV) //1.có XN làm thêm --> thêm giờ XN, 2.không xác nhận làm thêm thì thêm giờ A { var nv = new cUserInfo { MaCC = macc, }; var chkinn = new cChkInn_A { Time = TimeStrInn, Type = "I", MachineNo = 21, Source = "PC", PhucHoi = new cPhucHoi { Them = true, IDGioGoc = -1, Xoaa = false } }; var chkout = new cChkOut_A { Time = TimeStrOut, Type = "O", MachineNo = 22, Source = "PC", PhucHoi = new cPhucHoi { Them = true, IDGioGoc = -1, Xoaa = false } }; var cio_a = new cChkInOut_A { Vao = chkinn, Raa = chkout, TimeDaiDien = chkinn.Time, HaveINOUT = 0, ThuocCa = ca, ThuocNgayCong = XL.ThuocNgayCong(TimeStrInn), TD = new ThoiDiem(), }; XL.ThemGioChoNVQL(chkinn, nv, XL2.currUserID, lydo, ghichu); XL.ThemGioChoNVQL(chkout, nv, XL2.currUserID, lydo, ghichu); if (ca.TachCa) { XL.XacNhanCoTachCaChoQL(nv, cio_a, ca, sophutOT, TinhPCTC, TreSomTinhCV); } else { XL.XacNhanKoTachCaChoQL(nv, cio_a, ca, sophutOT, TinhPCTC, TreSomTinhCV); } } else // không xác nhận làm thêm thì thêm giờ A { XL.ThemGioChoNVQL(new cChkInn_A { Time = TimeStrInn, Type = "I", MachineNo = 21, Source = "PC", PhucHoi = new cPhucHoi { Them = true, IDGioGoc = -1, Xoaa = false } }, new cUserInfo { MaCC = macc }, XL2.currUserID, lydo, ghichu); XL.ThemGioChoNVQL(new cChkOut_A { Time = TimeStrOut, Type = "O", MachineNo = 22, Source = "PC", PhucHoi = new cPhucHoi { Them = true, IDGioGoc = -1, Xoaa = false } }, new cUserInfo { MaCC = macc }, XL2.currUserID, lydo, ghichu); XL.CheckTinhPC50(new cUserInfo { MaCC = macc }, (TimeStrInn.TimeOfDay < XL2._04h30 ? TimeStrInn.Date.AddDays(-1) : TimeStrInn.Date), TinhPCTC); } } } if (flagError) { AutoClosingMessageBox.Show("Thêm giờ chấm công tay cho các nhân viên thành công.", "Thông báo", 2000); } }
private void btnThucHien_Click(object sender, EventArgs e) { if (SqlDataAccessHelper.TestConnection(SqlDataAccessHelper.ConnectionString) == false) { AutoClosingMessageBox.Show("Mất kết nối với CSDL. Vui lòng thử lại sau.", "Lỗi", 2000); return; } // kiểm tra chọn ca làm việc chưa? chưa thì báo cCaAbs ca = cbCa.SelectedItem as cCaAbs; if (ca == null || cbCa.SelectedIndex == 0) { AutoClosingMessageBox.Show("Bạn chưa chọn ca làm việc.", "Thông báo", 1500); return; } //đã chọn ca làm việc var ngay = dtpNgay.Value.Date; TimeSpan timespanBD = dtpBDLam.Value.TimeOfDay; TimeSpan timeSpanKT = dtpKTLam.Value.TimeOfDay; var timeBD = ngay.Add(timespanBD); var timeKT = ngay.Add(timeSpanKT); if (timespanBD > timeSpanKT) { timeKT = timeKT.AddDays(1d); } var sophutOT = (checkXNLamThem.Checked && numSoPhutOT.Value > 0) ? (int)numSoPhutOT.Value : 0; var TinhPCTC = (checkTinhPC150.Checked); var TreSomTinhCV = checkTreSomTinhCV.Checked; var giolam = TimeSpan.Zero; var Cong = 0d; var PhuCap = 0d; if (ca.QuaDem && timespanBD < timeSpanKT && timespanBD < XL2._04h30) { timeBD = timeBD.AddDays(1d); timeKT = timeKT.AddDays(1d); } if (TinhToan(ngay, ca.ID, ca.WorkingTimeTS, ca.Workingday, ca.LunchMin, ngay.Add(ca.OnnTS), ngay.Add(ca.OffTS), ngay.Add(ca.chophepTreTS), ngay.Add(ca.chophepSomTS), timeBD, timeKT, sophutOT, TinhPCTC, out giolam, out Cong, out PhuCap) == false) { tbGioLam.Text = giolam.TotalHours.ToString("#0.##"); tbCong.Text = Cong.ToString("0.0#"); tbPC.Text = PhuCap.ToString("0.0#"); return; } #region hỏi lại trước khi thực hiện if ( MessageBox.Show( "Bạn muốn thêm các giờ chấm công tay cho các nhân viên?\nVui lòng kiểm tra kỹ thời gian nhập để không làm sai lệch công của nhân viên.", Resources.capXacNhan, MessageBoxButtons.YesNo) == DialogResult.No) { return; } #endregion // kiểm tra chọn NV chưa, chưa thì báo DataView tableCheckNV = dgrdDSNVTrgPhg.DataSource as DataView; if (tableCheckNV == null) { return; } DataRow[] arrRows = tableCheckNV.Table.Select("check = true", "UserEnrollNumber asc"); if (arrRows.Length == 0) { AutoClosingMessageBox.Show("Bạn chưa chọn nhân viên.", "Thông báo", 1500); return; } // đã chọn NV, lấy ds mã CC đã chọn string lydo = (cbLyDo.SelectedItem != null) ? cbLyDo.SelectedItem.ToString() : cbLyDo.SelectedText; string ghichu = tbGhiChu.Text; bool flag = true; try { foreach (DataRow row in arrRows) { //dsNVcheck.Add((int)row["UserEnrollNumber"]); int iUserEnrollNumber = (int)row["UserEnrollNumber"]; if (ca.ID == int.MinValue) { XL.TaoCaTuDo((cCaTuDo)ca, timeBD, XL2._08gio, XL2.ChoPhepTre, XL2.ChoPhepSom, XL2.LamThemAfterOT, 1f, "8"); } else if (ca.ID == int.MinValue + 1) { XL.TaoCaTuDo((cCaTuDo)ca, timeBD, XL2._12gio, XL2.ChoPhepTre, XL2.ChoPhepSom, XL2.LamThemAfterOT, 1.5f, "D"); } if (checkXNLamThem.Checked || TinhPCTC || TreSomTinhCV) //1.có XN làm thêm --> thêm giờ XN, 2.không xác nhận làm thêm thì thêm giờ A { var nv = new cUserInfo { MaCC = iUserEnrollNumber, NgayCongBD_Bef2D = ngay.Date.AddDays(-2d), NgayCongKT_Aft2D = ngay.Date.AddDays(2d) }; var chkinn = new cChkInn_A { Time = timeBD, Type = "I", MachineNo = 21, Source = "PC", PhucHoi = new cPhucHoi { Them = true, IDGioGoc = -1, Xoaa = false } }; var chkout = new cChkOut_A { Time = timeKT, Type = "O", MachineNo = 22, Source = "PC", PhucHoi = new cPhucHoi { Them = true, IDGioGoc = -1, Xoaa = false } }; var cio_a = new cChkInOut_A { Vao = chkinn, Raa = chkout, HaveINOUT = 1, ThuocCa = ca, TimeDaiDien = chkinn.Time, ThuocNgayCong = XL.ThuocNgayCong(chkinn.Time), TD = new ThoiDiem() }; if (cio_a.ThuocNgayCong <= XL2.ThangKetCong && XL2.ThangKetCong != DateTime.MinValue) { continue; //tbd temp patch } nv.DS_CIO_A.Add(cio_a); XL.ThemGioChoNV(chkinn, nv, XL2.currUserID, lydo, ghichu); XL.ThemGioChoNV(chkout, nv, XL2.currUserID, lydo, ghichu); if (ca.TachCa) { XL.XacNhanCoTachCa(nv, cio_a, ca, sophutOT, TinhPCTC, TreSomTinhCV); } else { XL.XacNhanKoTachCa(nv, cio_a, ca, sophutOT, TinhPCTC, TreSomTinhCV); } } else //2.không xác nhận làm thêm thì thêm giờ A { if (timeBD.Date <= XL2.ThangKetCong && XL2.ThangKetCong != DateTime.MinValue) { continue; //tbd temp patch } var nv = new cUserInfo { MaCC = iUserEnrollNumber, NgayCongBD_Bef2D = ngay.Date.AddDays(-2d), NgayCongKT_Aft2D = ngay.Date.AddDays(2d) }; XL.ThemGioChoNV(new cChkInn_A { Time = timeBD, Type = "I", MachineNo = 21, Source = "PC", PhucHoi = new cPhucHoi { Them = true, IDGioGoc = -1, Xoaa = false } }, new cUserInfo { MaCC = iUserEnrollNumber }, XL2.currUserID, lydo, ghichu); XL.ThemGioChoNV(new cChkOut_A { Time = timeKT, Type = "O", MachineNo = 22, Source = "PC", PhucHoi = new cPhucHoi { Them = true, IDGioGoc = -1, Xoaa = false } }, new cUserInfo { MaCC = iUserEnrollNumber }, XL2.currUserID, lydo, ghichu); XL.CheckTinhPC50(nv, (timeBD.TimeOfDay < XL2._04h30 ? timeBD.Date.AddDays(-1) : timeBD.Date), TinhPCTC); } } } catch (Exception exception) { lg.Error("", exception); } if (flag) { AutoClosingMessageBox.Show("Thêm giờ chấm công tay cho các nhân viên thành công.", "Thông báo", 2000); } }