private void btnChuyenDoi_Click(object sender, EventArgs e)
        {
            if (SqlDataAccessHelper.TestConnection(SqlDataAccessHelper.ConnectionString) == false)
            {
                AutoClosingMessageBox.Show("Mất kết nối với CSDL. Vui lòng thử lại sau.", "Lỗi", 2000);
                return;
            }

            IsReload = true;
            var row      = ((DataRowView)((dgrdGioKDQD.SelectedRows[0]).DataBoundItem)).Row;
            var checkold = (cChk)row["cChk"];
            var loaiCuu  = (checkold.GetType() == typeof(cChkInn_A));
            var loaiMoi  = !loaiCuu;
            var giocuu   = checkold.Time;
            var lydo     = (cbLyDo_Suaa.SelectedItem != null) ? cbLyDo_Suaa.SelectedItem.ToString() : cbLyDo_Suaa.SelectedText;
            var ghichu   = tbGhiChu_Suaa.Text;

            #region thông báo ko cho chuyển đõi nếu đã xn

            if (checkold is cChkInn_V || checkold is cChkOut_V)
            {
                MessageBox.Show(Resources.GioDaXacnhanKhongTheThayDoi, Resources.capThongBao);
                return;
            }

            #endregion

            #region hỏi lại trước khi sửa

            if (loaiCuu)
            {
                if (MessageBox.Show(string.Format(Resources.xacNhanChuyenDoiGioDonGian, "vào", giocuu.ToString("H:mm dddd d/M"), "ra", nhanvien_goc.TenNV),
                                    Resources.capXacNhan, MessageBoxButtons.YesNo) == DialogResult.No)
                {
                    return;
                }
            }
            else
            {
                if (MessageBox.Show(string.Format(Resources.xacNhanChuyenDoiGioDonGian, "ra", giocuu.ToString("H:mm dddd d/M"), "vào", nhanvien_goc.TenNV),
                                    Resources.capXacNhan, MessageBoxButtons.YesNo) == DialogResult.No)
                {
                    return;
                }
            }

            #endregion
            var ds_raa3_vao1     = new List <cChk>();
            var DS_Check_KoHopLe = new List <cChk>();

            cChk checknew;
            if (loaiMoi)
            {
                checknew = new cChkInn_A {
                    Type = "I", MaCC = nhanvien_goc.MaCC, IsEdited = 1, Time = giocuu, Source = "PC", MachineNo = 21, PhucHoi = new cPhucHoi {
                        IDGioGoc = int.MaxValue, Them = checkold.PhucHoi.Them, Xoaa = checkold.PhucHoi.Xoaa
                    }
                }
            }
            ;                                                                                                                                                                                                                                                                 // tbd trạng thái?? tạm thời lấy int.maxvalue tức sửa > 0
            else
            {
                checknew = new cChkOut_A {
                    Type = "O", MaCC = nhanvien_goc.MaCC, IsEdited = 1, Time = giocuu, Source = "PC", MachineNo = 22, PhucHoi = new cPhucHoi {
                        IDGioGoc = int.MaxValue, Them = checkold.PhucHoi.Them, Xoaa = checkold.PhucHoi.Xoaa
                    }
                }
            };                                                                                                                                                                                                                                                                // tbd trạng thái?? tạm thời lấy int.maxvalue tức sửa > 0
            XL.SuaGioChoNV(checkold, checknew, nhanvien_goc, XL2.currUserID, lydo, ghichu);
            XL.SapXepDS_Check(new[] { nhanvien_goc.DS_Check_A });
            XL.LoaiBoCheckCungLoaiTrong30phut(nhanvien_goc.DS_Check_A, nhanvien_goc.DS_Check_KoHopLe);
            XL.GhepCIO_A(nhanvien_goc.DS_Check_A, nhanvien_goc.DS_CIO_A);
            XL.LoaiBoCIOKoHopLe(nhanvien_goc.DS_CIO_A, nhanvien_goc.DS_Check_A, nhanvien_goc.DS_Check_KoHopLe);
            if (nhanvien_goc.DS_Check_KoHopLe.Count > 0)
            {
                DS_Check_KoHopLe.AddRange(nhanvien_goc.DS_Check_KoHopLe);
                nhanvien_goc.DS_Check_KoHopLe.Clear();
            }

            XL.XetCa_CIO_A(nhanvien_goc.DS_CIO_A, nhanvien_goc.LichTrinhLV.DSCa, ds_raa3_vao1, nhanvien_goc.DS_Check_A);            //nhanvien_goc.MacDinhTinhPC50, //[140615_4]
            XL.TronDS_CIO_A_V(nhanvien_goc.DS_CIO_A, nhanvien_goc.DS_CIO_V, nhanvien_goc.DSVaoRa);
            XL.TinhCongTheoNgay(nhanvien_goc.DSVaoRa, nhanvien_goc.NgayCongBD_Bef2D, nhanvien_goc.NgayCongKT_Aft2D, nhanvien_goc.DSVang, nhanvien_goc.DSNgayCong, nhanvien_goc.MacDinhTinhPC50);
            XL.TinhLaiPhuCapTC(nhanvien_goc.DSXNPhuCap50, nhanvien_goc.DSNgayCong);
            XL.TinhLaiPhuCapDB(nhanvien_goc.DSXNPhuCapDB, nhanvien_goc.DSNgayCong);
            NgayCong_goc = nhanvien_goc.DSNgayCong.Find(o => o.Ngay == NgayCong_goc.Ngay);
            if (DS_Check_KoHopLe.Count > 0)
            {
                DAL.LoaiGioLienQuan(DS_Check_KoHopLe);
            }
            if (ds_raa3_vao1.Count > 0)
            {
                DAL.ThemGio_ra3_vao1(ds_raa3_vao1);
            }

            m_Bang_ChiTiet.Rows.Clear();
            loadGrid();
        }
        private void btnXoaa_Click(object sender, EventArgs e)
        {
            if (SqlDataAccessHelper.TestConnection(SqlDataAccessHelper.ConnectionString) == false)
            {
                AutoClosingMessageBox.Show("Mất kết nối với CSDL. Vui lòng thử lại sau.", "Lỗi", 2000);
                return;
            }

            IsReload = true;

            #region lấy thông tin từ màn hình

            var row    = ((DataRowView)((dgrdGioKDQD.SelectedRows[0]).DataBoundItem)).Row;
            var check  = (cChk)row["cChk"];
            var lydo   = (cbLyDo_Xoaa.SelectedItem != null) ? cbLyDo_Xoaa.SelectedItem.ToString() : cbLyDo_Xoaa.SelectedText;
            var ghichu = tbGhiChu_Xoaa.Text;

            #endregion

            #region thông báo ko cho sửa nếu đã xác nhận rồi

            if (check is cChkInn_V || check is cChkOut_V)
            {
                MessageBox.Show(Resources.GioDaXacnhanKhongTheThayDoi, Resources.capThongBao);
                return;
            }

            #endregion

            #region hỏi lại trước khi sửa

            if (MessageBox.Show((string.Format(Resources.xacNhanXoaGioDonGian, check.Time.ToString("H:mm dddd d/M"))),
                                Resources.capXacNhan, MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }

            #endregion


            var ds_raa3_vao1     = new List <cChk>();
            var DS_Check_KoHopLe = new List <cChk>();

            // xóa khỏi ds nên ko cần sắp xếp lại
            if (XL.XoaGioChoNV(check, nhanvien_goc, XL2.currUserID, lydo, ghichu))
            {
                XL.LoaiBoCheckCungLoaiTrong30phut(nhanvien_goc.DS_Check_A, nhanvien_goc.DS_Check_KoHopLe);
                XL.GhepCIO_A(nhanvien_goc.DS_Check_A, nhanvien_goc.DS_CIO_A);
                XL.LoaiBoCIOKoHopLe(nhanvien_goc.DS_CIO_A, nhanvien_goc.DS_Check_A, nhanvien_goc.DS_Check_KoHopLe);
                if (nhanvien_goc.DS_Check_KoHopLe.Count > 0)
                {
                    DS_Check_KoHopLe.AddRange(nhanvien_goc.DS_Check_KoHopLe);
                    nhanvien_goc.DS_Check_KoHopLe.Clear();
                }

                XL.XetCa_CIO_A(nhanvien_goc.DS_CIO_A, nhanvien_goc.LichTrinhLV.DSCa, ds_raa3_vao1, nhanvien_goc.DS_Check_A);                //nhanvien_goc.MacDinhTinhPC50, //[140615_4]
                XL.TronDS_CIO_A_V(nhanvien_goc.DS_CIO_A, nhanvien_goc.DS_CIO_V, nhanvien_goc.DSVaoRa);
                XL.TinhCongTheoNgay(nhanvien_goc.DSVaoRa, nhanvien_goc.NgayCongBD_Bef2D, nhanvien_goc.NgayCongKT_Aft2D, nhanvien_goc.DSVang, nhanvien_goc.DSNgayCong, nhanvien_goc.MacDinhTinhPC50);
                XL.TinhLaiPhuCapTC(nhanvien_goc.DSXNPhuCap50, nhanvien_goc.DSNgayCong);
                XL.TinhLaiPhuCapDB(nhanvien_goc.DSXNPhuCapDB, nhanvien_goc.DSNgayCong);

                NgayCong_goc = nhanvien_goc.DSNgayCong.Find(o => o.Ngay == NgayCong_goc.Ngay);
            }
            if (DS_Check_KoHopLe.Count > 0)
            {
                DAL.LoaiGioLienQuan(DS_Check_KoHopLe);
            }
            if (ds_raa3_vao1.Count > 0)
            {
                DAL.ThemGio_ra3_vao1(ds_raa3_vao1);
            }

            // update lại table
            m_Bang_ChiTiet.Rows.Clear();
            loadGrid();
        }
        private void btnThem_Click(object sender, EventArgs e)
        {
            if (SqlDataAccessHelper.TestConnection(SqlDataAccessHelper.ConnectionString) == false)
            {
                AutoClosingMessageBox.Show("Mất kết nối với CSDL. Vui lòng thử lại sau.", "Lỗi", 2000);
                return;
            }

            IsReload = true;

            #region lấy thông tin từ màn hình

            var giovao           = dtpVao_Them.Value.Add(XL2._01giay);
            var gioraa           = dtpRaa_Them.Value;
            var lydo             = (cbLyDo_Them.SelectedItem != null) ? cbLyDo_Them.SelectedItem.ToString() : cbLyDo_Them.SelectedText;
            var ghichu           = tbGhichu_Them.Text;
            var UserEnrollNumber = nhanvien_goc.MaCC;

            #endregion

            if (chkGioVao.Checked)
            {
                #region hỏi lại trước khi thêm

                if (MessageBox.Show(string.Format(Resources.xacNhanThemGioVaoDonGian, giovao.ToString("H:mm dddd d/M"), nhanvien_goc.TenNV),
                                    Resources.capXacNhan, MessageBoxButtons.YesNo) == DialogResult.No)
                {
                    return;
                }

                #endregion

                var checkinn = new cChkInn_A {
                    IsEdited = 1, Type = "I", MachineNo = 21, Source = "PC", MaCC = UserEnrollNumber, Time = giovao, PhucHoi = new cPhucHoi {
                        Them = true, IDGioGoc = -1, Xoaa = false
                    }
                };
                XL.ThemGioChoNV(checkinn, nhanvien_goc, XL2.currUserID, lydo, ghichu);
            }

            if (chkGioRaa.Checked)
            {
                #region hỏi lại trước khi thêm

                if (MessageBox.Show(string.Format(Resources.xacNhanThemGioRaaDonGian, gioraa.ToString("H:mm dddd d/M"), nhanvien_goc.TenNV),
                                    Resources.capXacNhan, MessageBoxButtons.YesNo) == DialogResult.No)
                {
                    return;
                }

                #endregion

                var checkout = new cChkOut_A {
                    IsEdited = 1, Type = "O", MachineNo = 22, Source = "PC", MaCC = UserEnrollNumber, Time = gioraa, PhucHoi = new cPhucHoi {
                        Them = true, IDGioGoc = -1, Xoaa = false
                    }
                };
                XL.ThemGioChoNV(checkout, nhanvien_goc, XL2.currUserID, lydo, ghichu);
            }
            var ds_raa3_vao1     = new List <cChk>();
            var DS_Check_KoHopLe = new List <cChk>();

            XL.SapXepDS_Check(new[] { nhanvien_goc.DS_Check_A });
            XL.LoaiBoCheckCungLoaiTrong30phut(nhanvien_goc.DS_Check_A, nhanvien_goc.DS_Check_KoHopLe);
            XL.GhepCIO_A(nhanvien_goc.DS_Check_A, nhanvien_goc.DS_CIO_A);
            XL.LoaiBoCIOKoHopLe(nhanvien_goc.DS_CIO_A, nhanvien_goc.DS_Check_A, nhanvien_goc.DS_Check_KoHopLe);
            if (nhanvien_goc.DS_Check_KoHopLe.Count > 0)
            {
                DS_Check_KoHopLe.AddRange(nhanvien_goc.DS_Check_KoHopLe);
                nhanvien_goc.DS_Check_KoHopLe.Clear();
            }
            XL.XetCa_CIO_A(nhanvien_goc.DS_CIO_A, nhanvien_goc.LichTrinhLV.DSCa, ds_raa3_vao1, nhanvien_goc.DS_Check_A);            //nhanvien_goc.MacDinhTinhPC50, //[140615_4]
            XL.TronDS_CIO_A_V(nhanvien_goc.DS_CIO_A, nhanvien_goc.DS_CIO_V, nhanvien_goc.DSVaoRa);
            XL.TinhCongTheoNgay(nhanvien_goc.DSVaoRa, nhanvien_goc.NgayCongBD_Bef2D, nhanvien_goc.NgayCongKT_Aft2D, nhanvien_goc.DSVang, nhanvien_goc.DSNgayCong, nhanvien_goc.MacDinhTinhPC50);
            XL.TinhLaiPhuCapTC(nhanvien_goc.DSXNPhuCap50, nhanvien_goc.DSNgayCong);
            XL.TinhLaiPhuCapDB(nhanvien_goc.DSXNPhuCapDB, nhanvien_goc.DSNgayCong);
            NgayCong_goc = nhanvien_goc.DSNgayCong.Find(o => o.Ngay == NgayCong_goc.Ngay);
            if (DS_Check_KoHopLe.Count > 0)
            {
                DAL.LoaiGioLienQuan(DS_Check_KoHopLe);
            }
            if (ds_raa3_vao1.Count > 0)
            {
                DAL.ThemGio_ra3_vao1(ds_raa3_vao1);
            }

            m_Bang_ChiTiet.Rows.Clear();
            loadGrid();
        }
示例#4
0
        private void btnXoaGioRaa_Click(object sender, EventArgs e)
        {
            if (SqlDataAccessHelper.TestConnection(SqlDataAccessHelper.ConnectionString) == false)
            {
                AutoClosingMessageBox.Show("Mất kết nối với CSDL. Vui lòng thử lại sau.", "Lỗi", 2000);
                return;
            }

            IsReload = true;
            var lydo   = cbLyDo.SelectedText;
            var ghichu = tbGhiChu.Text;

            #region hỏi lại ttrước khi xoá

            if (MessageBox.Show(string.Format(Resources.xacNhanXoaGioHangLoat, "ra"), Resources.capXacNhan, MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }

            #endregion


            if (dgrdDSGioVaoRa.SelectedRows.Count == 0)
            {
                return;
            }
            var flagThongBao = false;            // thông báo ko được xoá giờ đãn XN

            IEnumerable <DataGridViewRow> dataGridViewRows = dgrdDSGioVaoRa.SelectedRows.Cast <DataGridViewRow>();
            var arrRecord = (from row in dataGridViewRows
                             let nv = (cUserInfo)(((DataRowView)row.DataBoundItem).Row["cUserInfo"])
                                      let cChkInOut = (cChkInOut)(((DataRowView)row.DataBoundItem).Row["cChkInOut"])
                                                      let ngay = (DateTime)(((DataRowView)row.DataBoundItem).Row["TimeStrNgay"])
                                                                 select new { nhanvien = nv, CIO = cChkInOut, Ngay = ngay }).GroupBy(o => o.nhanvien).ToList();

            var ds_raa3_vao1     = new List <cChk>();
            var DS_Check_KoHopLe = new List <cChk>();
            foreach (var groupByNV in arrRecord)
            {
                var nhanvien = groupByNV.Key;
                foreach (var row in groupByNV)
                {
                    if (row.CIO.GetType() == typeof(cChkInOut_V))
                    {
                        flagThongBao = true;
                        continue;
                    }

                    if (row.CIO.HaveINOUT == -1)
                    {
                        continue;
                    }
                    var checkout = row.CIO.Raa;
                    XL.XoaGioChoNV(checkout, row.nhanvien, XL2.currUserID, lydo, ghichu);
                }
                XL.LoaiBoCheckCungLoaiTrong30phut(nhanvien.DS_Check_A, nhanvien.DS_Check_KoHopLe);
                XL.GhepCIO_A(nhanvien.DS_Check_A, nhanvien.DS_CIO_A);
                XL.LoaiBoCIOKoHopLe(nhanvien.DS_CIO_A, nhanvien.DS_Check_A, nhanvien.DS_Check_KoHopLe);
                if (nhanvien.DS_Check_KoHopLe.Count > 0)
                {
                    DS_Check_KoHopLe.AddRange(nhanvien.DS_Check_KoHopLe);
                    nhanvien.DS_Check_KoHopLe.Clear();
                }

                XL.XetCa_CIO_A(nhanvien.DS_CIO_A, nhanvien.LichTrinhLV.DSCa, ds_raa3_vao1, nhanvien.DS_Check_A);
                XL.TronDS_CIO_A_V(nhanvien.DS_CIO_A, nhanvien.DS_CIO_V, nhanvien.DSVaoRa);
                XL.TinhCongTheoNgay(nhanvien.DSVaoRa, nhanvien.NgayCongBD_Bef2D, nhanvien.NgayCongKT_Aft2D, nhanvien.DSVang, nhanvien.DSNgayCong, nhanvien.MacDinhTinhPC50);
                XL.TinhLaiPhuCapTC(nhanvien.DSXNPhuCap50, nhanvien.DSNgayCong);
                XL.TinhLaiPhuCapDB(nhanvien.DSXNPhuCapDB, nhanvien.DSNgayCong);
            }
            if (DS_Check_KoHopLe.Count > 0)
            {
                DAL.LoaiGioLienQuan(DS_Check_KoHopLe);
            }
            if (ds_raa3_vao1.Count > 0)
            {
                DAL.ThemGio_ra3_vao1(ds_raa3_vao1);
            }

            loadGrid();


            if (flagThongBao)
            {
                AutoClosingMessageBox.Show("Không thể xoá các giờ đã xác nhận.", "Thông báo", 2000);
            }
        }
示例#5
0
        private void btnSuaa_Click(object sender, EventArgs e)
        {
            if (SqlDataAccessHelper.TestConnection(SqlDataAccessHelper.ConnectionString) == false)
            {
                AutoClosingMessageBox.Show("Mất kết nối với CSDL. Vui lòng thử lại sau.", "Lỗi", 2000);
                return;
            }

            IsReload = true;
            var timespanGioVao = dtpVao.Value.TimeOfDay;
            var timespanGioRaa = dtpRaa.Value.TimeOfDay;
            var lydo           = (cbLyDo.SelectedItem != null) ? cbLyDo.SelectedItem.ToString() : cbLyDo.SelectedText;
            var ghichu         = tbGhiChu.Text;

            if (dgrdDSGioVaoRa.SelectedRows.Count == 0)
            {
                return;
            }

            #region hỏi lại trước khi sửa

            if (radGioVao.Checked)
            {
                if (MessageBox.Show(string.Format(Resources.xacNhanSuaGioHangLoat, "vào", dtpVao.Value.ToString("H:mm")),
                                    Resources.capXacNhan, MessageBoxButtons.YesNo) == DialogResult.No)
                {
                    return;
                }
            }
            else
            {
                if (MessageBox.Show(string.Format(Resources.xacNhanSuaGioHangLoat, "ra", dtpRaa.Value.ToString("H:mm")),
                                    Resources.capXacNhan, MessageBoxButtons.YesNo) == DialogResult.No)
                {
                    return;
                }
            }

            #endregion

            var flagThongBao = false;             // flag thông báo không cho phép sửa giờ đã CN
            IEnumerable <DataGridViewRow> dataGridViewRows = dgrdDSGioVaoRa.SelectedRows.Cast <DataGridViewRow>();
            var arrRecord = (from row in dataGridViewRows
                             let nv = (cUserInfo)(((DataRowView)row.DataBoundItem).Row["cUserInfo"])
                                      let cChkInOut = (cChkInOut)(((DataRowView)row.DataBoundItem).Row["cChkInOut"])
                                                      let ngay = (DateTime)(((DataRowView)row.DataBoundItem).Row["TimeStrNgay"])
                                                                 select new { nhanvien = nv, CIO = cChkInOut, Ngay = ngay }).GroupBy(o => o.nhanvien).ToList();
            var ds_raa3_vao1     = new List <cChk>();
            var DS_Check_KoHopLe = new List <cChk>();
            foreach (var group in arrRecord)
            {
                var nhanvien = group.Key;
                foreach (var item in group)
                {
                    if (item.CIO.GetType() == typeof(cChkInOut_V))
                    {
                        flagThongBao = true;
                        continue;
                    }
                    if (radGioVao.Checked)
                    {
                        if (item.CIO.HaveINOUT == -2)
                        {
                            continue;
                        }
                        var giovao      = item.Ngay.Add(timespanGioVao);
                        var checkinnold = item.CIO.Vao;
                        var checkinnnew = new cChkInn_A {
                            MaCC    = nhanvien.MaCC, Type = "I", Time = giovao, Source = "PC", MachineNo = 21, IsEdited = 1,
                            PhucHoi = new cPhucHoi {
                                IDGioGoc = int.MaxValue, Them = checkinnold.PhucHoi.Them, Xoaa = checkinnold.PhucHoi.Xoaa
                            }
                        };
                        XL.SuaGioChoNV(checkinnold, checkinnnew, nhanvien, XL2.currUserID, lydo, ghichu);
                    }
                    else
                    {
                        if (item.CIO.HaveINOUT == -1)
                        {
                            continue;
                        }
                        var gioraa      = item.Ngay.Add(timespanGioRaa);
                        var checkoutold = item.CIO.Raa;
                        var checkoutnew = new cChkOut_A {
                            MaCC    = nhanvien.MaCC, Type = "O", Time = gioraa, Source = "PC", MachineNo = 22, IsEdited = 1,
                            PhucHoi = new cPhucHoi {
                                IDGioGoc = int.MaxValue, Them = checkoutold.PhucHoi.Them, Xoaa = checkoutold.PhucHoi.Xoaa
                            }
                        };
                        XL.SuaGioChoNV(checkoutold, checkoutnew, nhanvien, XL2.currUserID, lydo, ghichu);
                    }
                }
                XL.SapXepDS_Check(new[] { nhanvien.DS_Check_A });
                XL.LoaiBoCheckCungLoaiTrong30phut(nhanvien.DS_Check_A, nhanvien.DS_Check_KoHopLe);
                if (nhanvien.DS_Check_KoHopLe.Count > 0)
                {
                    DS_Check_KoHopLe.AddRange(nhanvien.DS_Check_KoHopLe);
                    nhanvien.DS_Check_KoHopLe.Clear();
                }

                XL.GhepCIO_A(nhanvien.DS_Check_A, nhanvien.DS_CIO_A);
                XL.LoaiBoCIOKoHopLe(nhanvien.DS_CIO_A, nhanvien.DS_Check_A, nhanvien.DS_Check_KoHopLe);
                XL.XetCa_CIO_A(nhanvien.DS_CIO_A, nhanvien.LichTrinhLV.DSCa, ds_raa3_vao1, nhanvien.DS_Check_A);
                XL.TronDS_CIO_A_V(nhanvien.DS_CIO_A, nhanvien.DS_CIO_V, nhanvien.DSVaoRa);
                XL.TinhCongTheoNgay(nhanvien.DSVaoRa, nhanvien.NgayCongBD_Bef2D, nhanvien.NgayCongKT_Aft2D, nhanvien.DSVang, nhanvien.DSNgayCong, nhanvien.MacDinhTinhPC50);
                XL.TinhLaiPhuCapTC(nhanvien.DSXNPhuCap50, nhanvien.DSNgayCong);
                XL.TinhLaiPhuCapDB(nhanvien.DSXNPhuCapDB, nhanvien.DSNgayCong);
            }
            if (DS_Check_KoHopLe.Count > 0)
            {
                DAL.LoaiGioLienQuan(DS_Check_KoHopLe);
            }
            if (ds_raa3_vao1.Count > 0)
            {
                DAL.ThemGio_ra3_vao1(ds_raa3_vao1);
            }

            loadGrid();
            if (flagThongBao)
            {
                AutoClosingMessageBox.Show("Không thể sửa các giờ đã xác nhận.", "Thông báo", 2000);
            }
        }
示例#6
0
        private void btnThem_Click(object sender, EventArgs e)
        {
            if (SqlDataAccessHelper.TestConnection(SqlDataAccessHelper.ConnectionString) == false)
            {
                AutoClosingMessageBox.Show("Mất kết nối với CSDL. Vui lòng thử lại sau.", "Lỗi", 2000);
                return;
            }

            IsReload = true;

            #region lấy thông tin

            var timespanGioVao = dtpVao.Value.TimeOfDay;
            var timespanGioRaa = dtpRaa.Value.TimeOfDay;
            var lydo           = (cbLyDo.SelectedItem != null) ? cbLyDo.SelectedItem.ToString() : cbLyDo.SelectedText;
            var ghichu         = tbGhiChu.Text;

            #endregion

            var tempstring = radGioVao.Checked ? "vào" : "ra";
            var temptime   = (radGioVao.Checked) ? dtpVao.Value : dtpRaa.Value;
            if (dgrdDSGioVaoRa.SelectedRows.Count == 0)
            {
                return;
            }

            #region hỏi lại trước khi thêm

            if (MessageBox.Show(string.Format(Resources.xacNhanThemGioHangLoat, tempstring, temptime.ToString("H:mm")),
                                Resources.capXacNhan, MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }

            #endregion

            #region lấy ds các giờ vào ra, group lại theo từng nhân viên để thực hiện thêm 1 loạt rồi sau đó xử lý tính toán lại checkinout và ngày công

            IEnumerable <DataGridViewRow> dataGridViewRows = dgrdDSGioVaoRa.SelectedRows.Cast <DataGridViewRow>();
            var arrRecord = (from row in dataGridViewRows
                             let nv = (cUserInfo)(((DataRowView)row.DataBoundItem).Row["cUserInfo"])
                                      let cChkInOut = (cChkInOut)(((DataRowView)row.DataBoundItem).Row["cChkInOut"])
                                                      let ngay = (DateTime)(((DataRowView)row.DataBoundItem).Row["TimeStrNgay"])
                                                                 select new { nhanvien = nv, CIO = cChkInOut, Ngay = ngay }).GroupBy(o => o.nhanvien).ToList();

            #endregion

            var ds_raa3_vao1     = new List <cChk>();
            var DS_Check_KoHopLe = new List <cChk>();
            foreach (var group in arrRecord)
            {
                var nhanvien = group.Key;
                foreach (var item in group)
                {
                    if (item.CIO.HaveINOUT == 1)
                    {
                        continue;                               // 1. bỏ qua các giờ đủ IO
                    }
                    if (radGioVao.Checked)                      //2. thêm I cho O kv
                    {
                        if (item.CIO.HaveINOUT == -2)
                        {
                            var giovao = item.Ngay.Add(timespanGioVao);
                            if (giovao > item.CIO.Raa.Time)
                            {
                                giovao = giovao.AddDays(-1d);                                                        // trừ đi 1 ngày nếu (giờ vào thêm) > giờ ra
                            }
                            var checkinn = new cChkInn_A {
                                IsEdited = 1, MaCC = item.nhanvien.MaCC, Type = "I", Time = giovao, Source = "PC", MachineNo = 21, PhucHoi = new cPhucHoi {
                                    Them = true, IDGioGoc = -1, Xoaa = false
                                }
                            };
                            XL.ThemGioChoNV(checkinn, item.nhanvien, XL2.currUserID, lydo, ghichu);
                        }
                    }
                    else
                    {
                        if (item.CIO.HaveINOUT == -1)                          //3. thêm O cho I kr
                        {
                            var gioraa = item.Ngay.Add(timespanGioRaa);
                            if (gioraa < item.CIO.Vao.Time)
                            {
                                gioraa = gioraa.AddDays(1d);                                                        // cộng thêm 1 ngày nếu (giờ vào thêm) > giờ ra
                            }
                            var checkout = new cChkOut_A()
                            {
                                IsEdited = 1, MaCC = item.nhanvien.MaCC, Type = "O", Time = gioraa, Source = "PC", MachineNo = 22, PhucHoi = new cPhucHoi {
                                    Them = true, IDGioGoc = -1, Xoaa = false
                                }
                            };
                            XL.ThemGioChoNV(checkout, item.nhanvien, XL2.currUserID, lydo, ghichu);
                        }
                    }
                }

                XL.SapXepDS_Check(new[] { nhanvien.DS_Check_A });

                XL.LoaiBoCheckCungLoaiTrong30phut(nhanvien.DS_Check_A, nhanvien.DS_Check_KoHopLe);
                XL.GhepCIO_A(nhanvien.DS_Check_A, nhanvien.DS_CIO_A);
                XL.LoaiBoCIOKoHopLe(nhanvien.DS_CIO_A, nhanvien.DS_Check_A, nhanvien.DS_Check_KoHopLe);
                if (nhanvien.DS_Check_KoHopLe.Count > 0)
                {
                    DS_Check_KoHopLe.AddRange(nhanvien.DS_Check_KoHopLe);
                    nhanvien.DS_Check_KoHopLe.Clear();
                }

                XL.XetCa_CIO_A(nhanvien.DS_CIO_A, nhanvien.LichTrinhLV.DSCa, ds_raa3_vao1, nhanvien.DS_Check_A);
                XL.TronDS_CIO_A_V(nhanvien.DS_CIO_A, nhanvien.DS_CIO_V, nhanvien.DSVaoRa);
                XL.TinhCongTheoNgay(nhanvien.DSVaoRa, nhanvien.NgayCongBD_Bef2D, nhanvien.NgayCongKT_Aft2D, nhanvien.DSVang, nhanvien.DSNgayCong, nhanvien.MacDinhTinhPC50);
                XL.TinhLaiPhuCapTC(nhanvien.DSXNPhuCap50, nhanvien.DSNgayCong);
                XL.TinhLaiPhuCapDB(nhanvien.DSXNPhuCapDB, nhanvien.DSNgayCong);
            }
            if (DS_Check_KoHopLe.Count > 0)
            {
                DAL.LoaiGioLienQuan(DS_Check_KoHopLe);
            }
            if (ds_raa3_vao1.Count > 0)
            {
                DAL.ThemGio_ra3_vao1(ds_raa3_vao1);
            }

            loadGrid();
        }