public static void LoadThongtinLamViecCongNhat(int MaCC, ref DateTime NgayBDCongnhat, ref DateTime NgayKTCongnhat, ref LoaiCongNhat NVCongnhat, List <cNgayCong> DSNgayCong, DataTable tableDSNVChiCongnhatThang) //info cái này chỉ dành cho nhân viên chính thức chưa áp dụng cho nhân viên công nhật // tìm các nhân viên vừa làm công nhật vừa làm chính thức { var rowsCongNhat = (from DataRow tempRow in tableDSNVChiCongnhatThang.Rows where (int)tempRow["UserEnrollNumber"] == MaCC // && (tempRow["NVChinhThuc"] != DBNull.Value && (bool)tempRow["NVChinhThuc"] == true select tempRow).SingleOrDefault(); // với các nhân viên này thì chỉ tính công khoảng thời gian làm công nhật, các khoảng khác phải loại bỏ if (rowsCongNhat != null) { NgayBDCongnhat = (DateTime)rowsCongNhat["NgayBatDau"]; NgayKTCongnhat = (DateTime)rowsCongNhat["NgayKetThuc"]; NVCongnhat = ((bool)rowsCongNhat["NVChinhThuc"]) ? LoaiCongNhat.NVCongNhatVaChinhThuc : LoaiCongNhat.NVCongNhat; // loại bỏ ds vắng, ds ngày lễ trong khoảng thời gian này DateTime ngayBDCongnhat = NgayBDCongnhat, ngayKTCongnhat = NgayKTCongnhat; // gán biến vì anonymousMethod ko chấp nhận ref, out foreach (var ngaycongtemp in DSNgayCong.Where(item => item.Ngay >= ngayBDCongnhat && item.Ngay <= ngayKTCongnhat)) { ngaycongtemp.DSVang.Clear(); ngaycongtemp.PhuCaps = new PhuCap(); ngaycongtemp.QuaDem = false; } } else { NgayBDCongnhat = DateTime.MinValue; NgayKTCongnhat = DateTime.MinValue; NVCongnhat = LoaiCongNhat.NVChinhThuc; } }
public static void ThongKeThang(ref ThongKeCong_PC thongKeThang, List <cNgayCong> dsNgayCong, DateTime ngayBDCongnhat, DateTime ngayKTCongnhat, LoaiCongNhat nvChinhThuc, out int SoNgayChamCongx2, out int SoNgayNghiAnhHuongCongx2)//v4.0.0.9 { SoNgayChamCongx2 = 0; SoNgayNghiAnhHuongCongx2 = 0; if (nvChinhThuc == LoaiCongNhat.NVCongNhat) // chỉ làm công nhật, chỉ tính công công nhật trong khoảng gian từ bắt đầu đến kết thúc { thongKeThang.Cong_Congnhat = (dsNgayCong .Where(item => item.Ngay >= ngayBDCongnhat && item.Ngay <= ngayKTCongnhat) .Sum(item => item.TongCong_4008)); } else //2 trường hợp, chính thức và vừa chính thức vừa công nhật { // trường hợp chỉ làm chính thức if (nvChinhThuc == LoaiCongNhat.NVChinhThuc) { foreach (var ngayCong in dsNgayCong) { bool LaNgayChamCongx2, LaNgayNghiAnhHuongCongx2; XL.ThongKeNgay(ref thongKeThang, ngayCong, out LaNgayChamCongx2, out LaNgayNghiAnhHuongCongx2); SoNgayChamCongx2 += (LaNgayChamCongx2) ? 1 : 0; SoNgayNghiAnhHuongCongx2 += (LaNgayNghiAnhHuongCongx2) ? 1 : 0; } } else // vừa làm công nhật vừa làm chính thức { thongKeThang.Cong_Congnhat = (dsNgayCong .Where(item => item.Ngay >= ngayBDCongnhat && item.Ngay <= ngayKTCongnhat) .Sum(item => item.TongCong_4008)); bool LaNgayChamCongx2, LaNgayNghiAnhHuongCongx2; foreach (var ngayCong in dsNgayCong.Where(item => item.Ngay <ngayBDCongnhat || item.Ngay> ngayKTCongnhat)) { XL.ThongKeNgay(ref thongKeThang, ngayCong, out LaNgayChamCongx2, out LaNgayNghiAnhHuongCongx2); } } #region 4.0.0.8 xét lại bù giờ var tempTongCongTreSomBu = (thongKeThang.TongTruCongTreBu + thongKeThang.TongTruCongSomBu); var tempTongCongTreSom_KoDuBu = 0f; if (thongKeThang.TongCongTichLuy >= tempTongCongTreSomBu) { thongKeThang.TreSom_KoDuBuCong = 0f; thongKeThang.TreSom_DuocBuCong = tempTongCongTreSomBu; thongKeThang.TichLuy_PhanDu = thongKeThang.TongCongTichLuy - thongKeThang.TreSom_DuocBuCong; } else { thongKeThang.TreSom_DuocBuCong = thongKeThang.TongCongTichLuy; //tempTongCongBu - thongKeThang.TongCongTichLuy; thongKeThang.TichLuy_PhanDu = 0f; thongKeThang.TreSom_KoDuBuCong = tempTongCongTreSomBu - thongKeThang.TongCongTichLuy; } thongKeThang.TongNgayLV4008 = thongKeThang.TongCongDinhMuc8Tieng + thongKeThang.TichLuy_PhanDu + thongKeThang.TreSom_DuocBuCong; //thongKeThang.TongNgayLV4008 += tempTongCongTreSom_KoDuBu; // phần ko đủ giờ bù là phần việc riêng //thongKeThang.TongNgayLV4008 += thongKeThang.TongTruCongTreVR + thongKeThang.TongTruCongSomVR;// cộng thêm phần trễ sớm việc riêng #endregion } }
public static void ThongKeThang(ref ThongKeCong_PC thongKeThang, List <cNgayCong> dsNgayCong, DateTime ngayBDCongnhat, DateTime ngayKTCongnhat, LoaiCongNhat nvChinhThuc) { if (nvChinhThuc == LoaiCongNhat.NVCongNhat) // chỉ làm công nhật, chỉ tính công công nhật trong khoảng gian từ bắt đầu đến kết thúc { thongKeThang.Cong_Congnhat = (dsNgayCong .Where(item => item.Ngay >= ngayBDCongnhat && item.Ngay <= ngayKTCongnhat) .Sum(item => item.TongCong)); } else //2 trường hợp, chính thức và vừa chính thức vừa công nhật { // trường hợp chỉ làm chính thức if (nvChinhThuc == LoaiCongNhat.NVChinhThuc) { foreach (var ngayCong in dsNgayCong) { XL.ThongKeNgay(ref thongKeThang, ngayCong); } } else // vừa làm công nhật vừa làm chính thức { thongKeThang.Cong_Congnhat = (dsNgayCong .Where(item => item.Ngay >= ngayBDCongnhat && item.Ngay <= ngayKTCongnhat) .Sum(item => item.TongCong)); foreach (var ngayCong in dsNgayCong.Where(item => item.Ngay <ngayBDCongnhat || item.Ngay> ngayKTCongnhat)) { XL.ThongKeNgay(ref thongKeThang, ngayCong); } } } }