public decimal?GetLuongDongBaoHiem(decimal prkeyhoso) { var ngayhieuluc = (from t in dataContext.HOSO_LUONGs where t.NgayHieuLuc <= DateTime.Now && t.PrKeyHoSo == prkeyhoso select t).ToList(); if (ngayhieuluc.Count < 1) { return(0); } DateTime NgayHieuLucMax = ngayhieuluc.Max(p => p.NgayHieuLuc); //if(ngayhieuluc.Count<1) return 0; //DateTime NgayHieuLucMax=new DateTime(1992,1,1); //foreach(var item in ngayhieuluc) //{ // if(item.NgayHieuLuc>NgayHieuLucMax) NgayHieuLucMax=item.NgayHieuLuc; //} DAL.HOSO_LUONG dong = (from t in ngayhieuluc where t.NgayHieuLuc == NgayHieuLucMax orderby t.NgayQuyetDinh descending select t).FirstOrDefault(); if (dong == null) { return(0); } if (dong.LuongDongBHXH == null) { return(0); } return((decimal)dong.LuongDongBHXH); }
//phục vụ cho việc lấy thay đổi từ quyết định lương //đầu vào: idnhanvienBaoHiem //đầu ra: quyết định, lương bảo hiểm, các loại phụ cấp các kiểu còn hiệu lực public void TTQuyetDinhLuongMoiNhat(int IDNhanVienBaoHiem, out string soquyetdinh, out string tenquyetdinh, out DateTime?ngayky, out DateTime?ngayhieuluc, out DateTime?hethieuluc, out decimal?luongbaohiem, out decimal?phucapcv, out decimal?phucaptnn, out decimal?phucaptnvk, out decimal?phucapkhac) { var pcpl = dataContext.DanhMucPhuCapPhucLois.ToList(); int[] pccv = pcpl.Where(p => p.NhomLoaiPhuCapPhucLoi == "(BH)PhuCapChucVu" && p.TinhVaoBH == true).Select(p => p.ID).ToArray(); int[] pctnvk = pcpl.Where(p => p.NhomLoaiPhuCapPhucLoi == "(BH)PhuCapThamNienVuotKhung" && p.TinhVaoBH == true).Select(p => p.ID).ToArray(); int[] pctnn = pcpl.Where(p => p.NhomLoaiPhuCapPhucLoi == "(BH)PhuCapThamNienNghe" && p.TinhVaoBH == true).Select(p => p.ID).ToArray(); int[] pck = pcpl.Where(p => p.NhomLoaiPhuCapPhucLoi == "(BH)PhuCapKhac" && p.TinhVaoBH == true).Select(p => p.ID).ToArray(); soquyetdinh = ""; tenquyetdinh = ""; ngayhieuluc = null; hethieuluc = null; luongbaohiem = 0; phucapcv = 0; phucaptnn = 0; phucaptnvk = 0; phucapkhac = 0; ngayky = null; //lấy tất cả những quyết định lương của ông có id= idnhanvienbaohiem List <DAL.HOSO_LUONG> tmp = dataContext.HOSO_LUONGs.Where(p => p.NgayHieuLuc <= DateTime.Now && p.TrangThai == "DaDuyet" && p.PrKeyHoSo == (decimal)IDNhanVienBaoHiem).ToList(); //lấy quyết định lương gần đây nhất. bỏ qua việc xác nhận lỗi có 2 bản ghi cùng ngày hiệu lực DAL.HOSO_LUONG quyetdinhluong = tmp.OrderByDescending(t => t.NgayHieuLuc).FirstOrDefault(); //tmp.Where(p => p.NgayHieuLuc == tmp.Max(v => v.NgayHieuLuc)).SingleOrDefault(); if (quyetdinhluong != null) { soquyetdinh = quyetdinhluong.SoQuyetDinh; tenquyetdinh = quyetdinhluong.TenQuyetDinh; ngayhieuluc = quyetdinhluong.NgayHieuLuc; hethieuluc = quyetdinhluong.NgayKetThucHieuLuc; ngayky = quyetdinhluong.NgayQuyetDinh; if (quyetdinhluong.LuongDongBHXH != null) { luongbaohiem = (decimal)quyetdinhluong.LuongDongBHXH; } //bảng phụ cấp chứa tất cả các phụ cấp (có thể các phụ cấp đã trùng) // var temptinhphucap1 = (from t in dataContext.HOSO_PHUCAPs where (t.TrangThai == "DaDuyet") && (t.FrKeyHOSO_LUONG == quyetdinhluong.ID) select t).ToList(); //chỉ lấy những phụ cấp có ngày hiệu lực gần nhất var temptinhphucap = (from t in temptinhphucap1 where t.NgayHieuLuc == (from x in temptinhphucap1 where x.MaPhuCap == t.MaPhuCap select t.NgayHieuLuc).Max() select t).ToList(); #region bỏ //var temptinhphucap = (from t in temptinhphucap1 // group t by new // { // t.IDNhanVienBaoHiem, // t.MaPhuCap // } into g // let MaxNgayHieuLuc = g.Max(x => x.NgayHieuLuc) // from p in g // where p.NgayHieuLuc == MaxNgayHieuLuc // select new // { // g.Key.IDNhanVienBaoHiem, // g.Key.MaPhuCap, // SoTien = g.Sum(t => t.SoTien) // }).ToList(); #endregion //phụ cấp chức vụ var cv = (from t in temptinhphucap where pccv.Contains(t.MaPhuCap) select new { t.SoTien }).ToArray(); if (cv != null) { phucapcv = (decimal)cv.Sum(p => p.SoTien); } //thâm niên vượt khung var tnvk = (from t in temptinhphucap where pctnvk.Contains(t.MaPhuCap) select new { t.SoTien }).ToArray(); if (tnvk != null) { phucaptnvk = (decimal)tnvk.Sum(p => p.SoTien); } //thâm niên nghề var tnn = (from t in temptinhphucap where pctnn.Contains(t.MaPhuCap) select new { t.SoTien }).ToArray(); if (tnn != null) { phucaptnn = (decimal)tnn.Sum(p => p.SoTien); } //phụ cấp khác var k = (from t in temptinhphucap where pck.Contains(t.MaPhuCap) select new { t.SoTien }).ToArray(); if (k != null) { phucapkhac = (decimal)k.Sum(p => p.SoTien); } } }