public void TruyenViewBagPhongBan(int?month, int?year, int?MaPB)
 {
     ViewBag.month = month;
     ViewBag.year1 = year;
     if (MaPB == 12)
     {
         ViewBag.TenPB = "Tất cả";
     }
     else
     {
         LuongThang luongThang = new LuongThang();
         if (year != null && month != null)
         {
             luongThang    = db.LuongThangs.Where(x => x.ThangNam.Month == month && x.ThangNam.Year == year).FirstOrDefault();
             ViewBag.TenPB = luongThang.LuongCoBan.NhanVien.PhongBan.TenPB.ToString();
         }
         else if (year != null && month == null)
         {
             luongThang    = db.LuongThangs.Where(x => x.ThangNam.Year == year).FirstOrDefault();
             ViewBag.TenPB = luongThang.LuongCoBan.NhanVien.PhongBan.TenPB.ToString();
         }
         else if (year == null && month != null)
         {
             luongThang    = db.LuongThangs.Where(x => x.ThangNam.Month == month).FirstOrDefault();
             ViewBag.TenPB = luongThang.LuongCoBan.NhanVien.PhongBan.TenPB.ToString();
         }
         luongThang    = db.LuongThangs.FirstOrDefault();
         ViewBag.TenPB = luongThang.LuongCoBan.NhanVien.PhongBan.TenPB.ToString();
     }
 }
        public string Remove(LuongThang obj)
        {
            myData.LuongThangs.Remove(obj);
            myData.SaveChanges();

            return(null);
        }
 public static LuongThangDTO ToDTO(this LuongThang luongThang, string hinhAnh, string hoTenNhanVien, string tenPhongBan)
 {
     return(new LuongThangDTO()
     {
         LuongThangId = luongThang.LuongThangId,
         LuongCoBan = luongThang.LuongCoBan,
         HSChucVu = luongThang.HSChucVu,
         HSCongViec = luongThang.HSCongViec,
         SoNgayLam = luongThang.SoNgayLam,
         SoNgayNghiCoPhep = luongThang.SoNgayNghiCoPhep,
         SoNgayNghiKhongPhep = luongThang.SoNgayNghiKhongPhep,
         SoNgayNghiOm = luongThang.SoNgayNghiOm,
         PhuCapNhanVien = luongThang.PhuCapNhanVien,
         ThuongLe = luongThang.ThuongLe,
         PhuCapChucVu = luongThang.PhuCapChucVu,
         PhuCapThamNien = luongThang.PhuCapThamNien,
         TienDuAn = luongThang.TienDuAn,
         NgayTinhLuong = luongThang.NgayTinhLuong,
         LuongThucLanh = luongThang.LuongThucLanh,
         NhanVienId = luongThang.NhanVienId,
         HinhAnh = hinhAnh,
         HoTenNhanVien = hoTenNhanVien,
         TenPhongBan = tenPhongBan
     });
 }
        public string Update(LuongThang obj)
        {
            //Kiểm tra quan hệ
            if (myData.NhanViens.ToList().Find(x => x.NhanVienId == obj.NhanVienId) == null)
            {
                return("Nhân viên id chưa tồn tại vui lòng khởi tạo trước khi sử dụng làm khóa ngoại");
            }

            //Sửa nếu không có lỗi
            myData.LuongThangs.Update(obj);
            myData.SaveChanges();

            return(null);
        }
        //Xem chi tiết lương
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            LuongThang luongThang = db.LuongThangs.Find(id);

            if (luongThang == null)
            {
                return(HttpNotFound());
            }
            return(View(luongThang));
        }
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            LuongThang luongThang = db.LuongThangs.Find(id);

            if (luongThang == null)
            {
                return(HttpNotFound());
            }
            TempData["MaNV"] = luongThang.LuongCoBan.MaNhanVien;
            return(View(luongThang));
        }
        public string Add(LuongThang obj)
        {
            //Kiểm tra khóa chính
            if (myData.LuongThangs.ToList().Find(x => x.LuongThangId == obj.LuongThangId) != null)
            {
                return("Lương tháng id đã tồn tại");
            }

            //Kiểm tra quan hệ
            if (myData.NhanViens.ToList().Find(x => x.NhanVienId == obj.NhanVienId) == null)
            {
                return("Nhân viên id chưa tồn tại vui lòng khởi tạo trước khi sử dụng làm khóa ngoại");
            }

            //Thêm nếu không có lỗi
            myData.LuongThangs.Add(obj);
            myData.SaveChanges();

            return(null);
        }
        //in ra chi tiết lương tháng của nhân viên>>>>>>>>>>>>>>>>>

        //<<<<<<<<<<<<<<<<in ra danh sách lương tháng của nhiều nhân viên
        public ActionResult PrintLuongTheoPhongBan(int?month, int?year, int?MaPB)
        {
            if (MaPB == 12)
            {
                return(new ActionAsPdf("DSLuongTheoPhongBan", new { month, year, MaPB })
                {
                    FileName = "LuongTheoPhongBan_Thang_" + month + "_Nam_" + year + "_PhongBan_TatCa.pdf"
                });
            }
            else
            {
                LuongThang luong = new LuongThang();
                luong = db.LuongThangs.FirstOrDefault();
                string tenPB = luong.LuongCoBan.NhanVien.PhongBan.TenPB;
                return(new ActionAsPdf("DSLuongTheoPhongBan", new { month, year, MaPB })
                {
                    FileName = "LuongTheoPhongBan_Thang_" + month + "_Nam_" + year + "_PhongBan_" + tenPB + ".pdf"
                });
            }
        }
        public void AutoAdd()
        {
            //Ngày đầu tiên của tháng mới bắt đầu tính lương
            if (DateTime.Now.IsFirstDayOfMonth() != false)
            {
                return;
            }
            foreach (NhanVienCongViec nhanVienCongViec in myData.NhanVienCongViecs.ToList())
            {
                bool add = true;
                //Không tính lương cho nhân viến quá 2 lần
                foreach (LuongThang lt in myData.LuongThangs.ToList())
                {
                    if (lt.NhanVienId == nhanVienCongViec.NhanVienId &&
                        ((DateTime)lt.NgayTinhLuong).EqualTo(DateTime.Now.FirstDayOfMonth()) == true)
                    {
                        add = false;
                        break;
                    }
                }
                if (add == false)
                {
                    break;
                }

                //Chỉ tính lương cho nhân viên có
                //ngày bắt đầu trước hôm nay và
                //ngày kết thúc băng null hoặc sau ngày đầu tiên của tháng trước
                if (((DateTime)nhanVienCongViec.NgayBatDau).Before(DateTime.Now) &&
                    (nhanVienCongViec.NgayKetThuc == null || ((DateTime)nhanVienCongViec.NgayKetThuc).After(DateTime.Now.FirstDayOfPreviousMonth())))
                {
                    LuongThang luongThang = new LuongThang();

                    //Tao id
                    int max = 0;
                    List <LuongThang> luongThangs = myData.LuongThangs.ToList();
                    foreach (LuongThang lt in luongThangs)
                    {
                        if (int.Parse(lt.LuongThangId) > max)
                        {
                            max = int.Parse(lt.LuongThangId);
                        }
                    }

                    luongThang.LuongThangId = "" + (max + 1);
                    luongThang.NhanVienId   = nhanVienCongViec.NhanVienId;
                    luongThang.LuongCoBan   = myData.HopDongs.ToList().Find(x => x.NhanVienId == luongThang.NhanVienId && x.TrangThai == 1) != null?
                                              myData.HopDongs.ToList().Find(x => x.NhanVienId == luongThang.NhanVienId && x.TrangThai == 1).LuongCanBan : "0";

                    string chucVuId = myData.NhanViens.ToList().Find(x => x.NhanVienId == luongThang.NhanVienId).ChucVuId;
                    luongThang.HSChucVu   = myData.ChucVus.ToList().Find(x => x.ChucVuId == chucVuId).HSChucVu;
                    luongThang.HSCongViec = nhanVienCongViec.HSCongViec;
                    DateTime ngayBatDauLamCuaThangTruoc = ((DateTime)nhanVienCongViec.NgayBatDau).After(DateTime.Now.FirstDayOfPreviousMonth()) ?
                                                          (DateTime)nhanVienCongViec.NgayBatDau : DateTime.Now.FirstDayOfPreviousMonth();
                    DateTime ngayKetThucLamCuaThangTruoc = nhanVienCongViec.NgayKetThuc == null?DateTime.Now.FirstDayOfPreviousMonth().LastDayOfMonth() :
                                                               (DateTime)nhanVienCongViec.NgayKetThuc;

                    luongThang.SoNgayLam           = 0;
                    luongThang.SoNgayNghiCoPhep    = 0;
                    luongThang.SoNgayNghiKhongPhep = 0;
                    luongThang.SoNgayNghiOm        = 0;
                    luongThang.ThuongLe            = "0";

                    foreach (BangChamCong bangChamCong in myData.BangChamCongs.ToList())
                    {
                        //Đếm số ngày làm việc của
                        //nhân viên đang xét và
                        //ngày làm việc phải nằm trong đoạn [ngayBatDauLamCuaThangTruoc, ngayKetThucLamCuaThangTruoc]
                        //nếu có trạng thái là tt1 => soNgayLam
                        //nếu có trạng thái là tt2 => SoNgayNghiCoPhep
                        //nếu có trạng thái là tt3 => SoNgayNghiKhongPhep
                        //nếu có trạng thái là tt4 => SoNgayNghiOm
                        //nếu có ngày làm trùng vs ngày lễ => có tiền thưởng
                        if (luongThang.NhanVienId == bangChamCong.NhanVienId && (
                                bangChamCong.NgayLamViec.EqualTo(ngayBatDauLamCuaThangTruoc) ||
                                (bangChamCong.NgayLamViec.After(ngayBatDauLamCuaThangTruoc) && bangChamCong.NgayLamViec.Before(ngayKetThucLamCuaThangTruoc)) ||
                                bangChamCong.NgayLamViec.EqualTo(ngayKetThucLamCuaThangTruoc)))
                        {
                            //Tính số ngày làm, nghỉ
                            if (bangChamCong.TrangThaiChamCongId == "tt1")
                            {
                                luongThang.SoNgayLam++;
                            }
                            else
                            {
                                if (bangChamCong.TrangThaiChamCongId == "tt2")
                                {
                                    luongThang.SoNgayNghiCoPhep++;
                                }
                                else
                                {
                                    if (bangChamCong.TrangThaiChamCongId == "tt3")
                                    {
                                        luongThang.SoNgayNghiKhongPhep++;
                                    }
                                    else
                                    {
                                        if (bangChamCong.TrangThaiChamCongId == "tt4")
                                        {
                                            luongThang.SoNgayNghiOm++;
                                        }
                                    }
                                }
                            }
                            //Tính tiền thưởng
                            foreach (ThuongLe thuongLe in myData.ThuongLes.ToList())
                            {
                                if (((DateTime)thuongLe.NgayLe).EqualTo(bangChamCong.NgayLamViec))
                                {
                                    luongThang.ThuongLe = "" + (long.Parse(luongThang.ThuongLe) + long.Parse(thuongLe.TienThuongLe));
                                }
                            }
                        }
                    }

                    luongThang.PhuCapNhanVien = "" + 0;
                    foreach (NhanVienPhuCap nhanVienPhuCap in myData.NhanVienPhuCaps.ToList())
                    {
                        if (nhanVienPhuCap.NhanVienId == luongThang.NhanVienId)
                        {
                            PhuCap phuCap = myData.PhuCaps.ToList().Find(x => x.PhuCapId == nhanVienPhuCap.PhuCapId);
                            luongThang.PhuCapNhanVien = "" + (long.Parse(luongThang.PhuCapNhanVien) + long.Parse(phuCap.TienPhuCap));
                        }
                    }

                    luongThang.PhuCapChucVu = myData.ChucVus.ToList().Find(x => x.ChucVuId == myData.NhanViens.ToList()
                                                                           .Find(y => y.NhanVienId == luongThang.NhanVienId).ChucVuId).TienPhuCapChucVu;
                    //Tính hệ số thâm niên
                    DateTime ngayDauTienDiLam = DateTime.Now;
                    foreach (NhanVienCongViec nvcv in myData.NhanVienCongViecs.ToList())
                    {
                        if (luongThang.NhanVienId == nvcv.NhanVienId)
                        {
                            if (ngayDauTienDiLam.After((DateTime)nvcv.NgayBatDau))
                            {
                                ngayDauTienDiLam = (DateTime)nvcv.NgayBatDau;
                            }
                        }
                    }
                    luongThang.PhuCapThamNien = ((int)(DateTime.Now - ngayDauTienDiLam).Days / 365) * 0.1;
                    luongThang.TienDuAn       = "" + 0;
                    foreach (NhanVienDuAn nhanVienDuAn in myData.NhanVienDuAns.ToList())
                    {
                        if (nhanVienDuAn.NhanVienId == luongThang.NhanVienId)
                        {
                            DuAn duAn = myData.DuAns.ToList().Find(x => x.DuAnId == nhanVienDuAn.DuAnId);
                            if (((DateTime)duAn.NgayKetThuc).After(DateTime.Now.FirstDayOfPreviousMonth()) &&
                                ((DateTime)duAn.NgayKetThuc).Before(DateTime.Now.FirstDayOfPreviousMonth().LastDayOfMonth()))
                            {
                                luongThang.TienDuAn = "" + (long.Parse(luongThang.TienDuAn) + (nhanVienDuAn.PhanTramCV * long.Parse(duAn.ThuongDuAn) / 100));
                            }
                        }
                    }
                    luongThang.NgayTinhLuong = DateTime.Now.FirstDayOfMonth();
                    long luongMotNgay = long.Parse(luongThang.LuongCoBan) * (long)(1.0 + (double)luongThang.HSChucVu + (double)luongThang.HSCongViec + (double)luongThang.PhuCapThamNien) / 26;
                    luongThang.LuongThucLanh = "" + ((long)(luongMotNgay * (int)luongThang.SoNgayLam) + long.Parse(luongThang.ThuongLe)
                                                     + long.Parse(luongThang.TienDuAn) + long.Parse(luongThang.PhuCapNhanVien));

                    //Lưu vào database
                    myData.LuongThangs.Add(luongThang);
                    myData.SaveChanges();
                }
            }
        }
        public ActionResult InBangLuongThang(int?id)
        {
            LuongThang luongThang = db.LuongThangs.Find(id);

            return(View(luongThang));
        }
예제 #11
0
        protected void Application_Start()
        {
            DateTime B      = DateTime.Now;
            DateTime dayOfW = DateTime.Today;

            JobManager.Initialize(new MyRegistry());
            QLNhanSuEntities ql = new QLNhanSuEntities();

            if (dayOfW.DayOfWeek != DayOfWeek.Saturday && dayOfW.DayOfWeek != DayOfWeek.Sunday)
            {
                var chamcong = ql.ChamCongs.Where(s => s.Ngay == B.Date).FirstOrDefault();
                if (chamcong == null)
                {
                    var nhanvien = ql.NhanViens.Where(s => s.TrangThai == true && s.MaNhanVien != 1001);
                    foreach (var nv in nhanvien)
                    {
                        //ChamCong cham = new ChamCong();
                        //cham.MaNhanVien = nv.MaNhanVien;
                        //cham.Ngay = B;
                        //ql.ChamCongs.Add(cham);
                        ChamCong cham = new ChamCong();
                        cham.MaNhanVien = nv.MaNhanVien;
                        cham.Ngay       = B;
                        ql.ChamCongs.Add(cham);
                    }
                    ql.SaveChanges();
                }
            }


            int month, year;

            if (B.Month == 1)
            {
                month = 12;
                year  = B.Year - 1;
            }
            else
            {
                month = B.Month - 1;
                year  = B.Year;
            }
            var      day           = DateTime.DaysInMonth(year, month);
            DateTime ngayCuoiThang = new DateTime(year, month, day);
            var      luong         = ql.LuongThangs.Where(s => s.ThangNam.Month.ToString() == month.ToString() && s.ThangNam.Year.ToString() == year.ToString()).FirstOrDefault();

            if (luong == null)
            {
                var nhanvien = ql.NhanViens.Where(s => s.TrangThai == true && s.MaNhanVien != 1001);
                foreach (var nv in nhanvien)
                {
                    int gtthuong  = 0;
                    int gtphat    = 0;
                    int giolam    = 0;
                    int giotangca = 0;
                    var thuong    = ql.Ct_Thuong.Where(s => s.NgaySua.Month == month && s.NgaySua.Year == year && s.MaNhanVien == nv.MaNhanVien);
                    foreach (var t in thuong)
                    {
                        var giatrithuong = ql.LoaiThuongs.Where(s => s.MaLoaiThuong == t.MaLoaiThuong).SingleOrDefault();
                        gtthuong = gtthuong + giatrithuong.GiaTri;
                    }
                    var phat = ql.Ct_Phat.Where(s => s.NgaySua.Month == month && s.NgaySua.Year == year && s.MaNhanVien == nv.MaNhanVien);
                    foreach (var t in phat)
                    {
                        var giatriphat = ql.LoaiPhats.Where(s => s.MaLoaiPhat == t.MaLoaiPhat).SingleOrDefault();
                        gtphat = gtphat + giatriphat.GiaTri;
                    }
                    var cc = ql.ChamCongs.Where(s => s.MaNhanVien == nv.MaNhanVien && s.Ngay.Month.ToString() == month.ToString() && s.Ngay.Year.ToString() == year.ToString() && s.TrangThai != null);
                    if (cc.Count() == 0)
                    {
                    }
                    else
                    {
                        foreach (var c in cc)
                        {
                            giolam    = (int)(giolam + c.ThoiGianLamViec);
                            giotangca = (int)(giotangca + c.ThoiGianTangCa);
                        }
                    }
                    var luongcoban = ql.LuongCoBans.Where(s => s.MaNhanVien == nv.MaNhanVien && s.TrangThai == true).SingleOrDefault();
                    if (luongcoban != null)
                    {
                        LuongThang l = new LuongThang();
                        l.MaLuongCoBan   = luongcoban.MaLuongCoBan;
                        l.ThangNam       = ngayCuoiThang;
                        l.TongGioLamViec = giolam;
                        l.TongGioTangCa  = giotangca;
                        l.TongThuong     = gtthuong;
                        l.TongPhat       = gtphat;
                        l.HeSoLuong      = luongcoban.NhanVien.ChucVu.HeSoChucVu;
                        l.PhuCap         = luongcoban.NhanVien.ChucVu.PhuCap;
                        ql.LuongThangs.Add(l);
                    }
                }
                ql.SaveChanges();
            }

            //sau 10h nếu app đc khởi động mà chấm công hôm nay, những ai chưa chấm công nếu trạng thái là null, thì thay thành "Nghỉ"
            //đồng thời thêm nhân viên đó vào bảng nghỉ
            TimeSpan thoiGianKhongChoVao = DateTime.Parse("10:00 AM").TimeOfDay;

            if (DateTime.Now.TimeOfDay > thoiGianKhongChoVao)
            {
                var nvList = ql.ChamCongs.Where(s => s.TrangThai == null && s.Ngay == DateTime.Today).ToList();
                if (nvList.Count > 0)
                {
                    foreach (var b in nvList)
                    {
                        b.TrangThai = "Nghỉ";

                        //thêm dữ liệu nhân viên nghỉ vào bảng Nghỉ
                        Nghi nhanVienNghi = new Nghi();
                        nhanVienNghi.MaNhanVien = b.MaNhanVien;
                        nhanVienNghi.NgayNghi   = DateTime.Today;
                        nhanVienNghi.Phep       = false;
                        nhanVienNghi.NgaySua    = DateTime.Now;
                        nhanVienNghi.GhiChu     = "Hôm nay nghỉ";
                        ql.Nghis.Add(nhanVienNghi);
                    }
                    ql.SaveChanges();
                }
            }

            //kiểm tra sau 16h nếu nhân viên nghỉ thì thêm phạt nhân viên đó, mà nếu đã có phạt rồi thì ko phạt nữa
            TimeSpan thoiGianThemPhatNhanVienNghi = DateTime.Parse("04:00 PM").TimeOfDay;
            var      mocThoiGian16h = DateTime.Today.AddHours(16);

            if (DateTime.Now.TimeOfDay > thoiGianThemPhatNhanVienNghi)
            {
                //list chấm công nhân viên có trạng thái nghỉ không phép trong ngày hôm nay
                var nvChamCongList = ql.Nghis.Where(x => x.Phep == false && x.NgayNghi == DateTime.Today.Date).ToList();
                foreach (var b in nvChamCongList)
                {
                    var ct_PhatNhanVienNghi = ql.Ct_Phat.Where(x => x.LoaiPhat.TenLoaiPhat == "Nghỉ" && x.MaNhanVien == b.MaNhanVien && x.NgayPhat == mocThoiGian16h).SingleOrDefault();
                    if (ct_PhatNhanVienNghi == null)
                    {
                        var tenphat = ql.LoaiPhats.Where(s => s.TenLoaiPhat == "Nghỉ" && s.TrangThai == true).SingleOrDefault();
                        if (tenphat != null)
                        {
                            Ct_Phat phat = new Ct_Phat();
                            phat.MaNhanVien = b.MaNhanVien;
                            phat.MaLoaiPhat = tenphat.MaLoaiPhat;
                            phat.NgayPhat   = DateTime.Today.AddHours(16);
                            phat.NguoiPhat  = "Hệ thống";
                            phat.NguoiSua   = "Hệ thống";
                            phat.NgaySua    = DateTime.Today.AddHours(16);
                            phat.TrangThai  = true;
                            ql.Ct_Phat.Add(phat);
                        }
                    }
                    else
                    {
                        break;
                    }
                }
                ql.SaveChanges();
            }
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }