예제 #1
0
        private void btnXacNhan_Click(object sender, EventArgs e)
        {
            #region lấy dữ liệu từ form

            DataGridView    tmpDatagrid         = dgrdGioCoLamThem;
            DataGridViewRow tmpSelectedRow      = tmpDatagrid.SelectedRows[0];
            DataRowView     rowView             = tmpSelectedRow.DataBoundItem as DataRowView;
            int             tmpUserEnrollNumber = (int)rowView["UserEnrollNumber"];
            DateTime        tmpOldChkInTime     = (DateTime)rowView["TimeStrVao"];
            DateTime        tmpOldChkOutTime    = (DateTime)rowView["TimeStrRa"];
            cUserInfo       tmpNV          = fListNVChk.Find(item => item.UserEnrollNumber == tmpUserEnrollNumber);
            cChkInOut       tmpOldChkINOUT = tmpNV.DSVaoRa.Find(item => (item.HaveINOUT > 0) && item.Vao.TimeStr == tmpOldChkInTime && item.Raa.TimeStr == tmpOldChkOutTime);
            cShift          tmpOldShift    = tmpOldChkINOUT.ThuocCa;

            if (lbCheckINOUT.Tag == null)
            {
                AutoClosingMessageBox.Show("lbCheckINOUT.Tag == null", "Error", 1000); return;
            }
            cShift    tmpNewShift    = (cShift)cbChonCa.SelectedItem;
            cChkInOut tmpNewChkINOUT = (cChkInOut)lbCheckINOUT.Tag;
            // lúc tính công chưa có gán THUOCCA lại nên ở đây phải gán lại
            tmpNewChkINOUT.ThuocCa = tmpNewShift;

            int      tmpNewShiftID       = tmpNewShift.ShiftID; // shiftID của DSCa mở rộng
            int      tmpTre              = int.Parse(lbTre.Tag.ToString());
            TimeSpan tmpTreTS            = new TimeSpan(0, tmpTre, 0);
            int      tmpSom              = int.Parse(lbSom.Tag.ToString());
            TimeSpan tmpSomTS            = new TimeSpan(0, tmpSom, 0);
            int      tmpSoPhutTreSom     = int.Parse(tbTreSom.Tag.ToString()); // > 0 nếu (chấm tay < 8h => ra sớm), đúng ca nhưng có vào trễ ra sớm
            TimeSpan tmpSoPhutTreSomTS   = new TimeSpan(0, tmpSoPhutTreSom, 0);
            int      tmpSoPhutOLaiThem   = int.Parse(tbOLaiThem.Tag.ToString());
            TimeSpan tmpSoPhutOLaiThemTS = new TimeSpan(0, tmpSoPhutOLaiThem, 0);
            bool     tmpIsOT             = checkXacNhanLamThem.Checked;
            int      tmpSoPhutLamThem    = (tmpIsOT) ? (int)numPhutTinhLamThem.Value : 0;
            TimeSpan tmpSoPhutLamThemTS  = new TimeSpan(0, tmpSoPhutLamThem, 0);
            #endregion

            bool pTinhPC150 = checkTinhPC150.Checked;
            if (tmpNewShift.OnnDutyTS > ThamSo._20h00 && tmpNewShift.Workingday > 1f)
            {
                cChkInOut[] arrCIO = XL.TachGio2Ca3Va1(tmpNV.DSCa, tmpNewChkINOUT, tmpNewChkINOUT.ThuocCa);
                XL.TinhCongTheoCa(arrCIO[0], arrCIO[0].ThuocCa);
                XL.TinhCongTheoCa(arrCIO[1], arrCIO[1].ThuocCa);

                XL.BUS_TachCaVaXacNhan(tmpNV, tmpOldChkINOUT, arrCIO, tmpIsOT, tmpSoPhutLamThem, tmpSoPhutLamThemTS, pTinhPC150);
                XL.XemCong(new List <cUserInfo>()
                {
                    tmpNV
                }, fNgayBD, fNgayKT);
            }
            else
            {
                XL.BUS_XacNhan(tmpNV, tmpOldChkINOUT, tmpNewChkINOUT, tmpIsOT, tmpSoPhutLamThem, tmpSoPhutLamThemTS, pTinhPC150);
                XL.XemCong(new List <cUserInfo>()
                {
                    tmpNV
                }, fNgayBD, fNgayKT);
            }
            LoadDataGrid();
        }
예제 #2
0
        private void ThucHienXoaGioXuongCSDL(ref List <cUserInfo> DSNVReload, ref List <DataRow> listSelectedRow, bool checkXoaVao, bool checkXoaRaa)
        {
            foreach (DataRow dataRow in listSelectedRow)
            {
                cCheckInOut currentCIO      = (cCheckInOut)dataRow["cCheckInOut"];
                cUserInfo   currentNhanVien = (cUserInfo)dataRow["cUserInfo"];
                if (DSNVReload.Any(item => item.MaCC == currentNhanVien.MaCC) == false)
                {
                    DSNVReload.Add(currentNhanVien);
                }

                int UEN = (int)dataRow["UserEnrollNumber"];
                if (currentCIO == null || currentNhanVien == null)
                {
                    continue;
                }

                if (checkXoaVao)
                {
                    this.XoaGio(currentCIO, UEN);
                }
                if (checkXoaRaa)
                {
                    this.XoaGio(currentCIO, UEN);
                }
            }
            //tbd thông báo lỗi các trường hợp không thể thêm giờ
        }
예제 #3
0
        public static void XacNhanCa(cUserInfo nv, cCheckInOut CIO, cCa currShift,
                                     bool bDuyetCPTre, bool bDuyetCPSom, int soPhutLamThem, bool choPhepTinhPc50, string lydo, string ghichu,
                                     bool bVaoTreLaCV, bool bRaaSomLaCV, TS NightTime)//ver 4.0.0.4
        //if (CIO.Vao.Time <= XL2.NgayCuoiThangKetCong) return;

        {
            if (currShift.TachCaDem)
            {
                if (CIO.DaXN)
                {
                    XacNhan_CIO_V_CoTachCa(nv, CIO, currShift, bDuyetCPTre, bDuyetCPSom, soPhutLamThem, choPhepTinhPc50, lydo, ghichu,
                                           bVaoTreLaCV, bRaaSomLaCV, NightTime);     //ver 4.0.0.4
                }
                else
                {
                    XacNhan_CIO_A_CoTachCa(nv, CIO, currShift, bDuyetCPTre, bDuyetCPSom, soPhutLamThem, choPhepTinhPc50, lydo, ghichu,
                                           bVaoTreLaCV, bRaaSomLaCV, NightTime);     //ver 4.0.0.4
                }
            }

            else
            {
                if (CIO.DaXN)
                {
                    XacNhan_CIO_V(nv, CIO, currShift, bDuyetCPTre, bDuyetCPSom, soPhutLamThem, choPhepTinhPc50, lydo, ghichu,
                                  bVaoTreLaCV, bRaaSomLaCV, NightTime);               //ver 4.0.0.4
                }
                else
                {
                    XacNhan_CIO_A(nv, CIO, currShift, bDuyetCPTre, bDuyetCPSom, soPhutLamThem, choPhepTinhPc50, lydo, ghichu,
                                  bVaoTreLaCV, bRaaSomLaCV, NightTime);               //ver 4.0.0.4
                }
            }
        }
예제 #4
0
        public static void HuyBo_TinhPCDB(cUserInfo nhanvien, cNgayCong ngayCong, List <structPCDB> dsxnPhuCapDb)
        {
            var cTemp = dsxnPhuCapDb.FindIndex(item => item.Ngay == ngayCong.Ngay);

            if (cTemp < 0)
            {
            }
            else
            {
                var n1 = DAO5.DeleteTinhPCDB(nhanvien.MaCC, ngayCong.Ngay);                 //info đã log
                dsxnPhuCapDb.Remove(dsxnPhuCapDb[cTemp]);
                ngayCong.TinhPCDB = false;
                ngayCong.PhuCaps._100_LVNN_Ngay  = 0f;
                ngayCong.PhuCaps._150_LVNN_Dem   = 0f;
                ngayCong.PhuCaps._200_LeTet_Ngay = 0f;
                ngayCong.PhuCaps._250_LeTet_Dem  = 0f;
                ngayCong.PhuCaps._Cus            = 0f;
                ngayCong.PhuCaps._TongPC         = 0f;
                ngayCong.TG.Tinh200   = TimeSpan.Zero;
                ngayCong.TG.Tinh260   = TimeSpan.Zero;
                ngayCong.TG.Tinh300   = TimeSpan.Zero;
                ngayCong.TG.Tinh390   = TimeSpan.Zero;
                ngayCong.TG.TinhPCCus = TimeSpan.Zero;
                TinhPCTC_CuaNgay(ngayCong, nhanvien.DSXNPhuCap50);
            }
        }
        private void KhoitaoDSNV(DataTable TableDSNV, List <cUserInfo> dsnv)
        {
            if (TableDSNV == null || TableDSNV.Rows.Count == 0)
            {
                return;
            }

            foreach (DataRow row in TableDSNV.Rows)
            {
                cShiftSchedule tmpLichTrinh = ThamSo.DSLichTrinh.Find(item => item.SchID == (int)row["SchID"]);
                List <cShift>  tmpDSCa      = tmpLichTrinh.ListT1;
                //List<cShift> tmpDSCaChonGio = new List<cShift>(ThamSo.DSCa);
                cUserInfo nhanvien = new cUserInfo()
                {
                    UserEnrollNumber = (int)row["UserEnrollNumber"], UserFullName = row["UserFullName"].ToString(),
                    LichTrinhLV      = tmpLichTrinh, DSCa = tmpDSCa,
                    HeSoLuongCB      = (Single)row["HeSoLuongCB"], HeSoLuongSP = (Single)row["HeSoLuongSP"],
                    BoPhan           = new cPhongBan()
                    {
                        ID = (int)row["UserIDD"], TenPhongBan = row["Description"].ToString()
                    },
                };
                dsnv.Add(nhanvien);
            }
        }
예제 #6
0
        private void loadRow(cUserInfo nhanvien_goc, DateTime ngayCong)
        {
            var cNgayCong = nhanvien_goc.DSNgayCong.FirstOrDefault(item => item.Ngay == ngayCong);

            if (cNgayCong == null || cNgayCong.HasCheck == false)
            {
                return;
            }
            foreach (var CIO in cNgayCong.DSVaoRa)
            {
                var row = m_Bang_ChiTiet.NewRow();
                row["UserEnrollNumber"] = nhanvien_goc.MaCC;
                row["UserFullName"]     = nhanvien_goc.TenNV;
                row["UserFullCode"]     = nhanvien_goc.MaNV;
                row["TimeStrNgay"]      = cNgayCong.Ngay;
                row["TimeStrVao"]       = (CIO.Vao != null) ? CIO.Vao.Time : (object)DBNull.Value;
                row["TimeStrRaa"]       = (CIO.Raa != null) ? CIO.Raa.Time : (object)DBNull.Value;
                row["ShiftCode"]        = CIO.CIOCodeFull();
                row["cUserInfo"]        = nhanvien_goc;
                row["cChkInOut"]        = CIO;
                row["cNgayCong"]        = cNgayCong;
                row["IsEdited"]         = CIO.IsEdited;
                m_Bang_ChiTiet.Rows.Add(row);
            }
        }
예제 #7
0
        private void KhoitaoDSNV(DataTable TableDSNV, List <cUserInfo> dsnv)
        {
            if (TableDSNV == null || TableDSNV.Rows.Count == 0)
            {
                return;
            }

            foreach (DataRow row in TableDSNV.Rows)
            {
                cShiftSchedule tmpLichTrinh  = ThamSo.DSLichTrinh.Find(item => item.SchID == (int)row["SchID"]);
                List <cShift>  tmpDSCa       = tmpLichTrinh.ListT1;
                List <cShift>  tmpDSCaMoRong = ThamSo.TaoDSCaMoRong(tmpDSCa);               // đã bao gồm Khác(int.Minvalue)
                //List<cShift> tmpDSCaChonGio = new List<cShift>(ThamSo.DSCa);
                cUserInfo nhanvien = new cUserInfo()
                {
                    UserEnrollNumber = (int)row["UserEnrollNumber"], UserFullName = row["UserFullName"].ToString(),
                    LichTrinhLV      = tmpLichTrinh, DSCa = tmpDSCa, DSCaMoRong = tmpDSCaMoRong,
                    HeSoLuongCB      = (Single)row["HeSoLuongCB"], HeSoLuongSP = (Single)row["HeSoLuongSP"],
                    //BoPhan = new cPhongBan() { ID = (int)row["UserIDD"], TenPhongBan = row["Description"].ToString() },
                    MacDinhTinhPC150 = (bool)row["TinhPC150"],
                    Luong            = new cLuongThang(),
                };
                nhanvien.ClearAll();
                dsnv.Add(nhanvien);
            }
        }
        private DataTable ThongKeCong_PC_Phep(DateTime ngayBD, DateTime ngayKT, DataTable TableUserIDD, List <int> dsExcludeMaCC, List <int> dsNhiemVuDangChon)
        {
            /* 1. chia thành các đoạn thời gian, xác định rõ đoạn nào đã kết công, đoạn nào chưa kết công
             * 2. thống kê các đoạn đã kết công
             * 3. thống kê các đoạn chưa kết công
             * 4. tổng hợp
             */
            //tbd nhớ kiểm tra khoảng thời gian tìm kiếm quá xa nhau thì báo vì dữ liệu quá nhiều sẽ gây lỗi
            List <List <DateTime> > arrDoanThoigian;

            ChiaDoanThoiGian(ngayBD, ngayKT, out arrDoanThoigian);
            List <List <DateTime> > arrDoanTGDaKetCong;
            List <List <DateTime> > arrDoanTGChuaKetCong;

            TachKC_ChuaKC(arrDoanThoigian, out arrDoanTGChuaKetCong, out arrDoanTGDaKetCong);

            DataTable        tableNhanVien = this.LayDSNhanVien(TableUserIDD, dsExcludeMaCC, dsNhiemVuDangChon);
            List <cUserInfo> listNhanVien  = new List <cUserInfo>();

            foreach (DataRow row in tableNhanVien.Rows)
            {
                cUserInfo nhanvien = new cUserInfo {
                    MaCC  = (int)row["UserEnrollNumber"],
                    MaNV  = row["UserFullCode"].ToString(),
                    TenNV = row["UserFullName"].ToString(),
                };
                XL.GetLichTrinhNV(nhanvien, row["SchID"] != DBNull.Value ? (int)row["SchID"] : (int?)null);
                listNhanVien.Add(nhanvien);
            }
            DataTable tableThongKe = this.ThongKe(listNhanVien, arrDoanTGChuaKetCong, arrDoanTGDaKetCong);

            return(tableThongKe);
        }
예제 #9
0
 private void RemoveDSNVCanReload(ref List <cUserInfo> DSNVReload)
 {
     for (int i = 0; i < DSNVReload.Count; i++)
     {
         cUserInfo nhanvien = DSNVReload[i];
         this.m_DSNV.Remove(nhanvien);
     }
 }
예제 #10
0
        public static int InsKetLuongThang(DateTime Thang, cUserInfo nv)
        {
            //info đã thực hiện log. log do hàm gọi thực hiện
            #region query
            //DANGLAM
            var query = @"
	INSERT INTO KetLuongThang
	(Thang, UserEnrollNumber, HSLCB, HSLCV, HSBHCongThem,
	IDPhong, TenPhong, ViTriPhong, LevelDept, RelationIDDept,
	IDChucVu, ChucVu,
	TongCong, TongLe, TongPhep, TongH_CT_PT, TongQuaDem, TongCongCV, TongBHXH, TongRo, TongPTDT,
	TongPCDem, TongPCTC, TongPCTC_dem, TongPC200, TongPC260, TongPC300, TongPC390, TongPCCus, TongPC,
	LuongCB_TheoCongThucTe, LuongCB_TheoCheDoNghi, LuongCB_TheoCongCV, PCLuongCB, 
	LuongSP_TheoCongThucTe, LuongSP_TheoCheDoNghi, PCLuongSP, 
	LuongDieuChinh, BoiDuongCa3, 
	TamUng, MucDongBHXH, KhauTruBHXH, ThuChiKhac, TienComTrua, ThucLanh  ) 
	VALUES (
	@Thang, @UserEnrollNumber, @HSLCB, @HSLCV, @HSBHCongThem,
	@IDPhong, @TenPhong, @ViTriPhong, @LevelDept, @RelationIDDept,
	@IDChucVu, @ChucVu,
	@TongCong, @TongLe, @TongPhep, @TongH_CT_PT, @TongQuaDem, @TongCongCV, @TongBHXH, @TongRo, @TongPTDT,
	@TongPCDem, @TongPCTC, @TongPCTC_dem, @TongPC200, @TongPC260, @TongPC300, @TongPC390, @TongPCCus, @TongPC,
	@LuongCB_TheoCongThucTe, @LuongCB_TheoCheDoNghi, @LuongCB_TheoCongCV, @PCLuongCB, 
	@LuongSP_TheoCongThucTe, @LuongSP_TheoCheDoNghi, @PCLuongSP, 
	@LuongDieuChinh, @BoiDuongCa3, 
	@TamUng, @MucDongBHXH, @KhauTruBHXH, @ThuChiKhac, @TienComTrua, @ThucLanh  ) "    ;

            #endregion

            return(SqlDataAccessHelper.ExecNoneQueryString(query,
                                                           new string[]                                                        //DANGLAM
            {
                "@Thang", "@UserEnrollNumber", "@HSLCB", "@HSLCV", "@HSBHCongThem",
                "@IDPhong", "@TenPhong", "@ViTriPhong", "@LevelDept", "@RelationIDDept",
                "@IDChucVu", "@ChucVu",
                "@TongCong", "@TongLe", "@TongPhep", "@TongH_CT_PT", "@TongQuaDem", "@TongCongCV", "@TongBHXH", "@TongRo", "@TongPTDT",
                "@TongPCDem", "@TongPCTC", "@TongPCTC_dem", "@TongPC200", "@TongPC260", "@TongPC300", "@TongPC390", "@TongPCCus", "@TongPC",
                "@LuongCB_TheoCongThucTe", "@LuongCB_TheoCheDoNghi", "@LuongCB_TheoCongCV", "@PCLuongCB",
                "@LuongSP_TheoCongThucTe", "@LuongSP_TheoCheDoNghi", "@PCLuongSP",
                "@BoiDuongCa3", "@LuongDieuChinh",
                "@TamUng", "@MucDongBHXH", "@KhauTruBHXH", "@ThuChiKhac", "@TienComTrua", "@ThucLanh"
            },
                                                           new object[]
            {
                Thang, nv.MaCC, nv.HeSo.LuongCB, nv.HeSo.LuongCV, nv.HeSo.BHCongThem_ChoGD_PGD,
                nv.PhongBan.ID, nv.PhongBan.Ten, nv.PhongBan.ViTri, 0 /*leveldept*/, nv.PhongBan.idParent, //info xem lại nếu phòng ban null thì id và tên ntn--> đã giải quyết
                //info id parent nếu null --> đã giải quyết
                nv.IDChucVu, nv.ChucVu,
                nv.ThongKeThang.Cong, nv.ThongKeThang.Le, nv.ThongKeThang.Phep, nv.ThongKeThang.H_CT_PT, nv.ThongKeThang.NgayQuaDem, nv.ThongKeThang.CongCV, nv.ThongKeThang.BHXH, nv.ThongKeThang.NghiRo, nv.ThongKeThang.PTDT,//DANGLAM
                nv.ThongKeThang.PhuCaps._30_dem, nv.ThongKeThang.PhuCaps._50_TC, nv.ThongKeThang.PhuCaps._100_TCC3,
                nv.ThongKeThang.PhuCaps._100_LVNN_Ngay, nv.ThongKeThang.PhuCaps._150_LVNN_Dem, nv.ThongKeThang.PhuCaps._200_LeTet_Ngay, nv.ThongKeThang.PhuCaps._250_LeTet_Dem, nv.ThongKeThang.PhuCaps._Cus, nv.ThongKeThang.PhuCaps._TongPC,
                nv.chiTietLuong.LCB_Theo.CongThucTe, nv.chiTietLuong.LCB_Theo.CheDoNghi, nv.chiTietLuong.LCB_Theo.CongCV, nv.chiTietLuong.LCB_Theo.PhuCap,
                nv.chiTietLuong.LSP_Theo.CongThucTe, nv.chiTietLuong.LSP_Theo.CheDoNghi, nv.chiTietLuong.LSP_Theo.PhuCap,
                nv.chiTietLuong.BoiDuongQuaDem, nv.chiTietLuong.LuongDieuChinh,
                nv.chiTietLuong.KhauTru.TamUng, nv.chiTietLuong.MucDongBHXH, nv.chiTietLuong.KhauTru.BHXH, nv.chiTietLuong.KhauTru.ThuChiKhac, nv.chiTietLuong.TienComTrua, nv.chiTietLuong.ThucLanh,
            }));
        }
예제 #11
0
 public void SetData(cUserInfo _UserInfo, int _index)
 {
     if (m_labelList.Length != 3)
     {
         Debug.LogError("라벨 셋팅이 잘못되었습니다.");
     }
     m_index             = _index;
     m_labelList[0].text = _UserInfo.m_name;
     m_labelList[1].text = _UserInfo.m_level.ToString();;
     m_labelList[2].text = "[" + _UserInfo.m_time.ToString() + "초전]";
 }
 //정렬관련 기능
 //=====================================================================================================================================
 bool SortByLevel(cUserInfo _a, cUserInfo _b)
 {
     if (_a.m_level > _b.m_level)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
 bool SortByTime(cUserInfo _a, cUserInfo _b)
 {
     if (_a.m_time > _b.m_time)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
        private void frm_ThongTinThemGio_Load(object sender, EventArgs e)
        {
            // 1. lấy thông tin nhân viên, fill thông tin vào 2 tb mã và tên nv
            nhanvien_goc = selectedRow["cUserInfo"] as cUserInfo;
            NgayCong_goc = selectedRow["cNgayCong"] as cNgayCong;
            tbMaCC.Text  = nhanvien_goc.MaNV;
            tbTenNV.Text = nhanvien_goc.TenNV;

            //
            // .triển khai load datagrid, trong khi load datagrid cũng đồng thời triển khai load dataSource cho các combobox
            loadGrid();
        }
 public void LayDSNVXemCong(DataTable pTableDSNVTrongPhong, List <cUserInfo> plstDSNVDiemDanh, List <cUserInfo> plstDSNV)
 {
     if (pTableDSNVTrongPhong == null || pTableDSNVTrongPhong.Rows.Count == 0)
     {
         return;
     }
     foreach (DataRow row in pTableDSNVTrongPhong.Rows)
     {
         cUserInfo nhanvien = plstDSNV.Find(info => info.UserEnrollNumber == (int)row["UserEnrollNumber"]);
         nhanvien.ClearAll();
         plstDSNVDiemDanh.Add(nhanvien);
     }
 }
예제 #16
0
 public void LayDSNVXemCong(DataTable pdataTableDSNVCheck, List <cUserInfo> plstDSNVChkXemCong, List <cUserInfo> pDSNVDuocPhepThaoTac)
 {
     DataRow[] arrRecord = pdataTableDSNVCheck.Select("check = true", "UserEnrollNumber asc", DataViewRowState.CurrentRows);
     if (arrRecord.Length == 0)
     {
         plstDSNVChkXemCong.Clear(); return;
     }
     foreach (DataRow row in arrRecord)
     {
         cUserInfo nhanvien = pDSNVDuocPhepThaoTac.Find(info => info.UserEnrollNumber == (int)row["UserEnrollNumber"]);
         nhanvien.ClearAll();
         plstDSNVChkXemCong.Add(nhanvien);
     }
 }
예제 #17
0
        public static void GetLichTrinhNV(cUserInfo nhanvien, int?schID)
        {
            #region xét lịch trình cho nv
            // chưa có lịch trình thì tạo lịch trình ko có ca
            if (schID == null)
            {
                nhanvien.LichTrinhLV = new cShiftSchedule {
                    SchID        = int.MinValue,
                    TenLichTrinh = "Chưa SX",
                    DSCaThu      = new List <List <cCa> >(7),
                    DSCaMRThu    = new List <List <cCa> >(7)
                };
                for (int i = 0; i < 7; i++)
                {
                    nhanvien.LichTrinhLV.DSCaThu.Add(new List <cCa>());
                    nhanvien.LichTrinhLV.DSCaMRThu.Add(new List <cCa>());
                }
                nhanvien.LichTrinhLV.TGLamDemTheoQuyDinh = TGLamDemTheoQuyDinh._22h00;                //ver 4.0.0.4
            }
            else
            {
                // tìm lịch trình có ID, nếu ko tìm thấy thì mặc định là chưa sắp xếp
                nhanvien.LichTrinhLV = XL.DSLichTrinh.FirstOrDefault(o => o.SchID == schID);
                if (nhanvien.LichTrinhLV == null)
                {
                    nhanvien.LichTrinhLV = new cShiftSchedule {
                        SchID        = int.MinValue,
                        TenLichTrinh = "Chưa SX",
                        DSCaThu      = new List <List <cCa> >(7),
                        DSCaMRThu    = new List <List <cCa> >(7)
                    };
                    for (int i = 0; i < 7; i++)
                    {
                        nhanvien.LichTrinhLV.DSCaThu.Add(new List <cCa>());
                        nhanvien.LichTrinhLV.DSCaMRThu.Add(new List <cCa>());
                    }
                    nhanvien.LichTrinhLV.TGLamDemTheoQuyDinh = TGLamDemTheoQuyDinh._22h00;                    //ver 4.0.0.4
                }
            }
            if (nhanvien.LichTrinhLV.TGLamDemTheoQuyDinh == TGLamDemTheoQuyDinh._22h00)
            {
                nhanvien.StartNT = XL2._22h00; nhanvien.EndddNT = XL2._06h00;
            }
            else
            {
                nhanvien.StartNT = XL2._21h45; nhanvien.EndddNT = XL2._05h45;
            }

            #endregion
        }
예제 #18
0
        private void ThucHienDaoGioCCXuongCSDL(ref List <cUserInfo> DSNVReload, ref List <DataRow> listSelectedRow)
        {
            foreach (DataRow dataRow in listSelectedRow)
            {
                cCheckInOut currentCIO      = (cCheckInOut)dataRow["cCheckInOut"];
                cUserInfo   currentNhanVien = (cUserInfo)dataRow["cUserInfo"];
                if (DSNVReload.Any(item => item.MaCC == currentNhanVien.MaCC) == false)
                {
                    DSNVReload.Add(currentNhanVien);
                }

                int UEN = (int)dataRow["UserEnrollNumber"];
                if (currentCIO == null || currentNhanVien == null)
                {
                    continue;
                }
                DateTime timeString;
                int      machineNoOld;
                string   sourceOld;
                MayCheck mayCheckMoi;
                if (currentCIO.HaveINOUT == -1)
                {
                    timeString   = currentCIO.Vao.Time;
                    machineNoOld = currentCIO.Vao.MachineNo;
                    sourceOld    = currentCIO.Vao.Source;
                    mayCheckMoi  = MayCheck.O;                    // đảo vào thành ra
                }
                else if (currentCIO.HaveINOUT == -2)
                {
                    timeString   = currentCIO.Raa.Time;
                    machineNoOld = currentCIO.Raa.MachineNo;
                    sourceOld    = currentCIO.Raa.Source;
                    mayCheckMoi  = MayCheck.I;                    // đảo ra thành vào
                }
                else
                {
                    continue;
                }

                int kq = SqlDataAccessHelper.ExecSPNoneQuery(SPName.CheckInOut_InvertKieuChamCong.ToString(),
                                                             new SqlParameter("@UserEnrollNumber", UEN),
                                                             new SqlParameter("@TimeStr", timeString),
                                                             new SqlParameter("@MachineNoOld", machineNoOld),
                                                             new SqlParameter("@SourceOld", sourceOld),
                                                             new SqlParameter("@TimeDateNew", timeString.Date),
                                                             new SqlParameter("@MachineNoNew", (int)mayCheckMoi),
                                                             new SqlParameter("@SourceNew", "PC"));
            }
            //tbd thông báo lỗi các trường hợp không thể thêm giờ
        }
        private void btnDocFile_Click(object sender, EventArgs e)
        {
            // đọc từ file tạm ứng, lưu biến đếm số lượng nhân viên tìm thấy được và gán vào biến tạm ứng trong danh sách nhân viên.
            bool flag = true;

            try {
                using (ExcelPackage excelPkg = new ExcelPackage()) {
                    using (FileStream stream = new FileStream(dialogOpenExcel.FileName, FileMode.Open)) {
                        excelPkg.Load(stream);

                        ExcelWorksheet oSheet   = excelPkg.Workbook.Worksheets[1];
                        DataTable      table    = WorksheetToDataTable(oSheet);
                        cUserInfo      nhanvien = null;
                        int            dem      = 0;
                        foreach (DataRow row in table.Rows)
                        {
                            nhanvien = m_dsnv.Find(o => o.MaNV == row["UserFullCode"].ToString());
                            if (nhanvien == null)
                            {
                                continue;                                               // tìm ko thấy thì chuyển sang nhân viên tiếp theo
                            }
                            // neu tim thay thi tang bien dem
                            dem++;
                            nhanvien.Luong.TamUng     = Convert.ToDouble(row["TamUng"].ToString());
                            nhanvien.Luong.ThuChiKhac = Convert.ToDouble(row["ThuChiKhac"].ToString());
                        }
                    }
                }
                temp = true;                 // cho biết form này đọc file thành công.
            } catch (Exception exception) {
                log4net.Config.XmlConfigurator.Configure();
                ILog   lg   = LogManager.GetLogger("frm_DocFileTamUng");
                string temp = "file name=" + dialogOpenExcel.FileName;
                lg.Error(temp, exception);
                flag = false;
            }
            // nếu trong qquá trình đọc file xảy ra lỗi thì báo
            // nếu đọc file thành công thì thoát
            if (flag == false)
            {
                temp = false;                 // cho biết form này đọc file bị lỗi.
                MessageBox.Show("Xảy ra lỗi trong quá trình đọc file tạm ứng lương. Vui lòng kiểm tra lại file.", "Lỗi");
            }
            else
            {
                temp = true;                // cho biết form này đọc file thành công
                AutoClosingMessageBox.Show("Đọc file thành công. Hãy chọn thư mục lưu trữ bảng lương.", "Thông báo", 2000);
                this.Close();
            }
        }
 private void checkBox_Sua_CheckedChanged(object sender, EventArgs e)
 {
     if (sender == checkVao_Sua)
     {
         if (checkVao_Sua.Checked)
         {
             DataRowView row   = (DataRowView)dgrdTongHop.Tag;
             cUserInfo   tmpNV = flstDSNVChk.Find(o => o.UserEnrollNumber == (int)row["UserEnrollNumber"]);
             dtpVao_Sua.ValueChanged -= dtp_Sua_OnValueChanged;
             dtpVao_Sua.Value         = ((DateTime)row["TimeStrNgay"]);
             LoadComboBoxSua(cbCaVao_Sua, tmpNV.DSCa);
             dtpVao_Sua.ValueChanged += dtp_Sua_OnValueChanged;
             dtpVao_Sua.Enabled       = true;
             cbCaVao_Sua.Enabled      = true;
         }
         else
         {
             DataRowView row = (DataRowView)dgrdTongHop.Tag;
             dtpVao_Sua.ValueChanged -= dtp_Sua_OnValueChanged;
             dtpVao_Sua.Value         = ((DateTime)row["TimeStrNgay"]);
             LoadComboBoxSua(cbCaVao_Sua, null);
             dtpVao_Sua.Enabled  = false;
             cbCaVao_Sua.Enabled = false;
         }
     }
     else
     {
         if (checkRa_Sua.Checked)
         {
             DataRowView row   = (DataRowView)dgrdTongHop.Tag;
             cUserInfo   tmpNV = flstDSNVChk.Find(o => o.UserEnrollNumber == (int)row["UserEnrollNumber"]);
             dtpRa_Sua.ValueChanged -= dtp_Sua_OnValueChanged;
             dtpRa_Sua.Value         = ((DateTime)row["TimeStrNgay"]);
             LoadComboBoxSua(cbCaRa_Sua, tmpNV.DSCa);
             dtpRa_Sua.ValueChanged += dtp_Sua_OnValueChanged;
             dtpRa_Sua.Enabled       = true;
             cbCaRa_Sua.Enabled      = true;
         }
         else
         {
             DataRowView row = (DataRowView)dgrdTongHop.Tag;
             dtpRa_Sua.ValueChanged -= dtp_Sua_OnValueChanged;
             dtpRa_Sua.Value         = ((DateTime)row["TimeStrNgay"]);
             LoadComboBoxSua(cbCaRa_Sua, null);
             dtpRa_Sua.Enabled  = false;
             cbCaRa_Sua.Enabled = false;
         }
     }
 }
        private void btnThemGio_Click(object sender, EventArgs e)
        {
            IsReload = true;

            #region lấy thông tin
            DataRowView row = dgrdTongHop.SelectedRows[0].DataBoundItem as DataRowView;
            if (row == null)
            {
                return;
            }
            int       iUserEnrollNumber = (int)row["UserEnrollNumber"];
            cUserInfo tmpNV             = flstDSNVChk.Find(o => o.UserEnrollNumber == iUserEnrollNumber);
            string    Lydo = string.Empty;
            if (cbLyDo_Them.SelectedItem == null)
            {
                Lydo = cbLyDo_Them.Text;
            }
            else if (cbLyDo_Them.SelectedItem != null)
            {
                Lydo = (string)cbLyDo_Them.SelectedItem;
            }

            if (checkVao_Them.Checked)
            {
                dtpVao_Them.Update();

                if (DAL.ThemGioChoNV(iUserEnrollNumber, dtpVao_Them.Value.Add(new TimeSpan(0, 0, 1)), true, 21, ThamSo.currUserID, Lydo, tbGhiChu_Them.Text) == false)
                {
                    MessageBox.Show("Không thêm được giờ vào cho nhân viên. Vui lòng thử lại.", "Lỗi");
                }
            }
            if (checkRa_Them.Checked)
            {
                dtpRa_Them.Update();
                if (DAL.ThemGioChoNV(iUserEnrollNumber, dtpRa_Them.Value, false, 22, ThamSo.currUserID, Lydo, tbGhiChu_Them.Text) == false)
                {
                    MessageBox.Show("Không thêm được giờ ra cho nhân viên. Vui lòng thử lại.", "Lỗi");
                }
            }
            try {
                XL.XemCong(tmpNV, fNgayBD, fNgayKT);
                loadTable();

                GC.Collect();
            } catch (Exception) {
                MessageBox.Show("Mất kết nối đến máy chủ. Vui lòng thử lại.", "Lỗi", MessageBoxButtons.OK);
            }
            #endregion
        }
 int QuiqSortDown(cUserInfo _a, cUserInfo _b)
 {
     if (_a.m_level > _b.m_level)
     {
         return(-1);
     }
     else if (_a.m_level < _b.m_level)
     {
         return(1);
     }
     else
     {
         return(0);
     }
 }
        private void frm_ThongTinThemGio_Load(object sender, EventArgs e)
        {
            // 1. lấy thông tin nhân viên, fill thông tin vào 2 tb mã và tên nv
            nhanvien_goc = selectedRow["cUserInfo"] as cUserInfo;
            NgayCong_goc = selectedRow["cNgayCong"] as cNgayCong;
            tbMaCC.Text  = nhanvien_goc.MaNV;
            tbTenNV.Text = nhanvien_goc.TenNV;

            //tạo dsCa gốc cho toàn form, combobox nào muốn sử dụng lại thì tạo mới từ cái gốc này và thay đổi tùy ý để giữ cái này làm gốc ko bị thay đổi
            dsCa = new List <cCaAbs>(nhanvien_goc.LichTrinhLV.DSCa);;
            dsCa.Insert(0, new cCaChuan {
                ID = -1, Code = "--"
            });
            //
            // .triển khai load datagrid, trong khi load datagrid cũng đồng thời triển khai load dataSource cho các combobox
            loadGrid();
        }
예제 #24
0
        private DataRow CreateDataRow_CIO_ThieuChamCong(DataTable dataTable, cUserInfo Nhanvien, cNgayCong NgayCong, cCheckInOut CIO)
        {
            DataRow kq = dataTable.NewRow();

            kq["UserEnrollNumber"] = Nhanvien.MaCC;
            kq["UserFullName"]     = Nhanvien.TenNV;
            kq["UserFullCode"]     = Nhanvien.MaNV;
            kq["Ngay"]             = NgayCong.Ngay;
            kq["GioVao"]           = CIO.Vao != null ? CIO.Vao.Time : (object)DBNull.Value;
            kq["GioRa"]            = CIO.Raa != null ? CIO.Raa.Time : (object)DBNull.Value;
            kq["DSCa"]             = CIO.ExportKyHieuThuocCa1_5(true).XoaKyTuPhanCachDauTien();
            kq["cCheckInOut"]      = CIO;
            kq["cUserInfo"]        = Nhanvien;
            kq["cNgayCong"]        = NgayCong;

            return(kq);
        }
    private void Start()
    {
        m_userList = new List <cUserInfo>();

        cObjectPool.INSTANCE.Setting(cPrefabManager.INSTANCE.FindPrefab("Prefab_Popup_FriendListGrid").name, 10, cPrefabManager.INSTANCE.FindPrefab("Prefab_Popup_FriendListGrid"));

        for (int i = 0; i < 1000000; i++)
        {
            cUserInfo tmpUser = new cUserInfo();
            tmpUser.m_name  = "Name" + i.ToString();
            tmpUser.m_level = i;
            tmpUser.m_time  = Random.Range(0, 10);
            m_userList.Add(tmpUser);
        }

        if (m_userList.Count <= m_gridCount)
        {
            for (int i = 0; i < m_userList.Count; i++)
            {
                ObjectPoolGridPush();
            }
        }
        else
        {
            for (int i = 0; i < m_gridCount; i++)
            {
                ObjectPoolGridPush();
            }
        }

        m_FirstIndexByList = 0;
        m_firstFriendCount = m_userList.Count;
        ChangeNumberOfFriend();

        UIScrollView.m_offsetY = 0.0f;
        m_grid.Reposition();
        m_scrollView.ResetPosition();



        m_standard_posY = m_scrollView.transform.localPosition.y;
        GridReChangeData(0);

        cEventListner.INSTANCE.Register(cEventListner.EVENTKEY.cUiPopUp_FrindList_Grid_DeleteClick, DeleteEvent);
    }
예제 #26
0
        public static void CheckTinhPC50_UpdORInsNew_Sort(cUserInfo nhanvien, DateTime ngay, bool giatri)
        {
            var n1    = DAO5.CheckTinhPC50(nhanvien.MaCC, ngay, giatri);
            var index = nhanvien.DSXNPhuCap50.FindIndex(o => o.Ngay == ngay);

            if (index < 0)               // chưa có --> tạo mới
            {
                var ngayXN_PCTC = new structPCTC {
                    Ngay = ngay, TinhPC50 = giatri
                };
                nhanvien.DSXNPhuCap50.Add(ngayXN_PCTC);
                nhanvien.DSXNPhuCap50.Sort(new cTemp1Comparer());
            }
            else               // đã có --> cập nhật
            {
                nhanvien.DSXNPhuCap50[index] = new structPCTC {
                    Ngay = ngay, TinhPC50 = giatri
                };
            }
        }
        internal void KhoiTaoNV(DataRow dataRow, IEnumerable <cNhomCa> List_NhomCa, out cUserInfo nhanvien)
        {
            nhanvien = new cUserInfo {
                MaCC   = (int)dataRow[f1.UserEnrollNumber.ToString()], MaNV = dataRow[f1.UserFullCode.ToString()].ToString(),
                TenNV  = dataRow[f1.UserFullName.ToString()].ToString(),
                ChucVu = new ID_Description()
                {
                    ID = (int)dataRow[f1.IDChucVu.ToString()], Description = dataRow[f1.ChucVu.ToString()].ToString()
                },
                //LichTrinh = new ID_Description() { ID = (int)row[Field.SchID.ToString()], Description = row[Field.SchName.ToString()].ToString()},
                PhongBan_ID_Des = new ID_Description {
                    ID = (int)dataRow["UserIDDepartment"], Description = dataRow["DepartmentDescription"].ToString()
                }

                //todo còn các trường khác
            };
            //user.PhongBan = XacDinhPhongBan((int)dataRow[Field.UserIDDepartment.ToString()], List_Phong);
            nhanvien.NhomCa = XacDinhNhomCa((int)dataRow["SchID"], List_NhomCa);
            //todo trường hợp nhóm ca null thì sao??
        }
        private void KhoitaoDSNV(DataTable fTableDSNV, List <cUserInfo> dsnv)
        {
            if (fTableDSNV == null || fTableDSNV.Rows.Count == 0)
            {
                return;
            }

            foreach (DataRow row in fTableDSNV.Rows)
            {
                cShiftSchedule tmpLichTrinh  = ThamSo.DSLichTrinh.Find(item => item.SchID == (int)row["SchID"]);
                List <cShift>  tmpDSCa       = tmpLichTrinh.ListT1;
                List <cShift>  tmpDSCaMoRong = ThamSo.TaoDSCaMoRong(tmpDSCa);               // đã bao gồm Khác(int.Minvalue)
                cUserInfo      nhanvien      = new cUserInfo()
                {
                    UserEnrollNumber = (int)row["UserEnrollNumber"], UserFullName = row["UserFullName"].ToString(),
                    HeSoLuongCB      = (Single)row["HeSoLuongCB"], HeSoLuongSP = (Single)row["HeSoLuongSP"],
                    LichTrinhLV      = tmpLichTrinh, DSCa = tmpDSCa, DSCaMoRong = tmpDSCaMoRong
                };
                dsnv.Add(nhanvien);
            }
        }
예제 #29
0
        public static void TinhPCDB(cUserInfo nhanvien, cNgayCong ngayCong, DateTime ngay, int loai, int pcBanNgay, int pcBanDem, string noidungLog)
        {
            var n1    = DAO5.UpdIns_TinhPCDB(nhanvien.MaCC, ngay, loai, pcBanNgay, pcBanDem, noidungLog);
            var index = nhanvien.DSXNPhuCapDB.FindIndex(o => o.Ngay == ngay);

            if (index < 0)               // chưa có --> tạo mới trong DSXNPhuCapDB
            {
                var structpc = new structPCDB {
                    LoaiPC = loai, PCNgay = pcBanNgay, PCDem = pcBanDem, Ngay = ngay, Duyet = true
                };
                nhanvien.DSXNPhuCapDB.Add(structpc);
                nhanvien.DSXNPhuCapDB.Sort(new cTempComparer());
            }
            else               // đã có --> update trong DSXNPhuCapDB
            {
                nhanvien.DSXNPhuCapDB[index] = new structPCDB {
                    LoaiPC = loai, PCNgay = pcBanNgay, PCDem = pcBanDem, Ngay = ngay, Duyet = true
                };
            }
            // sau khi thực hiện trong DSXNPhuCapDB xong thì tính phụ cấp cho ngày ngày
            TinhPCDB_CuaNgay(ngayCong, loai, pcBanNgay, pcBanDem);
        }
예제 #30
0
 private void loadRow(cUserInfo nhanvien_goc, cNgayCong ngayCong)
 {
     if (ngayCong == null || ngayCong.DSVaoRa.Count == 0)
     {
         return;
     }
     foreach (var CIO in ngayCong.DSVaoRa)
     {
         var row = m_Bang_ChiTiet.NewRow();
         row["UserEnrollNumber"] = nhanvien_goc.MaCC;
         row["UserFullName"]     = nhanvien_goc.TenNV;
         row["UserFullCode"]     = nhanvien_goc.MaNV;
         row["TimeStrNgay"]      = ngayCong.Ngay;
         row["TimeStrVao"]       = (CIO.Vao != null) ? CIO.Vao.Time : (object)DBNull.Value;
         row["TimeStrRaa"]       = (CIO.Raa != null) ? CIO.Raa.Time : (object)DBNull.Value;
         row["ShiftCode"]        = CIO.CIOCodeFull();
         row["cUserInfo"]        = nhanvien_goc;
         row["cCheckInOut"]      = CIO;
         row["cNgayCong"]        = ngayCong;
         m_Bang_ChiTiet.Rows.Add(row);
     }
 }