private void btnThucHien_Click(object sender, EventArgs e) { #region kiểm tra kết nối csdl , nếu mất kết nối thì đóng if (SqlDataAccessHelper.TestConnection(SqlDataAccessHelper.ConnectionString) == false) { ACMessageBox.Show(Resources.Text_MatKetNoiCSDL, Resources.Caption_Loi, 4000); Close(); return; } #endregion if (XL.Kiemtra(MyUtility.FirstDayOfMonth(dtpThang.Value), MyUtility.LastDayOfMonth(dtpThang.Value)) == false) { ACMessageBox.Show(string.Format("Tháng {0} chưa thực hiện kết lương.", dtpThang.Value.ToString("MM/yyyy")), Resources.Caption_ThongBao, 3000); return; } if (MessageBox.Show("Bạn muốn huỷ kết lương tháng " + dtpThang.Value.ToString("MM/yyyy"), Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No) { return; } if (XL.HuyKetLuongThang(MyUtility.FirstDayOfMonth(dtpThang.Value))) { ACMessageBox.Show("Đã huỷ kết lương tháng " + dtpThang.Value.ToString("MM/yyyy"), Resources.Caption_ThongBao, 3000); } else { MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi); } Close(); }
private void btnKetLuong_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } XL.SaveSetting(lastTenNVLapBieuLuong: tbTenNVLapbieuLuong.Text); //nếu đã kết lương tháng này rồi thì ko cho kết lương, phải hủy kết lương trước #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("Tháng {0} đã kết lương! Trường hợp muốn kết lương lại tháng này yêu cầu hủy kết lương tháng và thực hiện kết lương lại.", m_Thang.ToString("MM/yyyy")), Resources.Caption_ThongBao); return; } #endregion WaitWindow.Show(this.KetLuong, "Đang kết lương tháng. Bạn vui lòng đợi trong giây lát..."); saveFileDialog.ShowDialog(); if (saveFileDialog.FileName != string.Empty) { string saveFileName = saveFileDialog.FileName; WaitWindow.Show(this.XuatBBLuong, "Đang xuất bảng kết lương. Bạn vui lòng đợi...", new object[] { tbTenNVLapbieuLuong.Text, saveFileName }); } }
private void XacDinhKhoangThoiGianChon(out DateTime ngayBd, out DateTime ngayKt) { if (radDate.Checked) { ngayBd = dtpNgayBD.Value; ngayKt = dtpNgayKT.Value; } else if (radMonth.Checked) { ngayBd = MyUtility.FirstDayOfMonth(dtpThang.Value); ngayKt = MyUtility.LastDayOfMonth(dtpThang.Value); } else if (radQuarter.Checked) { int quy = (int)numQuy.Value; int nam = dtpQuyNam.Value.Year; int thangBD_Value = (3 * (quy - 1)) + 1; int thangKT_Value = thangBD_Value + 2; // BD: 1;4;7;10; KT: 3;6;9;12 ngayBd = new DateTime(nam, thangBD_Value, 1); // nam 2015 thang 10 ngay 1 ngayKt = new DateTime(nam, thangKT_Value, DateTime.DaysInMonth(nam, thangKT_Value)); //2015 thang 12 ngay 31 } else { ngayBd = DateTime.Today; ngayKt = DateTime.Today; } }
private void lbThieuChamCong_Click(object sender, EventArgs e) { zMisc.fmXacNhanCa frm = new zMisc.fmXacNhanCa(); frm.m_DSNV = (List <cUserInfo>)lbThieuChamCong.Tag; frm.m_NgayBD = MyUtility.FirstDayOfMonth(dateNavigator1.DateTime); frm.m_NgayKT = MyUtility.LastDayOfMonth(frm.m_NgayBD); frm.Show(); }
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(); }
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 }); DAO.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 = DAO.LayTableCongNhat(m_thang); dgrdDSLuongCongnhat.DataSource = table; dgrdDSLuongCongnhat.ClearSelection(); }
public static void ChiaDoanThoiGian(DateTime NgayBd, DateTime NgayKt, out List <List <DateTime> > ArrDoanThoigian) { ArrDoanThoigian = new List <List <DateTime> >(); DateTime cursorDate = new DateTime(NgayBd.Year, NgayBd.Month, NgayBd.Day); while (cursorDate.Month < NgayKt.Month && cursorDate.Year <= NgayKt.Year) // vẫn chưa phải tháng cuối cùng trong khoảng thời gian { DateTime ngayBD_Doan, ngayKT_Doan; ngayBD_Doan = new DateTime(cursorDate.Year, cursorDate.Month, cursorDate.Day); // ngày đầu tháng bị dang dở hoặc ngày 1 đầu tháng ngayKT_Doan = MyUtility.LastDayOfMonth(ngayBD_Doan); // ngày cuối tháng ArrDoanThoigian.Add(new List <DateTime> { ngayBD_Doan, ngayKT_Doan }); cursorDate = MyUtility.FirstDayOfMonth(cursorDate).AddMonths(1); // đưa ngày đầu dang dở về đầu tháng rồi mới add thêm 1 tháng mới. VD: 16 -> 1 rồi mới add monnth } // ra khỏi vòng lặp là tháng cuối có thể bị dang dở cursorDate.Month = NgayKT.Month . VD: 01/01/2015 -16/01/2015 ArrDoanThoigian.Add(new List <DateTime> { cursorDate, NgayKt }); }
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 btnThucHien_CCThang_Click(object sender, EventArgs e) { //1. kiểm tra tháng chấm công hợp lệ, lấy dsnv ( chưa chọn thì báo) DateTime thangChamCong; if (Validate_ThangChamCong(dateEdit_ThangCC, out thangChamCong) == false) { return; } List <cUserInfo> dsnv_duocChon = new List <cUserInfo>(); LayDSNV_DuocChon(gridView_DSNV, dsnv_duocChon); BUS_ChamCong busChamCong = new BUS_ChamCong(); FromToDateTime khoangTg = new FromToDateTime { From = MyUtility.FirstDayOfMonth(thangChamCong), To = MyUtility.LastDayOfMonth(thangChamCong) }; busChamCong.ChamCong2(dsnv_duocChon, khoangTg); }
private void frmKBVang_DaiHan_Load(object sender, EventArgs e) { dtpNgayBD.Value = MyUtility.FirstDayOfMonth(DateTime.Today); dtpNgayKT.Value = MyUtility.LastDayOfMonth(DateTime.Today); var tableLV = SqlDataAccessHelper.ExecuteQueryString("Select * from LoaiVang"); var dataRows = (from DataRow row in tableLV.Rows let absentCode = row["AbsentCode"].ToString() where absentCode != "BD" && absentCode != "TS" select row).ToList(); for (int i = 0; i < dataRows.Count; i++) { tableLV.Rows.Remove(dataRows[i]); } cbLoaiVang.ValueMember = "AbsentCode"; cbLoaiVang.DisplayMember = "AbsentDescription"; cbLoaiVang.DataSource = tableLV; cbLoaiVang.SelectedIndex = 0; }
private void btnXuatBangChiTiet_Click(object sender, EventArgs e) { if (XL.Kiemtra(m_Thang.Date, MyUtility.LastDayOfMonth(m_Thang)) == false) { MessageBox.Show(string.Format("Tháng {0} chưa kết lương!", m_Thang.ToString("MM/yyyy")), Resources.Caption_ThongBao); return; } if (saveFileDialog.ShowDialog() == DialogResult.Cancel) { return; } if (saveFileDialog.FileName == string.Empty) { return; } string saveFileName = saveFileDialog.FileName; WaitWindow.Show(this.XuatBangChiTiet, "Đang xuất bảng chi tiết. Bạn vui lòng đợi...", saveFileName); }
private void fmTKeCongTheoNVu_Load(object sender, EventArgs e) { //load mặc định các dateTimePicker DateTime ngayBD = MyUtility.FirstDayOfMonth(DateTime.Today); DateTime ngayKT = MyUtility.LastDayOfMonth(DateTime.Today); dtpNgayBD.Value = ngayBD; dtpNgayKT.Value = ngayKT; dtpThang.Value = ngayBD; numQuy.Value = (DateTime.Today.Month - (DateTime.Today.Month % 4) / 4); int thangDauQuy = (int)numQuy.Value; dtpQuyNam.Value = new DateTime(DateTime.Today.Year, thangDauQuy, 1); //load tree XL.loadTreePhgBan(treePhongBan); treePhongBan.AfterSelect += treePhongBan_AfterSelect; //load danh sách nhiệm vụ DataTable tableNhiemVu = SqlDataAccessHelper.ExecSPQuery(SPName.NhiemVu_DocBang.ToString()); checkedListNhiemVu.DataSource = tableNhiemVu; checkedListNhiemVu.ValueMember = "MaNhiemVu"; checkedListNhiemVu.DisplayMember = "TenNhiemVu"; /*tạo sẵn cấu trúc table exclude các nhân viên để mỗi lần thêm mới thì chỉ cần lấy cấu trúc datarow * của template table này */ DataTable templateTable = new DataTable("ExcludeNhanVien"); templateTable.Columns.Add(new DataColumn { ColumnName = "UserEnrollNumber", DataType = typeof(int) }); templateTable.Columns.Add(new DataColumn { ColumnName = "UserFullName", DataType = typeof(string) }); listExcludeNV.DataSource = templateTable; listExcludeNV.ValueMember = "UserEnrollNumber"; listExcludeNV.DisplayMember = "UserFullName"; }
public frm_PhucHoiGioChamCong() { InitializeComponent(); log4net.Config.XmlConfigurator.Configure(); dtpNgayBD.Value = MyUtility.FirstDayOfMonth(DateTime.Today); dtpNgayKT.Value = MyUtility.LastDayOfMonth(DateTime.Today); m_listIDPhongBan = new List <int>(); m_DSNV = new List <cUserInfo>(); m_Bang_DSNV = TaoBang_DSNV_PhucHoi(); m_Bang_PH_Them = TaoBang_PH_Them(); m_Bang_GioDaXN = TaoBang_GioDaXN(); dgrdDSNVTrgPhg.AutoGenerateColumns = dgrdPH_Them.AutoGenerateColumns = dgrdPH_Xoaa.AutoGenerateColumns = dgrdPH_GioGoc.AutoGenerateColumns = dgrdGioDaXN.AutoGenerateColumns = false; DataView dataView = new DataView(m_Bang_DSNV); dgrdDSNVTrgPhg.DataSource = dataView; dgrdPH_Them.DataSource = m_Bang_PH_Them; //3. vẽ 3 checkbox checkall cho DSNV trong phòng XL2.VeCheckBox_CheckAll(dgrdDSNVTrgPhg, checkAll_GridDSNV, checkAll_CheckedChanged, new Point(7, 3)); }
private void btnChamCong_Click(object sender, EventArgs e) { DateTime Thang = dateNavigator1.DateTime; Thang = MyUtility.FirstDayOfMonth(Thang); //1. xác định danh sach nhan vien dang check; LẬP DS nhân viên đó để chấm công List <int> listUEN; GetList_UEN_Checked(checkedDSNV, out listUEN); // lấy danh sách các mã nhân viên check vì checkcomboBox ko cho phép lấy datarowview List <cUserInfo> listDSNV; BUS_NhanVien busNhanVien = new BUS_NhanVien(); busNhanVien.KhoiTaoDSNV_DuocChon(listUEN, this.m_NhanVienDR, this.m_SelectedPhong, this.m_AllNhomCa, out listDSNV); BUS_ChamCong busChamCong = new BUS_ChamCong(); //busChamCong.ChamCong2(listDSNV, new FromToDateTime{From=MyUtility.FirstDayOfMonth(Thang), To = MyUtility.LastDayOfMonth(Thang)}); zTestForm frm = new zTestForm() { m_DSNV = listDSNV, KhoangTG = new FromToDateTime { From = MyUtility.FirstDayOfMonth(Thang), To = MyUtility.LastDayOfMonth(Thang) } }; frm.Show(); }
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 XuatBBKetCongThang(object sender, WaitWindowEventArgs e) { string saveFileName = (string)e.Arguments[0]; string tenNVLapBieu = (string)e.Arguments[1]; string tenTrgBP = (string)e.Arguments[2]; #region lấy thông tin từ csdl và khỏi tạo nv int[] listMaCC = (from nv in m_dsnv select nv.MaCC).ToArray(); var ngaydauthang = MyUtility.FirstDayOfMonth(dtpThang.Value); var ngaycuoithang = MyUtility.LastDayOfMonth(dtpThang.Value); var tableKetcongNgay = DAO5.LayKetcongNgay(ngaydauthang, ngaycuoithang, DSNV: listMaCC); var tableKetcongCa = DAO5.LayKetcongCa(ngaydauthang, ngaycuoithang, DSNV: listMaCC); var tableXPVang = DAO5.LayTableXPVang(ngaydauthang, ngaycuoithang, listMaCC); var tableNgayLe = DAO5.DocNgayLe(ngaydauthang, ngaycuoithang); var tableDSNVChiCongnhatThang = DAO5.LayTableCongNhat(ngaydauthang, DSNV: listMaCC); #endregion // xác định công chuẩn của tháng var soNgayChuNhat = XL.DemSoNgayNghiChunhat(ngaydauthang, true, false); var congChuanThang = DateTime.DaysInMonth(ngaydauthang.Year, ngaydauthang.Month) - soNgayChuNhat; #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 List <cUserInfo> dsnv9 = new List <cUserInfo>(); foreach (var nv in m_dsnv) // duyệt qua các nhân viên được check { cUserInfo nv9 = new cUserInfo { MaCC = nv.MaCC, MaNV = nv.MaNV, TenNV = nv.TenNV, ChucVu = nv.ChucVu, IDChucVu = nv.IDChucVu, HeSo = nv.HeSo, PhongBan = nv.PhongBan, IsUserEnabled = nv.IsUserEnabled, LichTrinhLV = nv.LichTrinhLV, ThongKeThang = new ThongKeCong_PC(), DSNgayCong = new List <cNgayCong>(), DSVang = new List <cLoaiVang>() }; for (DateTime indexNgay = ngaydauthang; indexNgay <= ngaycuoithang; indexNgay = indexNgay.AddDays(1d)) { XL.LoadNgayCong(nv9.MaCC, nv9.DSNgayCong, indexNgay, tableKetcongNgay, tableKetcongCa); } XL.LoadDSXPVang_Le(nv.MaCC, tableXPVang, tableNgayLe, nv.DSVang); XL.PhanPhoi_DSVang7(nv.DSVang, nv.DSNgayCong); XL.LoadThongtinLamViecCongNhat(nv9.MaCC, ref nv9.NgayBDCongnhat, ref nv9.NgayKTCongnhat, ref nv9.LoaiCN, nv9.DSNgayCong, tableDSNVChiCongnhatThang); dsnv9.Add(nv9); } foreach (var nv9 in dsnv9) { XL.ThongKeThang(ref nv9.ThongKeThang, nv9.DSNgayCong, nv9.NgayBDCongnhat, nv9.NgayKTCongnhat, nv9.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 (nv9.NgayBDCongnhat != DateTime.MinValue) // nhân viên vừa làm chính thức vừa làm công nhật, công cv tự động = 0 { nv9.ThongKeThang.CongCV_Auto = 0f; } else // nhân viên chính thức { nv9.ThongKeThang.CongCV_Auto = congChuanThang - /*(nv9.ThongKeThang.Cong + nv9.ThongKeThang.Le + nv9.ThongKeThang.Phep +//ver4.0.0.0*/ (nv9.ThongKeThang.TongNgayLV + nv9.ThongKeThang.Le + nv9.ThongKeThang.Phep + //ver4.0.0.1 nv9.ThongKeThang.BHXH + nv9.ThongKeThang.H_CT_PT + nv9.ThongKeThang.PTDT + nv9.ThongKeThang.NghiRo + nv9.ThongKeThang.CongCV_KB); //DANGLAM if (nv9.ThongKeThang.CongCV_Auto < 0f) { nv9.ThongKeThang.CongCV_Auto = 0f; } } nv9.ThongKeThang.CongCV = nv9.ThongKeThang.CongCV_Auto + nv9.ThongKeThang.CongCV_KB; } #endregion using (var p = new ExcelPackage()) { //2. xuat bb bang ket cong thang #region ghi sheet bang ket cong thang trinh ky p.Workbook.Worksheets.Add("BangKetCong"); var ws = p.Workbook.Worksheets["BangKetCong"]; ws.Name = "BangKetCong"; //Setting Sheet's name XL.ExportSheetBangKetcongThang(ws, MyUtility.FirstDayOfMonth(dtpThang.Value), MyUtility.LastDayOfMonth(dtpThang.Value), dsnv9, tenNVLapBieu, tenTrgBP, XL2.PC30, XL2.PC50, XL2.PCTCC3, XL2.PC100, XL2.PC160, XL2.PC200, XL2.PC290); #endregion //3. xuat bb chi tiết kết công #region ghi sheet chi tiết kết công p.Workbook.Worksheets.Add("ChiTietKetCong"); ws = p.Workbook.Worksheets["ChiTietKetCong"]; ws.Name = "ChiTietKetCong"; //Setting Sheet's name XL.ExportSheetBangChiTietKetCong(ws, MyUtility.FirstDayOfMonth(dtpThang.Value), MyUtility.LastDayOfMonth(dtpThang.Value), dsnv9, XL2.PC30, XL2.PC50, XL2.PCTCC3, XL2.PC100, XL2.PC160, XL2.PC200, XL2.PC290); #endregion Byte[] bytes = p.GetAsByteArray(); XL.XuatFileExcel(saveFileName, bytes, "frmXuatBBCongPC XuatBBKetCongThang"); } }
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 = DAO.LayTableCongNhat(ngaydauthang); var tableDSThuchiThang = DAO.LayDSThuchiThang(ngaydauthang); var tableKetcongNgay = DAO.LayKetcongNgay(ngaydauthang, ngaycuoithang); var tableKetcongCa = DAO.LayKetcongCa(ngaydauthang, ngaycuoithang); var tableXPVang = DAO.LayTableXPVang(ngaydauthang, ngaycuoithang); var tableNgayLe = DAO.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)numLuongToiThieu.Value; var mucLuongTT17 = (int)numMucLuongTT17.Value; var DinhMuccomtrua = (int)numDinhMucComTrua.Value; var luongPTT = (float)num11LuongPTT.Value; var luongTrucBV = (float)num12LuongLeTetBV.Value; var phuCapTN = (float)num10PCTrachNhiem.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); int temp = 0; #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, out temp, out temp); // 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.TongNgayLV4008 + nv.ThongKeThang.TongTruCongTreVR + nv.ThongKeThang.TongTruCongSomVR + nv.ThongKeThang.TreSom_KoDuBuCong //ver 4.0.0.8 + nv.ThongKeThang.Phep + nv.ThongKeThang.Le //ver4.0.0.8 + 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, tong_luong_dieuchinh = 0d, tongKhauTruThuChiKhac = 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; // yêu cầu cũ (T1/2015) là có lương chờ việc tongQuyLuongNghiDinhCP += nv.chiTietLuong.LCB_Theo.Cong_CD_PC; // yêu cầu mới (T8/2015) là tách lương chờ việc ra //ver4.0.0.7 tong_qlcb_2 += nv.chiTietLuong.LCB_Theo.TongCong_CD_CV_PC + nv.chiTietLuong.LuongDieuChinh; //yêu cầu mới (T8/2015) là tách lương chờ việc ra khỏi quỹ lương cơ bản đưa vào quỹ lương sản phẩm tong_qlcb_2 += nv.chiTietLuong.LCB_Theo.Cong_CD_PC; //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 tong_luong_dieuchinh += nv.chiTietLuong.LuongDieuChinh; tongKhauTruThuChiKhac += 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)); nv.chiTietLuong.KhauTru.BHXH = Convert.ToDouble((nv.HeSo.LCBTT17 + nv.HeSo.PCTNTT17 + nv.HeSo.PCDHTT17 + nv.HeSo.PCCVTT17) * mucLuongTT17 * (nv.chiTietLuong.MucDongBHXH / 100f)); // tính BHXH theo TT17 [update T1/2018] // tính tiền cơm trưa var temp1 = DinhMuccomtrua - ((DinhMuccomtrua / congChuanThang) * nv.ThongKeThang.SoNgayNghiRO_NguyenNgay); 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; // yêu cầu mới (T8/2015) là tách lương chờ việc ra var tong_qlSP_A71_1_VaGiaCong = (_80perQuy100_04 + chitienGiacongNoibo + chitienGiacongNgoai) - tong_qlcb_2 - tongQuyLuongCV - TongLuongCongNhat_AllNV - tong_luong_dieuchinh - phuCapTN - luongPTT - luongTrucBV - tongKhauTruThuChiKhac; // yêu cầu mới (T1/2018) tongChiKhacTuQuyLuong = tongQuyLuongCV + phuCapTN + luongPTT + luongTrucBV + tongKhauTruThuChiKhac; double giaTri_1SP_B3_1 = (Math.Abs(tong_SPLamRa_B2_2 - 0d) > 0.001d) ? (tong_qlSP_A71_1_VaGiaCong / tong_SPLamRa_B2_2) : 0d; // 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 = DAO.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 = DAO.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, mucLuongTT17, luongPTT, luongTrucBV, phuCapTN, 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")); DAO.GhiNhatKyThaotac("Kết lương", noidung); #endregion }
private void XuatBBChamCong(object sender, WaitWindowEventArgs e) { string filePath = e.Arguments[0].ToString(); string tenNVLapBieu = e.Arguments[1].ToString(); string tenTrgBP = e.Arguments[2].ToString(); DateTime thang = (DateTime)e.Arguments[3]; List <cPhongBan> dsphongban = (List <cPhongBan>)e.Arguments[4]; var tongCongKoTinhCV = 0f; var congTinhLuong = 0f; var congKOtinhLuong = 0f; try //general try catch { List <WarningMessage> warningMessages = new List <WarningMessage>(); #region lấy thông tin từ csdl và khỏi tạo nv DateTime ngaydauthang = MyUtility.FirstDayOfMonth(dtpThang.Value), ngaycuoithang = MyUtility.LastDayOfMonth(dtpThang.Value); var tableKetcongNgay = DAO.LayKetcongNgay(ngaydauthang, ngaycuoithang); var tableKetcongCa = DAO.LayKetcongCa(ngaydauthang, ngaycuoithang); var tableXPVang = DAO.LayTableXPVang(ngaydauthang, ngaycuoithang); var tableNgayLe = DAO.DocNgayLe(ngaydauthang, ngaycuoithang); var tableDSNVChiCongnhatThang = DAO.LayTableCongNhat(ngaydauthang); var dsnv = new List <cUserInfo>(); XL.KhoiTaoDSNV_ChamCong(dsnv, (from p in dsphongban select p.ID).ToList(), 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 /* * List<cPhongBan> dsphongban = new List<cPhongBan>(); * // đưa về root node trước khi thực hiện * var root = treePhongBan.TopNode; * GetTopLevelNode(ref root);// mỗi lần duyệt node sẽ làm root node chuyển về parent của node cuối nên phải trả về node gốc để duyệt từ đầu * while (root.PrevNode != null) root = root.PrevNode; * GetNode_DuocThaotac_CheckKetcong(root, dsphongban); */ #endregion // xác định công chuẩn của tháng var congChuanThang = XL.TinhCongChuanCuaThang(ngaydauthang); #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 try { foreach (var nv in dsnv) { nv.ThongKeThang = new ThongKeCong_PC(); 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); } //load ds xp vắng //XL.LoadDSXPVang(nv.MaCC, nv.DSNgayCong, tableXPVang); //XL.LoadNgayLe(nv.DSNgayCong, tableNgayLe); 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); } var soNgayChuNhat = XL.DemSoNgayNghiChunhat(ngaydauthang, true, false); var soNgayThu7 = XL.DemSoNgayNghiChunhat(ngaydauthang, false, true); //v 4.0.0.1 int soNgayChamCongx2 = 0, soNgayNghiAnhHuongCongx2 = 0; foreach (var nv in dsnv) { XL.ThongKeThang(ref nv.ThongKeThang, nv.DSNgayCong, nv.NgayBDCongnhat, nv.NgayKTCongnhat, nv.LoaiCN, out soNgayChamCongx2, out soNgayNghiAnhHuongCongx2); // 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 { congTinhLuong = (nv.ThongKeThang.TongNgayLV4008 + nv.ThongKeThang.Phep + nv.ThongKeThang.Le //ver4.0.0.8 + nv.ThongKeThang.H_CT_PT); congKOtinhLuong = nv.ThongKeThang.TongTruCongTreVR + nv.ThongKeThang.TongTruCongSomVR + nv.ThongKeThang.TreSom_KoDuBuCong + nv.ThongKeThang.BHXH + nv.ThongKeThang.PTDT + nv.ThongKeThang.NghiRo; //ko có nv.ThongKeThang.CongCV_KB tongCongKoTinhCV = congTinhLuong + congKOtinhLuong; /* * tongCongKoTinhCV = (nv.ThongKeThang.TongNgayLV4008 + nv.ThongKeThang.TongTruCongTreVR+nv.ThongKeThang.TongTruCongSomVR + nv.ThongKeThang.TreSom_KoDuBuCong + nv.ThongKeThang.Phep + nv.ThongKeThang.Le //ver4.0.0.8 + nv.ThongKeThang.BHXH + nv.ThongKeThang.H_CT_PT + nv.ThongKeThang.PTDT + nv.ThongKeThang.NghiRo + nv.ThongKeThang.CongCV_KB);//DANGLAM */ nv.ThongKeThang.CongCV_Auto = congChuanThang - tongCongKoTinhCV; 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; if (XL.KiemTraDieuKienCongCVAuto_VuotNguong(nv.ThongKeThang.CongCV_Auto, soNgayThu7, soNgayChuNhat)) { warningMessages.Add( new WarningMessage { MaCC = nv.MaCC, MaNV = nv.MaNV, TenNV = nv.TenNV, NoiDung = string.Format( "Có số công chờ việc được tính tự động [{0}] công theo quy định vượt quá [{1}] ngày thứ Bảy trong tháng.", nv.ThongKeThang.CongCV_Auto.ToString("#0.0#"), soNgayThu7) }); } if (XL.KiemTraDieuKienChamCongx2(congChuanThang, congTinhLuong, soNgayChuNhat, soNgayChamCongx2, soNgayNghiAnhHuongCongx2) == 1) { warningMessages.Add( new WarningMessage { MaCC = nv.MaCC, MaNV = nv.MaNV, TenNV = nv.TenNV, NoiDung = string.Format( "Chấm công làm việc ngày nghỉ hàng tuần chưa đúng quy định ([{0}] ngày nghỉ >= [{1}] ngày chủ nhật).", soNgayNghiAnhHuongCongx2, soNgayChuNhat) }); } else if (XL.KiemTraDieuKienChamCongx2(congChuanThang, congTinhLuong, soNgayChuNhat, soNgayChamCongx2, soNgayNghiAnhHuongCongx2) == 2) { warningMessages.Add( new WarningMessage { MaCC = nv.MaCC, MaNV = nv.MaNV, TenNV = nv.TenNV, NoiDung = string.Format( "Chấm công làm việc ngày nghỉ hàng tuần chưa đúng quy định ([{0}] ngày chấm công làm việc ngày nghỉ hàng tuần + [{1}] ngày nghỉ > [{2}] ngày chủ nhật).", soNgayChamCongx2, soNgayNghiAnhHuongCongx2, soNgayChuNhat) }); } else if (XL.KiemTraDieuKienChamCongx2(congChuanThang, congTinhLuong, soNgayChuNhat, soNgayChamCongx2, soNgayNghiAnhHuongCongx2) == 3) { warningMessages.Add( new WarningMessage { MaCC = nv.MaCC, MaNV = nv.MaNV, TenNV = nv.TenNV, NoiDung = string.Format( "Nhân viên có [{0}] công làm việc vượt [{1}] ngày công chuẩn của tháng.", congTinhLuong.ToString("#0.0#"), congChuanThang.ToString("")) }); } } } catch (Exception ex) { lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), ex); } #endregion using (var p = new ExcelPackage()) { //2. xuat bb bang ket cong thang #region ghi sheet bang ket cong thang trinh ky p.Workbook.Worksheets.Add("BangKetCong"); var ws = p.Workbook.Worksheets["BangKetCong"]; ws.Name = "BangKetCong"; //Setting Sheet's name XL.ExportSheetBangKetcongThang(ws, MyUtility.FirstDayOfMonth(dtpThang.Value), MyUtility.LastDayOfMonth(dtpThang.Value), dsnv, tenNVLapBieu, tenTrgBP, XL2.PC30, XL2.PC50, XL2.PCTCC3, XL2.PC100, XL2.PC160, XL2.PC200, XL2.PC290); //info dsnv kết công bộ phận gồm cả nv công nhật, chính thức, vừa chính thức vừa công nhật khác với bảng lương #endregion //3. xuat bb chi tiết kết công #region ghi sheet chi tiết kết công p.Workbook.Worksheets.Add("ChiTietKetCong"); ws = p.Workbook.Worksheets["ChiTietKetCong"]; ws.Name = "ChiTietKetCong"; //Setting Sheet's name XL.ExportSheetBangChiTietKetCong(ws, MyUtility.FirstDayOfMonth(dtpThang.Value), MyUtility.LastDayOfMonth(dtpThang.Value), dsnv, XL2.PC30, XL2.PC50, XL2.PCTCC3, XL2.PC100, XL2.PC160, XL2.PC200, XL2.PC290); #endregion //4. xuất bb lưu ý nếu có if (warningMessages.Count > 0) { p.Workbook.Worksheets.Add("LUUY"); ws = p.Workbook.Worksheets["LUUY"]; ws.Name = "LuuY"; //Setting Sheet's name ws.Cells.Style.Font.Name = "Times New Roman"; ws.Cells.Style.Font.Size = 12; int top = 1, left = 1; int ir = top, ic = left; XL.FormatCell_T(ws, ref ir, ref ic, "Mã NV", plusCol: 1); XL.FormatCell_T(ws, ref ir, ref ic, "Tên NV", plusCol: 1); XL.FormatCell_T(ws, ref ir, ref ic, "Nội dung lưu ý", plusCol: 1, plusRow: 1); foreach (WarningMessage message in warningMessages) { ic = left; XL.FormatCell_W(ws, ref ir, ref ic, message.MaNV, colWidth: (int)L.MANV, plusCol: 1); XL.FormatCell_W(ws, ref ir, ref ic, message.TenNV, colWidth: (int)L.HOTEN, plusCol: 1); XL.FormatCell_W(ws, ref ir, ref ic, message.NoiDung, colWidth: 60, plusCol: 1, plusRow: 1); } } Byte[] bytes = p.GetAsByteArray(); XL.XuatFileExcel(filePath, bytes, "frm_KetCongBoPhan XuatBBChamCong "); } if (warningMessages.Count > 0) { MessageBox.Show("Vui lòng xem lại các cảnh báo của quá trình kết công trong sheet lưu ý.", Resources.Caption_ThongBao); } } catch (Exception ex) //general try catch { lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), ex); MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi); } }
public void ThucHienKetCong(object sender, WaitWindowEventArgs e) { #region string TemplateShiftParams = @"Ca: [{0}]; ID: [{1}]; Onn: [{2}]; Off: [{3}]; BD_NDVao: [{4}]; KT_NDVao: [{5}]; BD_NDRa: [{6}]; KT_NDRa: [{7}]; CPTre: [{8}]ph: [{9}]; CPSom: [{10}]ph: [{11}]; AfterOT: [{12}]ph: [{13}]; LunchMin: [{14}]; WKTime: [{15}]; WKDay: [{16}]; DayCount: [{17}]; QuaDem: [{18}]; CaMoRong: [{19}]; CaTuDo: [{20}]; TachCaDem: [{21}];"; string templateThongTinCa = @"Thông tin ca [{10}] (ký hiệu [{11}]): Vào ca lúc [{0}], Ra ca lúc [{1}], Ca [{2}], Ca làm việc [{3}] tiếng, được nghỉ trưa [{4}] phút, tính [{5}] công, cho phép trễ [{6}] phút, ra sớm [{7}] phút, thời gian làm thêm tối thiểu [{8}] phút, [{9}] qua xác nhận quản lý"; string shiftParams = string.Empty, thongtinCa = string.Empty; #endregion DateTime thang = (DateTime)e.Arguments[0]; List <cPhongBan> dsphongban = (List <cPhongBan>)e.Arguments[1]; #region lấy ngày BD và kết thúc DateTime ngaydauthang = MyUtility.FirstDayOfMonth(thang), ngaycuoithang = MyUtility.LastDayOfMonth(thang); var ngayBD_Bef2D = ngaydauthang.AddDays(-2d); var ngayKT_Aft2D = ngaycuoithang.AddDays(2d); #endregion try //general try catch { // khởi tạo các nhân viên chấm công thuộc phòng ban check kết công (được thao tác) và tính toán công, phụ cấp XL.KhoiTaoDSNV_ChamCong(m_DSNV, (from cPhongBan item in dsphongban select item.ID).ToList(), dsphongban); XL.XemCong_v08(m_DSNV, ngayBD_Bef2D, ngayKT_Aft2D); // sau khi tính công xong thì cập nhật lại xử lý các trường hợp công nhật var tableCongNhat = DAO.LayTableCongNhat(thang); foreach (DataRow row in tableCongNhat.Rows) { int macc = (int)row["UserEnrollNumber"]; DateTime ngayBD = (DateTime)row["NgayBatDau"]; DateTime ngayKT = (DateTime)row["NgayKetThuc"]; var nv = m_DSNV.Find(o => o.MaCC == macc); //tìm nv , ko tìm thấy thì tiếp tục if (nv == null) { continue; } //duyệt qua các ngày công để set lại phụ cấp, xoá hết các ds vắng float CongCongnhat = 0f; foreach (var ngayCong in nv.DSNgayCong.Where(o => o.Ngay >= ngayBD && o.Ngay <= ngayKT)) { ngayCong.PhuCaps = new PhuCap(); ngayCong.QuaDem = false; ngayCong.DSVang.Clear(); CongCongnhat += ngayCong.TongCong_4008; } // cập nhật số ngày công công nhật xuống csdl int kq1 = SqlDataAccessHelper.ExecNoneQueryString(" update DSNVChiCongNhatThang set SoNgayCong = @SoNgayCong where UserEnrollNumber= @UserEnrollNumber", new string[] { "@SoNgayCong", "@UserEnrollNumber" }, new object[] { CongCongnhat, macc }); //info ko cần log if (kq1 == 0) { MessageBox.Show(Resources.Text_CoLoi); } } // xoá bỏ các kết công cũ của tháng (nếu có) để ghi kết công mới cho tháng int kq = DAO.DelKetCongCa_Ngay(ngaydauthang, ngaycuoithang, (from nv in m_DSNV select nv.MaCC).ToList()); //bool flagError = false; foreach (var nv in m_DSNV) { foreach (var ngayCong in nv.DSNgayCong.Where(item => item.Ngay >= ngaydauthang && item.Ngay <= ngaycuoithang)) { foreach (var CIO in ngayCong.DSVaoRa) { int kq1 = 0; if (CIO.HaveINOUT < 0) { kq1 = DAO.InsKetCongCa(nv.MaCC, ngayCong.Ngay, (CIO.Vao != null) ? (DateTime?)CIO.Vao.Time : null, (CIO.Raa != null) ? (DateTime?)CIO.Raa.Time : null, null, string.Empty, false, false, false, false, false, //ver 4.0.0.4 VaoTreLaCV, RaSomLaCV false, false, false, 0f, false, 0f, //ver 4.0.0.8@BuGioTre, @BuGioSom, @BuPhepTre, @CongBuPhepTre, @BuPhepSom, @CongBuPhepSom, 0f, 0f, 0f, 0f, 0f, 0f, //ver 4.0.0.8 CongTrongCa, CongNgoaiCa, TruCongTreVR, TruCongSomVR, TruCongTreBu, TruCongSomBu, 0, false, string.Empty, null, null, null, null, null, null, null, null, string.Empty, string.Empty, CIO.HaveINOUT, 0f); } else { #region tạo shiftParams var sp = CIO.ThuocCa; shiftParams = string.Format(TemplateShiftParams, sp.Code, sp.ID, sp.Duty.Onn.ToString(@"d\ hh\:mm"), sp.Duty.Off.ToString(@"d\ hh\:mm"), sp.NhanDienVao.Onn.ToString(@"d\ hh\:mm"), sp.NhanDienVao.Off.ToString(@"d\ hh\:mm"), sp.NhanDienRaa.Onn.ToString(@"d\ hh\:mm"), sp.NhanDienRaa.Off.ToString(@"d\ hh\:mm"), sp.LateeMin.Minutes, sp.chophepTreTS.ToString(@"d\ hh\:mm"), sp.EarlyMin.Minutes, sp.chophepSomTS.ToString(@"d\ hh\:mm"), sp.AfterOTMin.Minutes, sp.batdaulamthemTS.ToString(@"d\ hh\:mm"), sp.LunchMin.Minutes, sp.WorkingTimeTS.TotalMinutes.ToString("#####"), sp.Workingday.ToString("0.0"), sp.DayCount, Convert.ToInt32(sp.QuaDem), Convert.ToInt32(sp.IsExtended), Convert.ToInt32(sp.Is_CaTuDo), Convert.ToInt32(sp.TachCaDem)); thongtinCa = string.Format(templateThongTinCa, sp.Duty.Onn.ToString(@"d\ hh\:mm"), sp.Duty.Off.ToString(@"d\ hh\:mm"), sp.Code, sp.WorkingTimeTS.TotalMinutes.ToString("#####"), sp.LunchMin.Minutes, sp.Workingday.ToString("0.0#"), sp.LateeMin.Minutes, sp.EarlyMin.Minutes, Convert.ToInt32(sp.AfterOTMin.TotalMinutes), CIO.DaXN ? "đã" : "chưa", sp.Code, sp.KyHieuCC); #endregion kq1 = DAO.InsKetCongCa(nv.MaCC, ngayCong.Ngay, CIO.Vao.Time, CIO.Raa.Time, CIO.ThuocCa.ID, CIO.ThuocCa.Code, CIO.DaXN, CIO.DuyetChoPhepVaoTre, CIO.DuyetChoPhepRaSom, CIO.VaoTreTinhCV, CIO.RaaSomTinhCV, //ver 4.0.0.4 CIO.ChoBuGioTre, CIO.ChoBuGioSom, CIO.ChoBuPhepTre, CIO.BuCongPhepTreCongDon, CIO.ChoBuPhepSom, CIO.BuCongPhepSomCongDon, //ver 4.0.0.8 CIO.CongTrongCa, CIO.CongNgoaiCa, CIO.TruCongTreVR, CIO.TruCongSomVR, CIO.TruCongTreBu, CIO.TruCongSomBu, //ver 4.0.0.8 CIO.OTMin, CIO.QuaDem, CIO.ThuocCa.KyHieuCC, CIO.TG.GioLamViec, CIO.TG.LamThem, CIO.TG.LamBanDem, CIO.TG.GioThuc, CIO.TG.VaoTre, CIO.TG.RaaSom, CIO.TD.BD_LV, CIO.TD.KT_LV, thongtinCa, shiftParams, CIO.HaveINOUT, CIO.Cong); } } if (ngayCong.DSVaoRa.Count != 0) { int kq2 = DAO.InsKetCongNgay(nv.MaCC, ngayCong.Ngay, ngayCong.TongCong_4008, /*ngayCong.TongNgayLVtest*/ 0f, ngayCong.PhuCaps._TongPC, //ver4.0.0.1 //ver 4.0.0.8 ngayCong.TongCong_4008,TongNgayLV=0f ngayCong.PhuCaps._30_dem, ngayCong.PhuCaps._50_TC, ngayCong.PhuCaps._100_TCC3, ngayCong.PhuCaps._100_LVNN_Ngay, ngayCong.PhuCaps._150_LVNN_Dem, ngayCong.PhuCaps._200_LeTet_Ngay, ngayCong.PhuCaps._250_LeTet_Dem, ngayCong.PhuCaps._Cus, ngayCong.TG.GioLamViec, ngayCong.TG.LamThem, ngayCong.TG.LamBanDem, ngayCong.TG.GioThuc, ngayCong.QuaDem, ngayCong.CongDinhMucDuoi8Tieng, ngayCong.CongTichLuy, ngayCong.TruCongTreVR, ngayCong.TruCongSomVR, //ver 4.0.0.8 ngayCong.TruCongTreBu, ngayCong.TruCongSomBu, ngayCong.CongBuPhepTre, ngayCong.CongBuPhepSom //ver 4.0.0.8 ); } //tbd fix lỗi phụ cấp công tác những ngày ko có làm việc else { if (ngayCong.DSVang.Count != 0) { int kq2 = DAO.InsKetCongNgay(nv.MaCC, ngayCong.Ngay, ngayCong.TongCong_4008, /*ngayCong.TongNgayLVtest*/ 0f, ngayCong.PhuCaps._TongPC, //ver4.0.0.1 //ver 4.0.0.8 ngayCong.TongCong_4008,TongNgayLV=0f ngayCong.PhuCaps._30_dem, ngayCong.PhuCaps._50_TC, ngayCong.PhuCaps._100_TCC3, ngayCong.PhuCaps._100_LVNN_Ngay, ngayCong.PhuCaps._150_LVNN_Dem, ngayCong.PhuCaps._200_LeTet_Ngay, ngayCong.PhuCaps._250_LeTet_Dem, ngayCong.PhuCaps._Cus, ngayCong.TG.GioLamViec, ngayCong.TG.LamThem, ngayCong.TG.LamBanDem, ngayCong.TG.GioThuc, ngayCong.QuaDem, ngayCong.CongDinhMucDuoi8Tieng, ngayCong.CongTichLuy, ngayCong.TruCongTreVR, ngayCong.TruCongSomVR, //ver 4.0.0.8 ngayCong.TruCongTreBu, ngayCong.TruCongSomBu, ngayCong.CongBuPhepTre, ngayCong.CongBuPhepSom //ver 4.0.0.8 ); } } } } // sau khi ghi kết công thì cập nhật tình trạng kết công (đã kết công), đồng thời ghi log đã kết công DAO.UpdInsKetCongBoPhan(ngaydauthang, (from cPhongBan item in dsphongban select item).ToList()); } catch (Exception ex) //general try catch { lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), ex); MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi); } }
private void btnCapNhatVaoCSDL_Click(object sender, EventArgs e) { IsReload = true; 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 var table = dgrdDThuchiExcel.DataSource as DataTable; DateTime thang = m_Thang; var flagError = false; #region xác nhận trước khi thực hiện if ( MessageBox.Show(string.Format("Bạn muốn cập nhật cho tháng {0}?", thang.ToString("M/yyyy")), Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No) { return; } #endregion if (table != null) { var tableTatCaNV = XL.LayDSNV(true); //tbd foreach (DataRow row in table.Rows) { #region lấy thông tin var userFullcode = row["UserFullCode"].ToString().TrimStart().TrimEnd().ToLower(); //var arrRows = tableTatCaNV.Select("UserFullCode = '" +userFullcode + "'","", DataViewRowState.CurrentRows); var resultRow = (tableTatCaNV.Rows.Cast <DataRow>().Where( dataRow => dataRow["UserFullCode"].ToString().TrimStart().TrimEnd().ToLower() == userFullcode)).SingleOrDefault(); if (resultRow == null) { continue; } var tenNV = resultRow["UserFullName"].ToString(); var UserEnrollNumber = (int)resultRow["UserEnrollNumber"]; var luongdieuchinh = (double)row["LuongDieuChinh"]; var tamung = (double)row["TamUng"]; var thuchikhac = (double)row["ThuChiKhac"]; var mucdongbhxhDouble = (double)row["MucDongBHXH"]; var mucdongbhxhFloat = Convert.ToSingle(mucdongbhxhDouble); #endregion var kq = DAO.CapnhatThuchiThang(UserEnrollNumber, thang, luongdieuchinh, tamung, thuchikhac, mucdongbhxhFloat); #region báo lỗi nếu ko cập nhật được if (kq == 0) { flagError = true; ACMessageBox.Show(string.Format("Xảy ra lỗi trong quá trình cập nhật tại vị trí nhân viên {0}, mã {1}.\nVui lòng thử lại.", tenNV, userFullcode), "Lỗi", 3000); break; } #endregion } if (flagError == false) { ACMessageBox.Show("Thực hiện thành công.", "Thông báo", 2000); } } }
private void XuatBangChiTiet(object sender, WaitWindowEventArgs e) { string saveFileName = e.Arguments[0].ToString(); var dsnv = new List <cUserInfo>(); var ngaydauthang = MyUtility.FirstDayOfMonth(m_Thang); var ngaycuoithang = MyUtility.LastDayOfMonth(m_Thang); #region lấy dữ liệu kết lương để xuất var tableKetLuongThang = DAO.LayKetLuongThang(ngaydauthang); var tableThongsoKetluongThang = DAO.LayThongsoKetluongThang(ngaydauthang); var tableDSNVChiCongnhatThang = DAO.LayTableCongNhat(ngaydauthang); var tableTongLuongCongnhat = SqlDataAccessHelper.ExecuteQueryString( @"select CAST(SUM (SoNgayCong*DonGiaLuong) as float) from DSNVChiCongNhatThang where Thang=@Thang", new string[] { "@Thang" }, new object[] { ngaydauthang }); var tongLuongCongnhat = (tableTongLuongCongnhat.Rows[0][0] != DBNull.Value) ? (double)tableTongLuongCongnhat.Rows[0][0] : 0d; var tongLuongDieuchinh = (from DataRow row in tableKetLuongThang.Rows let luongdieuchinh = (row["LuongDieuChinh"] != DBNull.Value) ? (double)row["LuongDieuChinh"] : 0d select luongdieuchinh).Sum(); var tableKetcongNgay = DAO.LayKetcongNgay(ngaydauthang, ngaycuoithang); var tableKetcongCa = DAO.LayKetcongCa(ngaydauthang, ngaycuoithang); var tableXPVang = DAO.LayTableXPVang(ngaydauthang, ngaycuoithang); var tableNgayLe = DAO.DocNgayLe(ngaydauthang, ngaycuoithang); #endregion ChuanBiDuLieuXuatLuong(dsnv, ngaydauthang, ngaycuoithang, tableKetLuongThang, tableKetcongNgay, tableKetcongCa, tableXPVang, tableNgayLe, tableDSNVChiCongnhatThang); var @continue = true; FileInfo template, fileResult; try { template = new FileInfo(Settings.Default.pathReportChiTietLuong); } catch (Exception ex) { if (ex is System.Security.SecurityException || ex is UnauthorizedAccessException) { MessageBox.Show(string.Format(Resources.Text_KoCoQuyenTruyCapFileX, "mẫu xuất báo biểu"), Resources.Caption_Loi); return; } else if (ex is NotSupportedException || ex is PathTooLongException) { MessageBox.Show(string.Format(Resources.Text_UnsupportedFile_PathTooLong, "mẫu xuất báo biểu"), Resources.Caption_Loi); return; } else { MessageBox.Show(string.Format(Resources.Text_CoLoi), Resources.Caption_Loi); return; } } try { fileResult = new FileInfo(saveFileName); } catch (Exception ex) { if (ex is System.Security.SecurityException || ex is UnauthorizedAccessException) { MessageBox.Show(string.Format(Resources.Text_KoCoQuyenTruyCapFileX, "mẫu xuất báo biểu"), Resources.Caption_Loi); return; } else if (ex is NotSupportedException || ex is PathTooLongException) { MessageBox.Show(string.Format(Resources.Text_UnsupportedFile_PathTooLong, "mẫu xuất báo biểu"), Resources.Caption_Loi); return; } else { MessageBox.Show(string.Format(Resources.Text_CoLoi), Resources.Caption_Loi); return; } } try { using (var packageResult = new ExcelPackage(template)) { var workbook = packageResult.Workbook; #region ghi sheet thong so var ws = workbook.Worksheets["ThongSo"]; ws.Name = "ThongSo"; //Setting Sheet's name XL.ExportSheetThongSo1(ws, ngaydauthang, tableThongsoKetluongThang); #endregion #region ghi sheet chi tiết từng ngày công ws = workbook.Worksheets["BangChiTietNgayCong"]; ws.Name = "BangChiTietNgayCong"; //XL.ExportSheetChiTietNgayCong1(ws, dsnv); #endregion var ws_Template = workbook.Worksheets["BangChiTietLuong"]; XL.ExportSheetChiTietLuong1(ws_Template, dsnv); while (@continue) { try { packageResult.SaveAs(fileResult); @continue = false; } catch (Exception ex) { lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), ex); if (ex is IOException) { MessageBox.Show(Resources.Text_FileDangMoBoiUngDungKhac, Resources.Caption_Loi); @continue = true; } else { MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi); @continue = false; } } } } } catch (Exception ex) { if (ex is System.Security.SecurityException || ex is UnauthorizedAccessException) { MessageBox.Show(string.Format(Resources.Text_KoCoQuyenTruyCapFileX, "mẫu xuất báo biểu"), Resources.Caption_Loi); return; } else if (ex is NotSupportedException || ex is PathTooLongException) { MessageBox.Show(string.Format(Resources.Text_UnsupportedFile_PathTooLong, "mẫu xuất báo biểu"), Resources.Caption_Loi); return; } else if (ex is IOException) { MessageBox.Show(Resources.Text_FileDangMoBoiUngDungKhac, Resources.Caption_Loi); return; } else { MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi); return; } } }
private void XuatBBLuong(object sender, WaitWindowEventArgs e) { string tenNVLapBieu = (string)e.Arguments[0]; string saveFileName = (string)e.Arguments[1]; var ngaydauthang = MyUtility.FirstDayOfMonth(m_Thang); var ngaycuoithang = MyUtility.LastDayOfMonth(m_Thang); //#region lấy dữ liệu kết lương để xuất var tableKetLuongThang = DAO.LayKetLuongThang(ngaydauthang); var tableThongsoKetluongThang = DAO.LayThongsoKetluongThang(ngaydauthang); var tableDSNVChiCongnhatThang = DAO.LayTableCongNhat(ngaydauthang); var tableTongLuongCongnhat = SqlDataAccessHelper.ExecuteQueryString( @"select CAST(SUM (SoNgayCong*DonGiaLuong) as float) from DSNVChiCongNhatThang where Thang=@Thang", new string[] { "@Thang" }, new object[] { ngaydauthang }); var tongLuongCongnhat = (tableTongLuongCongnhat.Rows[0][0] != DBNull.Value) ? (double)tableTongLuongCongnhat.Rows[0][0] : 0d; var tongLuongDieuchinh = (from DataRow row in tableKetLuongThang.Rows let luongdieuchinh = (row["LuongDieuChinh"] != DBNull.Value) ? (double)row["LuongDieuChinh"] : 0d select luongdieuchinh).Sum(); var tableKetcongNgay = DAO.LayKetcongNgay(ngaydauthang, ngaycuoithang); var tableKetcongCa = DAO.LayKetcongCa(ngaydauthang, ngaycuoithang); var tableXPVang = DAO.LayTableXPVang(ngaydauthang, ngaycuoithang); var tableNgayLe = DAO.DocNgayLe(ngaydauthang, ngaycuoithang); var dsnv = new List <cUserInfo>(); ChuanBiDuLieuXuatLuong(dsnv, ngaydauthang, ngaycuoithang, tableKetLuongThang, tableKetcongNgay, tableKetcongCa, tableXPVang, tableNgayLe, tableDSNVChiCongnhatThang); //#endregion //fortesting testing region [02] using (var p = new ExcelPackage()) { //1. xuat bb bang thong so san luong, don gia, he so pc #region lay thong so cac loai pc de ghi cot tieu de int pc30 = (int)tableThongsoKetluongThang.Rows[0]["HSPCDem"]; int pc50 = (int)tableThongsoKetluongThang.Rows[0]["HSPCTangCuong"]; int pctcc3 = (int)tableThongsoKetluongThang.Rows[0]["HSPCTangCuong_Dem"]; int pc100 = (int)tableThongsoKetluongThang.Rows[0]["HSPC200"]; int pc160 = (int)tableThongsoKetluongThang.Rows[0]["HSPC260"]; int pc200 = (int)tableThongsoKetluongThang.Rows[0]["HSPC300"]; int pc290 = (int)tableThongsoKetluongThang.Rows[0]["HSPC390"]; #endregion //2. xuat bb bang ket cong thang #region ghi sheet bang ket cong thang trinh ky p.Workbook.Worksheets.Add("BangKetCong"); var ws = p.Workbook.Worksheets["BangKetCong"]; ws.Name = "BangKetCong"; //Setting Sheet's name XL.ExportSheetBangKetcongThang(ws, ngaydauthang, ngaycuoithang, dsnv, string.Empty, string.Empty, pc30, pc50, pctcc3, pc100, pc160, pc200, pc290); #endregion //3. xuat bb chi tiết kết công #region ghi sheet chi tiết kết công p.Workbook.Worksheets.Add("ChiTietKetCong"); ws = p.Workbook.Worksheets["ChiTietKetCong"]; ws.Name = "ChiTietKetCong"; //Setting Sheet's name XL.ExportSheetBangChiTietKetCong(ws, ngaydauthang, ngaycuoithang, dsnv, pc30, pc50, pctcc3, pc100, pc160, pc200, pc290); #endregion //4. xuat bb bang luong cong nhat #region ghi sheet bang luong cong nhat p.Workbook.Worksheets.Add("BangLuongCongNhat"); ws = p.Workbook.Worksheets["BangLuongCongNhat"]; ws.Name = "BangLuongCongNhat"; XL.ExportSheetBangLuongCongNhat(ws, ngaydauthang, tableDSNVChiCongnhatThang); #endregion //5. xuat bb bang luong chinh thuc #region ghi sheet bảng lương p.Workbook.Worksheets.Add("BangLuong"); ws = p.Workbook.Worksheets["BangLuong"]; ws.Name = "BangLuong"; XL.ExportSheetBangLuong(ws, m_Thang, dsnv, tenNVLapBieu); #endregion //6. xuat bb bang tong hop so lieu giam doc ky duyet #region ghi sheet bảng tổng hợp số liệu p.Workbook.Worksheets.Add("BangTongHopChi"); ws = p.Workbook.Worksheets["BangTongHopChi"]; ws.Name = "BangTongHopChi"; XL.ExportSheetTongHopChi(ws, m_Thang, tableThongsoKetluongThang, tongLuongCongnhat, tongLuongDieuchinh); #endregion //7. xuat sheet thong ke sữa #region ghi sheet thống kê BD ĐH p.Workbook.Worksheets.Add("BangThongKeBoiDuongDocHai"); ws = p.Workbook.Worksheets["BangThongKeBoiDuongDocHai"]; ws.Name = "BangThongKeBoiDuongDocHai"; XL.ExportSheetBangThongKeSua(ws, ngaydauthang, ngaycuoithang, dsnv); #endregion Byte[] bytes = p.GetAsByteArray(); XL.XuatFileExcel(saveFileName, bytes, "frm4LuuHSPC XuatBBLuong"); } }
private void btnChamCong_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } /* 1. lấy dsnv check, lấy tháng * */ string strChecked_ArrMaCC = checkedDSNV.EditValue.ToString(); if (string.IsNullOrEmpty(strChecked_ArrMaCC)) { ACMessageBox.Show(Resources.Text_ChuaChonNV, Resources.Caption_ThongBao, 2000); return; } List <int> arrMaCC = new List <int>(); strChecked_ArrMaCC.Split(new char[] { ',' }).ToList().ForEach(item => arrMaCC.Add(int.Parse(item))); List <cUserInfo> listNhanVien = new List <cUserInfo>(); DataTable tableDSNV = checkedDSNV.Properties.DataSource as DataTable; if (tableDSNV == null) { return; } foreach (int maCC in arrMaCC) { DataRow[] row = tableDSNV.Select("UserEnrollNumber=" + maCC); cUserInfo nhanvien = new cUserInfo { MaCC = (int)row[0]["UserEnrollNumber"], MaNV = row[0]["UserFullCode"].ToString(), TenNV = row[0]["UserFullName"].ToString(), }; XL.GetLichTrinhNV(nhanvien, row[0]["SchID"] != DBNull.Value ? (int)row[0]["SchID"] : (int?)null); listNhanVien.Add(nhanvien); } DateTime ngaybd = MyUtility.FirstDayOfMonth(dateNavigator1.DateTime); DateTime ngaykt = MyUtility.LastDayOfMonth(ngaybd); XL.XemCongThoiGianChuaKetLuong(listNhanVien, ngaybd, ngaykt); int soTH_ThieuChamCong, soTH_KoNhanDienCa, soTH_OLaiChuaXN, soTH_VaoTreRaSom, soTH_VaoRaEdited, soTH_DaXN, soTH_DaXN_LamThem, soTH_ChoPhepTreSom, soTH_VaoTre_RaSom_CoLamBu, soTH_XinPhepVang; this.GhiNhanThongBao(listNhanVien, ngaybd, ngaykt, out soTH_ThieuChamCong, out soTH_KoNhanDienCa, out soTH_OLaiChuaXN, out soTH_VaoTreRaSom, out soTH_VaoRaEdited, out soTH_DaXN, out soTH_DaXN_LamThem, out soTH_ChoPhepTreSom, out soTH_VaoTre_RaSom_CoLamBu, out soTH_XinPhepVang); lbThieuChamCong.Text = string.Format(Resources.LabelText_ThieuChamCong, soTH_ThieuChamCong); lbKhongNhanDienCa.Text = string.Format(Resources.LabelText_KoNhanDienCa, soTH_KoNhanDienCa); lbOLaiChuaXN.Text = string.Format(Resources.LabelText_OLaiChuaXN, soTH_OLaiChuaXN); lbVaoTreRaSom.Text = string.Format(Resources.LabelText_VaoTreRaSom, soTH_VaoTreRaSom); lbVaoRaBiChinhSua.Text = string.Format(Resources.LabelText_VaoRaBiChinhSua, soTH_VaoRaEdited); lbDaXacNhanCa.Text = string.Format(Resources.LabelText_DaXacNhanCa, soTH_DaXN); lbDaXacNhanLamThem.Text = string.Format(Resources.LabelText_DaXacNhanLamThemGio, soTH_DaXN_LamThem); lbChoPhepTreSom.Text = string.Format(Resources.LabelText_ChoPhepTreSom, soTH_ChoPhepTreSom); lbTreSomCoLamBu.Text = string.Format(Resources.LabelText_TreSomCoLamBu, soTH_VaoTre_RaSom_CoLamBu); lbXinPhepVang.Text = string.Format(Resources.LabelText_XinPhepVang, soTH_XinPhepVang); DataTable table = tao(); populatedata(listNhanVien, table); //dataGridView1.DataSource = table; gridControl1.DataSource = table; lbThieuChamCong.Tag = listNhanVien; }