コード例 #1
0
        private void btnSuaGio_Click(object sender, EventArgs e)
        {
            IsReload = true;

            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);

            DateTime tmpOldVao   = (row["TimeStrVao"] != DBNull.Value) ? (DateTime)row["TimeStrVao"] : DateTime.MinValue;
            DateTime tmpOldRaa   = (row["TimeStrRa"] != DBNull.Value) ? (DateTime)row["TimeStrRa"] : DateTime.MinValue;
            DateTime tmpNgayCong = (DateTime)row["TimeStrNgay"];


            cNgayCong ngayCong = tmpNV.DSNgayCong.Find(o => o.NgayCong == tmpNgayCong);
            cChkInOut old_CIO  = row["obj"] as cChkInOut;

            if (ngayCong.HasCheck == false || (tmpOldVao == DateTime.MinValue && tmpOldRaa == DateTime.MinValue))
            {
                old_CIO = null;
            }
            else if (tmpOldVao == DateTime.MinValue)
            {
                old_CIO = ngayCong.DSVaoRa.Find(o => o.HaveINOUT < 0 && o.Raa.TimeStr == tmpOldRaa);
            }
            else if (tmpOldRaa == DateTime.MinValue)
            {
                old_CIO = ngayCong.DSVaoRa.Find(o => o.HaveINOUT < 0 && o.Vao.TimeStr == tmpOldVao);
            }
            else
            {
                old_CIO = ngayCong.DSVaoRa.Find(o => o.HaveINOUT > 0 && o.Vao.TimeStr == tmpOldVao && o.Raa.TimeStr == tmpOldRaa);
            }
            if (old_CIO != null && old_CIO.GetType() == typeof(cChkInOut_V))
            {
                MessageBox.Show("Không thể sửa giờ đã được xác nhận.", "Thông báo");
                return;
            }

            string Lydo = string.Empty;

            if (cbLyDo_Sua.SelectedItem == null)
            {
                Lydo = cbLyDo_Sua.Text;
            }
            else if (cbLyDo_Sua.SelectedItem != null)
            {
                Lydo = (string)cbLyDo_Sua.SelectedItem;
            }

            if (checkVao_Sua.Checked)
            {
                dtpVao_Sua.Update();
                cChk tmpCheck = old_CIO.Vao;
                if (DAL.SuaGioChoNV(iUserEnrollNumber, tmpCheck.TimeStr, dtpVao_Sua.Value.Add(new TimeSpan(0, 0, 1)), true, tmpCheck.Source, tmpCheck.MachineNo, ThamSo.currUserID, Lydo, tbGhiChu_Sua.Text) == false)
                {
                    MessageBox.Show("Không sửa được giờ cho nhân viên. Vui lòng thử lại.", "Lỗi");
                }
            }
            if (checkRa_Sua.Checked)
            {
                dtpRa_Sua.Update();
                cChk tmpCheck = old_CIO.Raa;
                if (DAL.SuaGioChoNV(iUserEnrollNumber, tmpCheck.TimeStr, dtpRa_Sua.Value, false, tmpCheck.Source, tmpCheck.MachineNo, ThamSo.currUserID, Lydo, tbGhiChu_Sua.Text) == false)
                {
                    MessageBox.Show("Không sửa được giờ cho nhân viên. Vui lòng thử lại.", "Lỗi");
                }
            }
            try {
                XL.XemCong(tmpNV, fNgayBD, fNgayKT);
                loadTable();
            } catch (Exception) {
                MessageBox.Show("Mất kết nối đến máy chủ. Vui lòng thử lại sau.", "Lỗi");
                return;
            }
            GC.Collect();
        }
コード例 #2
0
        private void LoadTabThemGio(cUserInfo tmpNV, DateTime tmpNgayCong, cChkInOut old_CIO)
        {
            DateTime tmpVao, tmpRa;

            if (old_CIO == null)
            {
                tmpVao = tmpRa = DateTime.MinValue;
            }
            else
            {
                tmpVao = old_CIO.Vao == null ? DateTime.MinValue : old_CIO.Vao.TimeStr;
                tmpRa  = old_CIO.Raa == null ? DateTime.MinValue : old_CIO.Raa.TimeStr;
            }
            tbTenNV_Them.Text         = tmpNV.UserFullName;
            cbLyDo_Them.SelectedIndex = 0;
            cbLyDo_Them.Text          = string.Empty;
            tbGhiChu_Them.Text        = string.Empty;
            if (tmpVao == DateTime.MinValue)               // ko có giờ vào, cho phép input giờ vào
            {
                dtpVao_Them.ValueChanged          -= dtp_Them_OnValueChanged;
                cbCaVao_Them.SelectedIndexChanged -= cbCa_Them_OnSelectedIndexChanged;

                dtpVao_Them.Value     = tmpNgayCong;
                checkVao_Them.Checked = true;

                dtpVao_Them.ValueChanged          += dtp_Them_OnValueChanged;
                cbCaVao_Them.SelectedIndexChanged += cbCa_Them_OnSelectedIndexChanged;
            }
            else               // ko cho phép input
            {
                dtpVao_Them.ValueChanged          -= dtp_Them_OnValueChanged;
                cbCaVao_Them.SelectedIndexChanged -= cbCa_Them_OnSelectedIndexChanged;

                checkVao_Them.Checked = false;
                dtpVao_Them.Value     = tmpVao;

                dtpVao_Them.ValueChanged          += dtp_Them_OnValueChanged;
                cbCaVao_Them.SelectedIndexChanged += cbCa_Them_OnSelectedIndexChanged;
            }

            if (tmpRa == DateTime.MinValue)               // ko có giờ ra, cho phép input giờ ra
            {
                dtpRa_Them.ValueChanged          -= dtp_Them_OnValueChanged;
                cbCaRa_Them.SelectedIndexChanged -= cbCa_Them_OnSelectedIndexChanged;

                dtpRa_Them.Value     = tmpNgayCong;
                checkRa_Them.Checked = true;

                dtpRa_Them.ValueChanged          += dtp_Them_OnValueChanged;
                cbCaRa_Them.SelectedIndexChanged += cbCa_Them_OnSelectedIndexChanged;
            }
            else
            {
                dtpRa_Them.ValueChanged          -= dtp_Them_OnValueChanged;
                cbCaRa_Them.SelectedIndexChanged -= cbCa_Them_OnSelectedIndexChanged;

                checkRa_Them.Checked = false;
                dtpRa_Them.Value     = tmpRa;

                dtpRa_Them.ValueChanged          += dtp_Them_OnValueChanged;
                cbCaRa_Them.SelectedIndexChanged += cbCa_Them_OnSelectedIndexChanged;
            }
        }
コード例 #3
0
        private void btnDiemDanh_Click(object sender, EventArgs e)
        {
            //1. lấy dữ liệu từ form
            #region lấy ngày BD và kết thúc, và update lại Ngày BD = 1 ngày trước 31/08 12:00 AM, ngày KT là 1 ngày sau ngay 1 23:59:59
            dtpNgay.Update();
            DateTime ngayBD = dtpNgay.Value.Date;
            ngayBD = ngayBD.AddDays(-1d);
            DateTime ngayKT = ngayBD.AddDays(2d).Subtract(new TimeSpan(0, 0, 1));
            #endregion
            //-----------BUG [KHÔNG PHẢI BUG] CHỈ TÔ MÀU ĐỂ CHÚ Ý] bắt buộc EndEdit thao tác trên Grid rồi mới thực hiện xử lý tác vụ

            //2. lấy danh sách nhân viên check
            if (flstDSNVDiemDanh == null)
            {
                flstDSNVDiemDanh = new List <cUserInfo>();
            }
            else
            {
                flstDSNVDiemDanh.Clear();
            }

            LayDSNVXemCong(fTableDSNVTrongPhong, flstDSNVDiemDanh, flstDSNV);
            //3. lấy dữ liệu chấm công của các nhân viên
            //[CHÚ Ý] ngày bắt đầu và kết thúc đã cộng trừ thêm 1 ngày trước sau ở bở trên
            try {
                XL.XemCong(flstDSNVDiemDanh, ngayBD, ngayKT);
            } catch (Exception exception) {
                log.Info(exception);
                MessageBox.Show("Mất kết nối đến máy chủ. Vui lòng thử lại sau.", "Lỗi");
                GC.Collect();
                return;
            }

            //4. xử lý dữ liệu để đưa lên lưới tổng hợp
            DataTable tableCTDiemDanh = dgrdTongHop.DataSource as DataTable;
            if (tableCTDiemDanh == null)
            {
                tableCTDiemDanh = XL.TaoCauTrucDataTable(
                    new[] { "UserEnrollNumber", "UserFullName", "TimeStrVao1", "TimeStrRa1", "TimeStrVao2", "TimeStrRa2", "TimeStrVao3", "TimeStrRa3", "ShiftID1", "ShiftID2", "ShiftID3", "Ca", "TrangThai" },
                    new[] { typeof(int), typeof(string), typeof(DateTime), typeof(DateTime), typeof(DateTime), typeof(DateTime), typeof(DateTime), typeof(DateTime), typeof(int), typeof(int), typeof(int), typeof(string), typeof(string), });
            }
            else
            {
                tableCTDiemDanh.Rows.Clear();
            }

            int SoNVDangLamViec = 0, SoNVDaRaVe = 0, SoNVVang = 0;
            foreach (var nhanvien in flstDSNVDiemDanh)
            {
                DataRow row = tableCTDiemDanh.NewRow();
                row["UserEnrollNumber"] = nhanvien.UserEnrollNumber;
                row["UserFullName"]     = nhanvien.UserFullName;
                cNgayCong ngayCong = nhanvien.DSNgayCong[1];
                //nếu có check thì khỏi ghi vắng
                string ChuoiCa        = string.Empty;
                string ChuoiTrangThai = string.Empty;
                if (ngayCong.HasCheck)
                {
                    for (int i = 0; i < ngayCong.DSVaoRa.Count; i++)
                    {
                        if (i >= 3)
                        {
                            break;
                        }
                        row["TimeStrVao" + (i + 1)] = (ngayCong.DSVaoRa[i].Vao != null) ? ngayCong.DSVaoRa[i].Vao.TimeStr : (object)DBNull.Value;
                        row["TimeStrRa" + (i + 1)]  = (ngayCong.DSVaoRa[i].Raa != null) ? ngayCong.DSVaoRa[i].Raa.TimeStr : (object)DBNull.Value;
                        if (ngayCong.DSVaoRa[i].HaveINOUT > 0)
                        {
                            ChuoiCa += ngayCong.DSVaoRa[i].ThuocCa.ShiftCode + "; ";
                        }
                        else if (ngayCong.DSVaoRa[i].HaveINOUT == -1)
                        {
                            ChuoiCa += "KV; ";
                        }
                        else if (ngayCong.DSVaoRa[i].HaveINOUT == -2)
                        {
                            ChuoiCa += "KR; ";
                        }
                    }
                    cChkInOut lastCIO1 = ngayCong.DSVaoRa[ngayCong.DSVaoRa.Count - 1];
                    // xét vào ra cuối để ghi trạng thái
                    if (lastCIO1.HaveINOUT == -2)
                    {
                        ChuoiTrangThai = "Đang làm việc; ";
                        SoNVDangLamViec++;
                    }
                    else if (lastCIO1.HaveINOUT > 0 || lastCIO1.HaveINOUT == -1)
                    {
                        ChuoiTrangThai = "Đã ra về; ";
                        SoNVDaRaVe++;
                    }
                }
                else   // không có check, kiểm tra có khai báo vắng ko, nếu có thì ghi
                {
                    SoNVVang++;
                    ChuoiCa = string.Empty;
                    if (ngayCong.DSVang != null && ngayCong.DSVang.Count != 0)
                    {
                        foreach (var loaiVang in ngayCong.DSVang)
                        {
                            ChuoiTrangThai += "Vắng " + loaiVang.KyHieu + "; ";
                        }
                    }
                    else
                    {
                        ChuoiTrangThai = "Vắng";
                    }
                }
                row["Ca"]        = ChuoiCa;
                row["TrangThai"] = ChuoiTrangThai;
                tableCTDiemDanh.Rows.Add(row);
            }
            tbTongSoNV.Text        = flstDSNVDiemDanh.Count.ToString();
            tbSoNVDangLamViec.Text = SoNVDangLamViec.ToString();
            tbSoNVDaRaVe.Text      = SoNVDaRaVe.ToString();
            tbSoNVVang.Text        = SoNVVang.ToString();
            dgrdTongHop.DataSource = tableCTDiemDanh;
        }
コード例 #4
0
        private void LoadTabSuaGio(cUserInfo tmpNV, DateTime tmpNgayCong, cChkInOut old_CIO)
        {
            DateTime tmpVao, tmpRa;

            if (old_CIO == null)
            {
                tmpVao = tmpRa = DateTime.MinValue;
            }
            else
            {
                tmpVao = old_CIO.Vao == null ? DateTime.MinValue : old_CIO.Vao.TimeStr;
                tmpRa  = old_CIO.Raa == null ? DateTime.MinValue : old_CIO.Raa.TimeStr;
            }
            tbTenNV_Sua.Text         = tmpNV.UserFullName;
            cbLyDo_Sua.SelectedIndex = 0;
            cbLyDo_Sua.Text          = string.Empty;
            tbGhiChu_Sua.Text        = string.Empty;
            if (tmpVao != DateTime.MinValue)               // có giờ vào, cho phép input giờ vào
            {
                checkVao_Sua.Enabled              = true;  // có giờ, cho phép input
                dtpVao_Sua.ValueChanged          -= dtp_Sua_OnValueChanged;
                cbCaVao_Sua.SelectedIndexChanged -= cbCa_Sua_OnSelectedIndexChanged;

                dtpVao_Sua.Value     = tmpVao;
                checkVao_Sua.Checked = false;

                dtpVao_Sua.ValueChanged          += dtp_Sua_OnValueChanged;
                cbCaVao_Sua.SelectedIndexChanged += cbCa_Sua_OnSelectedIndexChanged;
            }
            else               // ko cho phép input
            {
                dtpVao_Sua.ValueChanged          -= dtp_Sua_OnValueChanged;
                cbCaVao_Sua.SelectedIndexChanged -= cbCa_Sua_OnSelectedIndexChanged;

                checkVao_Sua.Checked = false;
                checkVao_Sua.Enabled = false;                // ko có giờ vào nên ko thể input
                dtpVao_Sua.Value     = tmpNgayCong;

                dtpVao_Sua.ValueChanged          += dtp_Sua_OnValueChanged;
                cbCaVao_Sua.SelectedIndexChanged += cbCa_Sua_OnSelectedIndexChanged;
            }

            if (tmpRa != DateTime.MinValue)               // có giờ ra, cho phép input giờ ra
            {
                checkRa_Sua.Enabled              = true;  // có giờ , cho phép input
                dtpRa_Sua.ValueChanged          -= dtp_Sua_OnValueChanged;
                cbCaRa_Sua.SelectedIndexChanged -= cbCa_Sua_OnSelectedIndexChanged;

                dtpRa_Sua.Value     = tmpRa;
                checkRa_Sua.Checked = false;

                dtpRa_Sua.ValueChanged          += dtp_Sua_OnValueChanged;
                cbCaRa_Sua.SelectedIndexChanged += cbCa_Sua_OnSelectedIndexChanged;
            }
            else
            {
                dtpRa_Sua.ValueChanged          -= dtp_Sua_OnValueChanged;
                cbCaRa_Sua.SelectedIndexChanged -= cbCa_Sua_OnSelectedIndexChanged;

                checkRa_Sua.Checked = false;
                checkRa_Sua.Enabled = false;                // ko co gio ra, ko cho phep sua
                dtpRa_Sua.Value     = tmpNgayCong;

                dtpRa_Sua.ValueChanged          += dtp_Sua_OnValueChanged;
                cbCaRa_Sua.SelectedIndexChanged += cbCa_Sua_OnSelectedIndexChanged;
            }
        }
コード例 #5
0
        private void LoadTabThemGio(cUserInfo tmpNV, DateTime tmpNgayCong, cChkInOut old_CIO)
        {
            DateTime tmpVao, tmpRa;

            if (old_CIO == null)
            {
                tmpVao = tmpRa = DateTime.MinValue;
            }
            else
            {
                tmpVao = old_CIO.Vao == null ? DateTime.MinValue : old_CIO.Vao.TimeStr;
                tmpRa  = old_CIO.Raa == null ? DateTime.MinValue : old_CIO.Raa.TimeStr;
            }
            tbTenNV_Them.Text         = tmpNV.UserFullName;
            cbLyDo_Them.SelectedIndex = 0;
            cbLyDo_Them.Text          = string.Empty;
            tbGhiChu_Them.Text        = string.Empty;
            if (tmpVao == DateTime.MinValue)   // ko có giờ vào, cho phép input giờ vào
            {
                checkVao_Them.Enabled     = true;
                checkVao_Them.Checked     = true;
                dtpVao_Them.Enabled       = true;
                dtpVao_Them.ValueChanged -= dtp_Them_OnValueChanged;
                dtpVao_Them.Value         = tmpNgayCong;
                dtpVao_Them.ValueChanged += dtp_Them_OnValueChanged;
                cbCaVao_Them.Enabled      = true;
                LoadComboBoxThem(cbCaVao_Them, tmpNV.DSCa);
            }
            else   // ko cho phép input
                   //checkVao_Them.Enabled = false; //new 3/3/2014
            {
                checkVao_Them.Checked = false;
                //dtpVao_Them.Enabled = false;//new 3/3/2014
                dtpVao_Them.ValueChanged -= dtp_Them_OnValueChanged;
                dtpVao_Them.Value         = tmpVao;
                cbCaVao_Them.Enabled      = false;
                LoadComboBoxThem(cbCaVao_Them, tmpNV.DSCa);                 //new 3/3/2014->old://LoadComboBoxThem(cbCaVao_Them, null);
            }

            if (tmpRa == DateTime.MinValue)   // ko có giờ ra, cho phép input giờ ra
            {
                checkRa_Them.Enabled     = true;
                checkRa_Them.Checked     = true;
                dtpRa_Them.Enabled       = true;
                dtpRa_Them.ValueChanged -= dtp_Them_OnValueChanged;
                dtpRa_Them.Value         = tmpNgayCong;
                dtpRa_Them.ValueChanged += dtp_Them_OnValueChanged;
                cbCaRa_Them.Enabled      = true;
                LoadComboBoxThem(cbCaRa_Them, tmpNV.DSCa);
            }
            else
            {
                //checkRa_Them.Enabled = false;//new 3/3/2014
                checkRa_Them.Checked = false;
                //dtpRa_Them.Enabled = false;//new 3/3/2014
                dtpRa_Them.ValueChanged -= dtp_Them_OnValueChanged;
                dtpRa_Them.Value         = tmpRa;
                cbCaRa_Them.Enabled      = false;
                LoadComboBoxThem(cbCaRa_Them, tmpNV.DSCa);                 //new 3/3/2014 ->old://LoadComboBoxThem(cbCaRa_Them, null);
            }
        }