private void btnThem_Capnhat_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương if (XL.Kiemtra(m_thang.Date, MyUtility.LastDayOfMonth(m_thang))) { MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "chỉnh sửa thu chi tháng", "thực hiện thao tác", ""), Resources.Caption_ThongBao, MessageBoxButtons.OK); return; } #endregion #region lấy thông tin từ form int?macc = (int?)lbUserEnrollNumber.Tag; if (macc == null) { ACMessageBox.Show(Resources.Text_ChuaChonNV, Resources.Caption_ThongBao, 2000); return; } double tamung = 0d, thuchiKhac = 0d, luongDieuchinh = 0d; float mucDongBHXH = 0f; if (float.TryParse(tbMucDongBHXH.Text, out mucDongBHXH) == false) { ACMessageBox.Show("Mức đóng BHXH chưa hợp lệ. Vui lòng nhập lại.", Resources.Caption_Loi, 2000); return; } tamung = Convert.ToDouble(numTamUng.Value); thuchiKhac = Convert.ToDouble(numThuchiKhac.Value); luongDieuchinh = Convert.ToDouble(numLuongdieuchinh.Value); #endregion // thực hiện query int kq = DAO5.CapnhatThuchiThang((int)macc, m_thang, luongDieuchinh, tamung, thuchiKhac, mucDongBHXH); DAO5.GhiNhatKyThaotac("Thêm khoản thu chi tháng", string.Format("Thêm tạm ứng [{2}], lương điều chỉnh [{3}], mức đóng BHXH [{4}], thu chi khác [{5}] tháng [{0}]... cho 1 NV có mã chấm công [{1}]", m_thang.ToString("dd/MM/yyyy"), macc, tamung.ToString("###,###,###,###,###,##0"), luongDieuchinh.ToString("###,###,###,###,###,##0"), mucDongBHXH.ToString("#0.00"), thuchiKhac.ToString("###,###,###,###,###,##0")), maCC: macc); if (kq == 0) { MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi); } reloadGridDSThuChi(); }
public static bool HuyKetLuongThang(DateTime ngaydauthang) { var query = @" delete from ThongSoKetLuongThang where Thang=@Thang delete from KetLuongThang where Thang=@Thang " ; var kq = SqlDataAccessHelper.ExecNoneQueryString(query, new string[] { "@Thang" }, new object[] { ngaydauthang }); DAO5.GhiNhatKyThaotac("Huỷ kết lương tháng", string.Format("Huỷ kết lương tháng [{0}]", ngaydauthang.ToString("MM/yyyy"))); if (kq == 0) { return(false); } return(true); }
private void btnXoaKBVang_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương if (XL.Kiemtra(dtpNgayBD.Value.Date, dtpNgayKT.Value.Date)) { MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "xem công", "xoá khai báo vắng", "xem công"), Resources.Caption_ThongBao, MessageBoxButtons.OK); return; } #endregion DataGridView currDataGrid = XacDinhDataGridViewDangChon(); if (MessageBox.Show("Xoá các khai báo vắng của nhân viên với các ngày được chọn?", Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No) { return; } if (currDataGrid.SelectedRows.Count != 0) { IEnumerable <dynamic> arrRecord = (from DataGridViewRow row in currDataGrid.SelectedRows let rowViews = (DataRowView)row.DataBoundItem select new { MaCC = (int)rowViews["UserEnrollNumber"], NgayVang = (DateTime)rowViews["TimeStrNgay"] }).ToList(); if (arrRecord.Any() == false) { return; } string query = " delete from Absent where UserEnrollNumber = @UserEnrollNumber and TimeDate = @TimeDate "; foreach (dynamic obj in arrRecord) { int kq = SqlDataAccessHelper.ExecNoneQueryString( query, new string[] { "@UserEnrollNumber", "@TimeDate" }, new object[] { obj.MaCC, obj.NgayVang }); DAO5.GhiNhatKyThaotac("Xoá các khai báo vắng trong ngày", string.Format("Xoá tất cả khai báo vắng của NV có mã chấm công [{0}] trong ngày [{1}]", (int)obj.MaCC, ((DateTime)obj.NgayVang).ToString("dd/MM/yyyy")), maCC: (int)obj.MaCC); } btnXem.PerformClick(); } }
private void btnXoaKBVang_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } #region chưa chọn nhân viên thì báo var listMaCC_NV = (from DataGridViewRow dataGridViewRow in dgrdTongHop.SelectedRows let row = (DataRowView)dataGridViewRow.DataBoundItem select(int) row["UserEnrollNumber"]).ToList(); if (listMaCC_NV.Count == 0) { ACMessageBox.Show(Resources.Text_ChuaChonNV, Resources.Caption_ThongBao, 2000); return; } #endregion if (MessageBox.Show(string.Format("Xoá tất cả khai báo vắng ngày {0} của các nhân viên được chọn?", dtpNgay.Value.Date.ToString("dddd dd/MM/yyyy")), Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No) { return; } IEnumerable <dynamic> templist = (from macc in listMaCC_NV select new { MaCC = macc, NgayVang = dtpNgay.Value.Date }); string query = " delete from Absent where UserEnrollNumber = @UserEnrollNumber and TimeDate = @TimeDate "; try { foreach (dynamic obj in templist) { SqlDataAccessHelper.ExecNoneQueryString( query, new string[] { "@UserEnrollNumber", "@TimeDate" }, new object[] { obj.MaCC, obj.NgayVang }); DAO5.GhiNhatKyThaotac("Xoá các khai báo vắng trong ngày", string.Format("Xoá tất cả khai báo vắng của NV có mã chấm công [{0}] trong ngày [{1}]", (int)obj.MaCC, ((DateTime)obj.NgayVang).ToString("dd/MM/yyyy")), maCC: (int)obj.MaCC); } } catch (Exception ex) { lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), ex); MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi); } dtpNgay_ValueChanged(null, null); }
private void btnCapNhat_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } #region ko cho cập nhật lương công nhật nếu tháng này đã đã kết lương if (XL.Kiemtra(m_thang, MyUtility.LastDayOfMonth(m_thang))) { MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "cập nhật thông tin làm việc công nhật", "cập nhật thông tin làm việc công nhật", ""), Resources.Caption_ThongBao, MessageBoxButtons.OK); return; } #endregion // lấy thông tin từ form var UserEnrollNumber = (lbUserEnrollNumber.Tag == null) ? -1 : (int)lbUserEnrollNumber.Tag; var DonGiaLuong = (int)numDonGiaLuong.Value; var TamUng = Convert.ToDouble(numTamUng.Value); #region update đơn giá lương , tạm ứng xuống csdl //info ko cần lưu thành tiền vì lúc lưu xuống đã tính thành tiền để có cơ sở tính lương, lúc lấy lên thì tính ra số tổng rồi mới xuất bb string query = @" update DSNVChiCongNhatThang set DonGiaLuong=@DonGiaLuong, TamUng=@TamUng where UserEnrollNumber=@UserEnrollNumber and Thang=@Thang "; int kq2 = SqlDataAccessHelper.ExecNoneQueryString(query, new string[] { "@DonGiaLuong", "@TamUng", "@UserEnrollNumber", "@Thang" }, new object[] { DonGiaLuong, TamUng, UserEnrollNumber, m_thang }); DAO5.GhiNhatKyThaotac("Cập nhật lương công nhật và tạm ứng", string.Format("Cập nhật đơn giá lương công nhật [{1}], tạm ứng [{2}] cho NV có mã chấm công [{0}]", UserEnrollNumber, DonGiaLuong.ToString(Settings.Default.numFormatMoney), TamUng.ToString(Settings.Default.numFormatMoney)), maCC: UserEnrollNumber); #endregion // sau khi cập nhật thì reload lại var table = DAO5.LayTableCongNhat(m_thang); dgrdDSLuongCongnhat.DataSource = table; dgrdDSLuongCongnhat.ClearSelection(); }
private void btnXoa_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương if (XL.Kiemtra(m_thang.Date, MyUtility.LastDayOfMonth(m_thang))) { MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "chỉnh sửa thu chi tháng", "thực hiện thao tác", ""), Resources.Caption_ThongBao, MessageBoxButtons.OK); return; } #endregion #region lấy thông tin từ form int?macc = (int?)lbUserEnrollNumber.Tag; if (macc == null) { ACMessageBox.Show(Resources.Text_ChuaChonNV, Resources.Caption_ThongBao, 2000); return; } #endregion // thực hiện query int kq = SqlDataAccessHelper.ExecNoneQueryString( " delete from DSThuChiThang where Thang=@Thang and UserEnrollNumber=@UserEnrollNumber ", new string[] { "@Thang", "@UserEnrollNumber" }, new object[] { m_thang, macc }); DAO5.GhiNhatKyThaotac("Xoá khoản thu chi tháng", string.Format("Xoá tạm ứng, lương điều chỉnh, mức đóng BHXH, thu chi khác tháng [{0}]... của 1 NV có mã chấm công [{1}]", m_thang.ToString("dd/MM/yyyy"), macc), maCC: macc); if (kq == 0) { MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi); } reloadGridDSThuChi(); }
private void btnXoaTatcaDSThuchiThang_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương if (XL.Kiemtra(m_thang.Date, MyUtility.LastDayOfMonth(m_thang))) { MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "chỉnh sửa thu chi tháng", "thực hiện thao tác", ""), Resources.Caption_ThongBao, MessageBoxButtons.OK); return; } #endregion //xác nhận trước khi xóa string messContent = "Bạn muốn xóa tất cả danh sách thu chi tháng {0}?."; messContent = string.Format(messContent, m_thang.ToString("MM/yyyy")); if (MessageBox.Show(messContent, Resources.Caption_XacNhan) == DialogResult.No) { return; } // thực hiện query int kq = SqlDataAccessHelper.ExecNoneQueryString("delete from DSThuChiThang where thang=@Thang ", new string[] { "@Thang" }, new object[] { m_thang }); DAO5.GhiNhatKyThaotac("Xoá tất cả khoản thu chi tháng", string.Format("Xoá tạm ứng, lương điều chỉnh, mức đóng BHXH, thu chi khác của TẤT CẢ NV tháng [{0}]", m_thang.ToString("dd/MM/yyyy"))); if (kq == 0) { MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi); } reloadGridDSThuChi(); }
private void btnXoa_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } #region lấy ds UserEnrollNumber được chọn BindingContext[dgrdDSNVTrgPhg.DataSource].EndCurrentEdit(); var checkRows = (from DataGridViewRow dataGridViewRow in dgrdDSNVTrgPhg.Rows let row = (DataRowView)dataGridViewRow.DataBoundItem where dataGridViewRow.Cells["check"].FormattedValue != null && (bool)dataGridViewRow.Cells["check"].FormattedValue select(int) row["UserEnrollNumber"]).ToList(); #endregion #region chưa chọn NV thì báo và thoát if (checkRows.Count == 0) { ACMessageBox.Show(Resources.Text_ChuaChonNV, Resources.Caption_ThongBao, 2000); return; } #endregion #region xác nhận trước khi xoá if (MessageBox.Show("Bạn muốn xoá Nhân viên này khỏi CSDL? \nKhi xoá Nhân viên sẽ không thể phục hồi lại nhân viên này.\nCân nhắc sử dụng chức năng vô hiệu hoá trạng thái hoạt động (UserEnabled).\nBấm yes để xoá Nhân viên. Bấm No để quay trở lại.", Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No) { return; } #endregion TreeNode node = treePhongBan.SelectedNode; // sử dụng để reload dgrid var query = " delete from UserInfo where ( UserEnrollNumber = {0} ) "; string temp = string.Join(" or UserEnrollNumber = ", checkRows.ToArray()); query = string.Format(query, temp); int kq = SqlDataAccessHelper.ExecNoneQueryString(query, null, null); foreach (int checkedUEN in checkRows) { DAO5.GhiNhatKyThaotac("Xoá NV khỏi CSDL", string.Format("Xoá NV có mã chấm công [{0}] khỏi CSDL", checkedUEN), maCC: checkedUEN); } if (kq != 0) { ACMessageBox.Show("Xoá Nhân viên thành công.", Resources.Caption_ThongBao, 2000); } else { ACMessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi, 2000); } #region reload grid string oldFilter = string.Empty; var dataView = dgrdDSNVTrgPhg.DataSource as DataView; if (dataView != null) { oldFilter = dataView.RowFilter; } treePhongBan_AfterSelect(treePhongBan, new TreeViewEventArgs(node)); dataView = dgrdDSNVTrgPhg.DataSource as DataView; if (dataView != null) { dataView.RowFilter = oldFilter; } #endregion }
private void btnLuu_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } string maNV = tbMaNV.Text; string hoten = tbHoTenNV.Text.TrimEnd('?', '.', ','); string[] words = hoten.Split(' '); string ten = (words.Last(item => item != string.Empty)); int gioitinh = (radNam.Checked) ? 0 : 1; int maCC; if (int.TryParse(tbMaCC.Text, out maCC) == false) { ACMessageBox.Show("Mã chấm công phải là số hợp lệ.", Resources.Caption_Loi, 2000); return; } string tenCC = tbUserEnrollName.Text; string mathetu = tbMaTheTu.Text; DateTime ngayvaolam = dtpNgayVaoLam.Value.Date; int idchucvu = (int)cbChucVu.SelectedValue; int idphong = (int)cbPhongBan.SelectedValue; string tenphong = (cbPhongBan.SelectedItem != null) ? cbPhongBan.SelectedItem.ToString() : cbPhongBan.SelectedText; int idlichtrinh = (int)cbLichTrinh.SelectedValue; string tenLichTrinh = (cbLichTrinh.SelectedItem != null) ? cbLichTrinh.SelectedItem.ToString() : cbLichTrinh.SelectedText; float hslcb, hslcv, hsbhxhcongthem; if (float.TryParse(tbHSLCB.Text, out hslcb) == false || float.TryParse(tbHSLCV.Text, out hslcv) == false || float.TryParse(tbHSBHXHCongThem.Text, out hsbhxhcongthem) == false) { ACMessageBox.Show(Resources.Text_HeSoLCB_CV_BHXH_ChuaHopLe, Resources.Caption_Loi, 2000); return; } bool userEnabled = checkUserEnabled.Checked; if (mode == 1) { var tableKiemTraTonTai = SqlDataAccessHelper.ExecuteQueryString( "select * from UserInfo where UserEnrollNumber = @UserEnrollNumber", new string[] { "@UserFullCode", "@UserEnrollNumber" }, new object[] { maNV, maCC }); if (tableKiemTraTonTai.Rows.Count > 0) { ACMessageBox.Show("Mã nhân viên hoặc mã chấm công đã tồn tại trong CSDL. Vui lòng chọn mã khác.", Resources.Caption_Loi, 2000); return; } } #region xác nhận trước khi lưu if (MessageBox.Show(Resources.Text_XacNhanLuuThongTinNV, Resources.Caption_XacNhan, MessageBoxButtons.OKCancel) == DialogResult.Cancel) { return; } #endregion #region execute query int kq1 = SqlDataAccessHelper.ExecNoneQueryString( @" UPDATE UserInfo Set UserFullCode = @UserFullCode, UserFullName = @UserFullName, UserLastName = @UserLastName, UserEnrollName = @UserEnrollName, UserCardNo = @UserCardNo, UserHireDay = @UserHireDay, UserIDTitle = @IDChucVu, UserSex = @UserSex, UserEnabled = @UserEnabled, UserIDD = @UserIDD, SchID = @SchID, HeSoLuongCB = @HeSoLuongCB, HeSoLuongSP = @HeSoLuongSP, HSBHCongThem = @HSBHCongThem where UserEnrollNumber = @UserEnrollNumber if ( @@ROWCOUNT = 0 ) INSERT INTO UserInfo ( UserFullCode, UserFullName, UserLastName, UserEnrollNumber, UserEnrollName, UserCardNo, UserHireDay, UserIDTitle, UserSex, UserPrivilege, UserEnabled, UserIDD, SchID, HeSoLuongCB, HeSoLuongSP, HSBHCongThem, PushCardID, UserPW, UserGroup, UserTZ) VALUES ( @UserFullCode, @UserFullName, @UserLastName, @UserEnrollNumber, @UserEnrollName, @UserCardNo, @UserHireDay, @IDChucVu, @UserSex, @UserPrivilege, @UserEnabled, @UserIDD, @SchID, @HeSoLuongCB, @HeSoLuongSP, @HSBHCongThem, @PushCardID, @UserPW, @UserGroup, @UserTZ )" , new string[] { "@UserFullCode", "@UserFullName", "@UserLastName", "@UserEnrollNumber", "@UserEnrollName", "@UserCardNo", "@UserHireDay", "@IDChucVu", "@UserSex", "@UserEnabled", "@UserIDD", "@SchID", "@HeSoLuongCB", "@HeSoLuongSP", "@HSBHCongThem", "@UserPrivilege", "@PushCardID", "@UserPW", "@UserGroup", "@UserTZ" }, new object[] { maNV, hoten, ten, maCC, tenCC, mathetu, ngayvaolam, idchucvu, gioitinh, userEnabled, idphong, idlichtrinh, hslcb, hslcv, hsbhxhcongthem, 0, "[0000000000]", string.Empty, 1, "0000000000000000", }); string noidung = @"Lưu thông tin nhân viên có mã chấm công [{0}], mã nhân viên [{1}], hệ số lương cơ bản [{2}], hệ số lương sản phẩm [{3}], hệ số bảo hiểm cộng thêm cho lãnh đạo [{4}], tình trạng hoạt động [{5}], phòng ban [{6}], lịch trình [{7}]"; DAO5.GhiNhatKyThaotac("Lưu thông tin nhân viên", string.Format(noidung, maCC, maNV, hslcb.ToString("0.00"), hslcv.ToString("0.00"), hsbhxhcongthem.ToString("0.00"), userEnabled, tenphong, tenLichTrinh), maCC: maCC); #endregion if (checkLamCongnhat.Enabled && checkLamCongnhat.Checked) { var ngayBD = dtpNgayBDCongnhat.Value.Date; var ngayKT = dtpNgayKTCongnhat.Value.Date; var laNVChinhthuc = checkNVChinhThuc.Checked; if (ngayBD > ngayKT) // hoán vị ngày bắt đầu kết thúc nếu bị ngược { var temp = ngayBD; ngayKT = ngayBD; ngayBD = temp; } //thực hiện tách nếu làm công nhật ngày bd và kt là nhiều tháng liên tiếp List <DateTime> arrNgayBD, arrNgayKT; XL2.TachThang(ngayBD, ngayKT, out arrNgayBD, out arrNgayKT); for (int i = 0; i < arrNgayBD.Count; i++) { int kq2 = DAO5.UpdIns_ThuChiNVCongNhat(new DateTime(arrNgayBD[i].Year, arrNgayBD[i].Month, 1), maCC, idphong, tenphong, arrNgayBD[i], arrNgayKT[i], 0, 0d, laNVChinhthuc); if (kq2 == 0) { MessageBox.Show(Resources.Text_CoLoi); break; } } } if (kq1 == 0) { MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi); } else { IsReload = true; if (mode == 1) { ACMessageBox.Show("Thêm nhân viên thành công.", Resources.Caption_ThongBao, 2000); MyUtility.ClearControlText(tbMaNV, tbHoTenNV, tbMaCC, tbUserEnrollName); radNam.Checked = true; tbMaTheTu.Text = "0000000000"; tbHSLCB.Text = "000"; tbHSLCV.Text = "000"; tbHSBHXHCongThem.Text = "000"; cbChucVu.SelectedIndex = 0; cbPhongBan.SelectedIndex = 0; cbLichTrinh.SelectedIndex = 0; checkUserEnabled.Checked = true; } else { Close(); } } }
private void btnCapNhat_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } DateTime ngaydauthang = dtpThang.Value; int uen = (int)m_currRowNV["UserEnrollNumber"]; bool LaNVChinhThuc = checkNVChinhThuc.Checked; DateTime ngayBD = dtpNgayBDCongnhat.Value; DateTime ngayKT = dtpNgayKTCongnhat.Value; if (ngayBD > ngayKT) { MyUtility.Swap(ref ngayBD, ref ngayKT); } if (checkLamCongnhat.Checked && checkLamCongnhat.Enabled) { #region query string var query = @" UPDATE DSNVChiCongNhatThang SET IDPhong = @IDPhong ,TenPhong = @TenPhong ,NgayBatDau = @NgayBatDau ,NgayKetThuc = @NgayKetThuc ,SoNgayCong = 0 ,NVChinhThuc = @NVChinhThuc WHERE Thang = @Thang and UserEnrollNumber = @UserEnrollNumber if @@ROWCOUNT = 0 INSERT INTO DSNVChiCongNhatThang (Thang ,UserEnrollNumber ,IDPhong ,TenPhong ,NgayBatDau ,NgayKetThuc ,SoNgayCong ,DonGiaLuong ,TamUng ,NVChinhThuc) VALUES (@Thang ,@UserEnrollNumber ,@IDPhong ,@TenPhong ,@NgayBatDau ,@NgayKetThuc ,0 ,0 ,0 ,@NVChinhThuc) " ; #endregion int idPhong = (int)m_currRowNV["MaPhong"]; var tenPhong = m_currRowNV["TenPhong"].ToString(); #region update or insert xuống csdl int kq = SqlDataAccessHelper.ExecNoneQueryString( query, new string[] { "@Thang", "@UserEnrollNumber", "@IDPhong", "@TenPhong", "@NgayBatDau", "@NgayKetThuc", "@NVChinhThuc" }, new object[] { ngaydauthang, uen, idPhong, tenPhong, ngayBD, ngayKT, LaNVChinhThuc }); DAO5.GhiNhatKyThaotac("Lưu ngày làm việc công nhật", string.Format("Lưu thời gian làm việc công nhật bắt đầu từ ngày [{1}] đến hết ngày [{2}], [{3}] cho NV có mã chấm công [{0}]", uen, ngayBD.ToString("dd/MM/yyyy"), ngayKT.ToString("dd/MM/yyyy"), LaNVChinhThuc ? "tính lương các ngày còn lại như NV chính thức" : ""), maCC: uen); if (kq == 0) // báo lỗi { MessageBox.Show(Resources.Text_CoLoi); return; } #endregion // sau khi update thì đóng form và reload IsReload = true; Close(); } }
private void btnLuu_Click(object sender, EventArgs e) { int idPhong = -1, idChucVu = -1, idLichtrinh = -1, userEnabled = -1; float hslcb = -1f, hslcv = -1f; List <string> arrString = new List <string>(); List <string> arrString2 = new List <string>(); bool IsExist_1Check = false; if (checkPhong.Checked) { TreeNode node = treePhongBan.SelectedNode; if (node == null) { ACMessageBox.Show("chưa chọn node", "", 1000); return; } //node != null idPhong = ((cPhongBan)(node.Tag)).ID; arrString.Add(" UserIDD = @MaPhong "); arrString2.Add("bộ phận mới: [" + ((cPhongBan)node.Tag).Ten + "]; "); IsExist_1Check = true; } if (checkChucVu.Checked) { idChucVu = (int)cbChucVu.SelectedValue; arrString.Add(" UserIDTitle = @IDChucVu "); arrString2.Add("chức vụ mới: [" + ((cbChucVu.SelectedItem != null) ? cbLichTrinh.SelectedItem.ToString() : cbLichTrinh.SelectedText) + "]; "); IsExist_1Check = true; } if (checkLichtrinh.Checked) { idLichtrinh = (int)cbLichTrinh.SelectedValue; arrString.Add(" SchID = @SchID "); // (cbXNLyDo.SelectedItem != null) ? cbXNLyDo.SelectedItem.ToString() : cbXNLyDo.SelectedText; arrString2.Add("lịch trình làm việc mới: [" + ((cbLichTrinh.SelectedItem != null) ? cbLichTrinh.SelectedItem.ToString() : cbLichTrinh.SelectedText) + "]; "); IsExist_1Check = true; } if (checkHSLCB.Checked) { if (float.TryParse(tbHSLCB.Text, out hslcb) == false) { ACMessageBox.Show(Resources.Text_HeSoLCB_CV_BHXH_ChuaHopLe, Resources.Caption_Loi, 2000); return; } else { arrString.Add(" HeSoLuongCB = @HeSoLuongCB "); arrString2.Add("hệ số lương cơ bản mới: [" + hslcb.ToString("0.00") + "]; "); } IsExist_1Check = true; } if (checkHSLCV.Checked) { if (float.TryParse(tbHSLCV.Text, out hslcv) == false) { ACMessageBox.Show(Resources.Text_HeSoLCB_CV_BHXH_ChuaHopLe, Resources.Caption_Loi, 2000); return; } else { arrString.Add(" HeSoLuongSP = @HeSoLuongSP "); arrString2.Add("hệ số lương sản phẩm mới: [" + hslcv.ToString("0.00") + "]; "); } IsExist_1Check = true; } if (checkTinhtrangHoatdong.Checked) { userEnabled = (checkUserEnabled.Checked) ? 1 : 0; arrString.Add(" UserEnabled = @UserEnabled "); arrString2.Add("tình trạng mới: [" + (checkUserEnabled.Checked ? "đang làm việc" : "ngưng việc") + "]; "); IsExist_1Check = true; } // chưa chọn thì báo if (IsExist_1Check == false) { ACMessageBox.Show("Bạn chưa chọn thông tin cần cập nhật nào.", Resources.Caption_ThongBao, 2000); return; } // xác nhận if (MessageBox.Show("Cập nhật thông tin hàng loại cho nhân viên?", Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No) { return; } var listUEN = (from DataRowView row in RowViews select(int) row["UserEnrollNumber"]).ToList(); string temp1 = string.Join(" , ", arrString.ToArray()); // nối các thuộc tính với nhau string temp2 = string.Join(" or UserEnrollNumber = ", listUEN.ToArray()); // nối các userenrollnumber với nhau string formatstring1 = @" update UserInfo set {0} where ( UserEnrollNumber = {1} ) "; string temp3 = string.Join("", arrString2.ToArray()); string formatstring2 = @"Cập nhật thông tin NV mã chấm công [{0}] {1}"; string query = string.Format(formatstring1, temp1, temp2); int kq = SqlDataAccessHelper.ExecNoneQueryString(query, new string[] { "@MaPhong", "@IDChucVu", "@SchID", "@HeSoLuongCB", "@HeSoLuongSP", "@UserEnabled", }, new object[] { idPhong, idChucVu, idLichtrinh, hslcb, hslcv, userEnabled }); foreach (int uen in listUEN) { DAO5.GhiNhatKyThaotac("Cập nhật thông tin NV hàng loạt", string.Format(formatstring2, uen, temp3), maCC: uen); } if (kq == 0) { ACMessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi, 2000); } else { IsReload = true; Close(); } }
private void KetLuong(object sender, WaitWindowEventArgs e) { #region lấy thông tin từ csdl và khỏi tạo nv var ngaydauthang = MyUtility.FirstDayOfMonth(m_Thang); var ngaycuoithang = MyUtility.LastDayOfMonth(m_Thang); var tableDSNVChiCongnhatThang = DAO5.LayTableCongNhat(ngaydauthang); var tableDSThuchiThang = DAO5.LayDSThuchiThang(ngaydauthang); var tableKetcongNgay = DAO5.LayKetcongNgay(ngaydauthang, ngaycuoithang); var tableKetcongCa = DAO5.LayKetcongCa(ngaydauthang, ngaycuoithang); var tableXPVang = DAO5.LayTableXPVang(ngaydauthang, ngaycuoithang); var tableNgayLe = DAO5.DocNgayLe(ngaydauthang, ngaycuoithang); var dsnv = new List <cUserInfo>(); var dsphongban = new List <cPhongBan>(); XL.KhoiTaoDSPhongBan(dsphongban); // khởi tạo các phòng ban để cập nhật thông tin phòng ban cho nhân viên tính công XL.KhoiTaoDSNV_TinhLuong(dsnv, dsphongban); // khởi tạo tất cả nhân viên tính công, bao gồm cả công nhật ngày(nv chính thức) và công nhật tháng #endregion #region //load cong phu cap tung ngay cho tat ca nv, ke ca cong nhat, rieng truong hop cong nhat se xu ly ngay ben duoi foreach (var nv in dsnv) { nv.DSNgayCong = new List <cNgayCong>(); nv.DSVang = new List <cLoaiVang>(); for (DateTime indexNgay = ngaydauthang; indexNgay <= ngaycuoithang; indexNgay = indexNgay.AddDays(1d)) { XL.LoadNgayCong(nv.MaCC, nv.DSNgayCong, indexNgay, tableKetcongNgay, tableKetcongCa); } XL.LoadDSXPVang_Le(nv.MaCC, tableXPVang, tableNgayLe, nv.DSVang); //info trường hợp nhân viên công nhật sẽ được xử lý bên dưới XL.PhanPhoi_DSVang7(nv.DSVang, nv.DSNgayCong); XL.LoadThongtinLamViecCongNhat(nv.MaCC, ref nv.NgayBDCongnhat, ref nv.NgayKTCongnhat, ref nv.LoaiCN, nv.DSNgayCong, tableDSNVChiCongnhatThang); } #endregion //có được ds nhân viên với công, phụ cấp, các loại vắng, công ngày lễ --> bắt đầu tính lương #region lấy thông số để tính lương var sanluong01 = (int)(numSanLuong.Value); var dongia02 = (int)numDonGia.Value; var perTrichQuyLuong = (int)numTrichQuyLuong.Value; var sanluongGiacongNoiBo = (int)numSanluongGiacongNoibo.Value; var dongiaGiacongNoiBo = (int)numDongiaGiacongNoibo.Value; var sanluongGiacongNgoai = (int)numSanluongGiacongNgoai.Value; var dongiaGiacongNgoai = (int)numDongiaGiacongNgoai.Value; var mucLuongToithieu = (int)numLuongTT.Value; var donGiaBdCa3 = (int)numBoiDuongCa3.Value; var DinhMuccomtrua = (int)numDinhMucComTrua.Value; double tongQuy100Per03 = Convert.ToDouble(sanluong01) * Convert.ToDouble(dongia02); double _80perQuy100_04 = tongQuy100Per03 * (perTrichQuyLuong / 100d); // ko cần round vì 220*0.8=176 chẵn #endregion // xác định công chuẩn của tháng var congChuanThang = XL.TinhCongChuanCuaThang(ngaydauthang); #region // thống kê công, phụ cấp hàng ngày của từng nhân viên chính thức //trường hợp nhân viên vừa công nhật vừa chính thức thì chỉ thống kê ngày công sau ngày kết thúc công nhật foreach (var nv in dsnv) { // thống kê công và phụ cấp từng nv XL.ThongKeThang(ref nv.ThongKeThang, nv.DSNgayCong, nv.NgayBDCongnhat, nv.NgayKTCongnhat, nv.LoaiCN); // tính công chờ việc: 1.nv công nhật ko cv. 2. nv mới chính thức thì chỉ giữ công cv khai báo if (nv.LoaiCN == LoaiCongNhat.NVCongNhat) // nhân viên làm công nhật, công cv tự động, khai báo = 0 { nv.ThongKeThang.CongCV_Auto = 0f; nv.ThongKeThang.CongCV_KB = 0f; } else { if (nv.LoaiCN == LoaiCongNhat.NVChinhThuc) // nhân viên chính thức { nv.ThongKeThang.CongCV_Auto = congChuanThang - /*(nv.ThongKeThang.Cong + nv.ThongKeThang.Le + nv.ThongKeThang.Phep + //ver4.0.0.0*/ (nv.ThongKeThang.TongNgayLV + nv.ThongKeThang.Le + nv.ThongKeThang.Phep + //ver4.0.0.1 nv.ThongKeThang.BHXH + nv.ThongKeThang.H_CT_PT + nv.ThongKeThang.PTDT + nv.ThongKeThang.NghiRo + nv.ThongKeThang.CongCV_KB); //DANGLAM if (nv.ThongKeThang.CongCV_Auto < 0f) { nv.ThongKeThang.CongCV_Auto = 0f; } } else // nhân viên chính thức vừa công nhật thì công cv_auto =0, công cv khai báo ko đổi { nv.ThongKeThang.CongCV_Auto = 0f; } } nv.ThongKeThang.CongCV = nv.ThongKeThang.CongCV_Auto + nv.ThongKeThang.CongCV_KB; } #endregion #region // tính lương công nhật cho các nhân viên làm công nhật và tổng lương công nhật double TongLuongCongNhat_AllNV = 0d; foreach (DataRow row in tableDSNVChiCongnhatThang.Rows.Cast <DataRow>()) { // lấy thông tin var macc = (int)row["UserEnrollNumber"]; var dongiaLuong = (int)row["DonGiaLuong"]; var soNgayCong = (float)row["SoNgayCong"]; var TamUng = (double)row["TamUng"]; // xác định nhân viên var nv = dsnv.Find(o => o.MaCC == macc); if (nv == null) { continue; } nv.ThongKeThang.Cong_Congnhat = soNgayCong; nv.chiTietLuong.CongNhat = soNgayCong * dongiaLuong; //ko trừ tạm ứng, tạm ứng chỉ ở phần thực lãnh mới ghi TongLuongCongNhat_AllNV += nv.chiTietLuong.CongNhat; } #endregion #region //đọc danh sách thu chi cho từng nhân viên (lưu ý ko đọc phụ cấp của nhân viên công nhật foreach (DataRow row in tableDSThuchiThang.Rows.Cast <DataRow>()) { var macc = (int)row["UserEnrollNumber"]; // xác định nhân viên var nv = dsnv.Find(o => o.MaCC == macc); if (nv == null) { continue; } nv.chiTietLuong.KhauTru.TamUng = (double)row["TamUng"]; nv.chiTietLuong.LuongDieuChinh = (double)row["LuongDieuChinh"]; nv.chiTietLuong.MucDongBHXH = (float)row["MucDongBHXH"]; nv.chiTietLuong.KhauTru.ThuChiKhac = (double)row["ThuChiKhac"]; } #endregion #region // tính lương cho nv chính thức double tong_qlcb_2 = 0d, tong_SPLamRa_B2_2 = 0d, tongQuyLuongCV = 0d, tongQuyLuongNghiDinhCP = 0d, tongChiKhacTuQuyLuong = 0d, tongQuyLuongSP = 0d; foreach (var nv in dsnv.Where(o => o.LoaiCN != LoaiCongNhat.NVCongNhat)) { //if (Math.Abs(nv.ThongKeThang.Cong - 0f) < 0.01f) nv.ThongKeThang.CongCV = 0f; //fortesting nếu ko chấm công thì cũng ko có công cv XL.TinhLuongCoBan_CongVaPC_A202(nv.HeSo.LuongCB, mucLuongToithieu, nv.ThongKeThang.Cong, nv.ThongKeThang.PhuCaps._TongPC, nv.ThongKeThang.Phep, nv.ThongKeThang.H_CT_PT, nv.ThongKeThang.PTDT, nv.ThongKeThang.Le, nv.ThongKeThang.CongCV, //DANGLAM out nv.chiTietLuong.LCB_Theo.CongThucTe, out nv.chiTietLuong.LCB_Theo.CheDoNghi, out nv.chiTietLuong.LCB_Theo.CongCV, out nv.chiTietLuong.LCB_Theo.PhuCap); tongQuyLuongCV += nv.chiTietLuong.LCB_Theo.CongCV; tongQuyLuongNghiDinhCP += nv.chiTietLuong.LCB_Theo.TongCong_CD_CV_PC; XL.TinhBoiDuongQuaDemA512(nv.ThongKeThang.NgayQuaDem, donGiaBdCa3, out nv.chiTietLuong.BoiDuongQuaDem); tong_qlcb_2 += nv.chiTietLuong.LCB_Theo.TongCong_CD_CV_PC + nv.chiTietLuong.BoiDuongQuaDem + nv.chiTietLuong.LuongDieuChinh; //info tong_qlcb_2 bao gồm lương cb 1nv, bồi dưỡng ca 3 1nv, lương tháng trước 1 nv tongChiKhacTuQuyLuong += nv.chiTietLuong.BoiDuongQuaDem + nv.chiTietLuong.KhauTru.ThuChiKhac; XL.TinhSPLamRa_CongVaPC_B102(nv.HeSo.LuongCV, nv.ThongKeThang.Cong, nv.ThongKeThang.PhuCaps._TongPC, nv.ThongKeThang.Phep, nv.ThongKeThang.H_CT_PT, nv.ThongKeThang.PTDT, nv.ThongKeThang.Le, //DANGLAM out nv.chiTietLuong.SPLamRa_Theo.CongThucTe, out nv.chiTietLuong.SPLamRa_Theo.CheDoNghi, out nv.chiTietLuong.SPLamRa_Theo.PhuCap); tong_SPLamRa_B2_2 += nv.chiTietLuong.SPLamRa_Theo.TongSPLamRa; // tính khấu trừ BHXH nv.chiTietLuong.KhauTru.BHXH = Convert.ToDouble(nv.HeSo.BHXH_YT_TN * mucLuongToithieu * (nv.chiTietLuong.MucDongBHXH / 100f)); // tính tiền cơm trưa var temp1 = DinhMuccomtrua - ((DinhMuccomtrua / congChuanThang) * nv.ThongKeThang.NghiRo); nv.chiTietLuong.TienComTrua = (temp1 >= 0d) ? temp1 : 0d; } var chitienGiacongNoibo = Convert.ToDouble(sanluongGiacongNoiBo) * Convert.ToDouble(dongiaGiacongNoiBo); var chitienGiacongNgoai = Convert.ToDouble(sanluongGiacongNgoai) * Convert.ToDouble(dongiaGiacongNgoai); var tong_qlSP_A71_1_VaGiaCong = (_80perQuy100_04 + chitienGiacongNoibo + chitienGiacongNgoai) - tong_qlcb_2 - TongLuongCongNhat_AllNV; double giaTri_1SP_B3_1 = tong_qlSP_A71_1_VaGiaCong / tong_SPLamRa_B2_2; // tính ra được 1 đơn vị sản phẩm có giá bao nhiêu //double tong0 = 0d, tong1 = 0d, tong2 = 0d, tong3 = 0d, tong4 = 0d, tong5 = 0d, tong6 = 0d, tong7 = 0d, tong8 = 0d, tong9 = 0d, tong10 = 0d, tong11 = 0d, tong12 = 0d, tong13 = 0d, tong14 = 0d, tong15 = 0d, tong16 = 0d, tong17 = 0d, tong18 = 0d, tong19 = 0d, tong20 = 0d, tong21 = 0d, tong22 = 0d, tong23 = 0d, tong24 = 0d, tong25 = 0d, tong26 = 0d, tong27 = 0d, tong28 = 0d, tong29 = 0d, tong30 = 0d, tong31 = 0d, tong32 = 0d, tong33 = 0d, tong34 = 0d, tong35 = 0d, tong36 = 0d; foreach (var nv in dsnv.Where(o => o.LoaiCN != LoaiCongNhat.NVCongNhat)) { nv.chiTietLuong.LSP_Theo.CongThucTe = nv.chiTietLuong.SPLamRa_Theo.CongThucTe * giaTri_1SP_B3_1; nv.chiTietLuong.LSP_Theo.CheDoNghi = nv.chiTietLuong.SPLamRa_Theo.CheDoNghi * giaTri_1SP_B3_1; nv.chiTietLuong.LSP_Theo.PhuCap = nv.chiTietLuong.SPLamRa_Theo.PhuCap * giaTri_1SP_B3_1; tongQuyLuongSP += nv.chiTietLuong.LSP_Theo.TongCong_CD_PC; //fortesting region [03] } #endregion //fortesting testing region [01] #region // cập nhật lương xuống csdl , trước khi cập nhật thì xoá lương cũ // cập nhật lương xuống csdl , trước khi cập nhật thì xoá lương cũ int kq1 = SqlDataAccessHelper.ExecNoneQueryString( "delete from KetLuongThang where Thang = @Thang", new string[] { "@Thang" }, new object[] { m_Thang }); //INFO LOG DO KẾT LƯƠNG THÁNG THỰC HIỆN foreach (var nv in dsnv.Where(o => o.LoaiCN != LoaiCongNhat.NVCongNhat)) { int kq = DAO5.InsKetLuongThang(m_Thang, nv); //if (kq == 0) MessageBox.Show("Xảy ra lỗi tại vị trí NV: " + nv.MaCC + nv.TenNV);//fortesting } // sau khi cập nhật lương từng nhân viên thì cập nhật thông số kết lương tháng int kq2 = DAO5.UpdInsThongsoKetluongThang(m_Thang, XL2.PC30, XL2.PC50, XL2.PCTCC3, XL2.PC100, XL2.PC160, XL2.PC200, XL2.PC290, sanluong01, dongia02, perTrichQuyLuong, sanluongGiacongNoiBo, dongiaGiacongNoiBo, sanluongGiacongNgoai, dongiaGiacongNgoai, mucLuongToithieu, donGiaBdCa3, DinhMuccomtrua, tongQuyLuongCV, tongQuyLuongNghiDinhCP, tongChiKhacTuQuyLuong, tongQuyLuongSP, giaTri_1SP_B3_1); //ghi log string noidung = string.Format("Kết lương tháng [{0}]", m_Thang.ToString("MM/yyyy")); DAO5.GhiNhatKyThaotac("Kết lương", noidung); #endregion }