public bool CheckPhieuNo()
        {
            int? ID_Check = null;
            Int32 selectedRowCount = gridDanhSachPhieuNhap.CurrentCell.RowIndex;
            string maphieu = gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["Ma_phieu"].Value.ToString();
            try
            {
                ID_Check = (int?)gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["ID_loai_phieu_nhap"].Value ?? null;
            }
            catch (Exception ex) { }
            clsLoaiPhieuNhap lpn = new clsLoaiPhieuNhap();
            if (ID_Check != null)
            {

                string name = lpn.getTenLPN((int)ID_Check);
                if (name.First().ToString() == "X")
                {
                    // lay danh sach nhung phieu nhap ngoai,tu to trinh va muon ngoai chua thuc hien tra no

                    bool co_phieu_no = clsPhieuNhapKho.GetAllPhieuNoDaDuyet(maphieu);
                    if (co_phieu_no == true)
                    {
                        DialogResult result2 = MessageBox.Show("Bạn có phiếu đang nợ vui lòng thực hiện trừ nợ trước khi duyệt phiếu ",
            "Cảnh báo",
            MessageBoxButtons.YesNoCancel,
            MessageBoxIcon.Question);
                        if (result2 == DialogResult.Yes)
                        {
                            frmBuTruPhieu butru = new frmBuTruPhieu(this, maphieu, "");
                            butru.Show();
                            return true;
                        }
                    }
                }
            }
            return false;
        }
        private void XuLyNhap_Phieu()
        {
            try
            {
                Int32 selectedRowCount = gridDanhSachPhieuNhap.CurrentCell.RowIndex;
                string maphieu = gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["Ma_phieu"].Value.ToString();
                int idKho = int.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["ID_kho"].Value.ToString());

                bool Da_phan_kho = bool.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["Da_phan_kho"].Value.ToString());

                if (Da_phan_kho == true)
                {
                    MessageBox.Show("Phiếu này đã duyệt và phân kho ");
                    return;
                }

                int idphieu = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["ID_phieu_nhap"].Value.ToString()) ? -1 : int.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["ID_phieu_nhap"].Value.ToString());
                int idloaiphieu = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["id_loai_phieu_nhap"].Value.ToString()) ? -1 : int.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["id_loai_phieu_nhap"].Value.ToString());
                bool isgoidau = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isgoidau"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isgoidau"].Value.ToString());
                bool isKNMN = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKNMN"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKNMN"].Value.ToString());
                bool isToTrinh = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isToTrinh"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isToTrinh"].Value.ToString());
                bool isKNTN = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKNTN"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKNTN"].Value.ToString());
                bool isKCMN = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKCMN"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKCMN"].Value.ToString());
                bool isKCTN = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKCTN"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKCTN"].Value.ToString());
                bool isNVMN = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isNVMN"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isNVMN"].Value.ToString());

                int ID_Kho = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["ID_kho"].Value.ToString()) ? 0 : int.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["ID_kho"].Value.ToString());

                bool isKhoNgoai =  new clsDM_Kho().GetDataARow(ID_Kho);

                if (isKhoNgoai == true)
                {
                    if (idloaiphieu != -1)
                    {
                        clsLoaiPhieuNhap lpn = new clsLoaiPhieuNhap();
                        if (lpn.getTenLPN(idloaiphieu).Equals("XD"))
                        {
                            KhoNgoai pn = new KhoNgoai();

                            if (pn.Insert(idphieu) == 1)
                            {
                                MessageBox.Show("Đã xác nhận thành công!"); return;

                            }
                        }
                    }

                }
                if (isNVMN == true)
                {
                    KhoNgoai pn = new KhoNgoai();

                    if (pn.Insert(idphieu) == 1)
                    {
                        MessageBox.Show("Đã xác nhận thành công!"); return;

                    }
                }
                if (isToTrinh == true)
                {
                    BienBanToTrinh BBTT = new BienBanToTrinh();
                    if (BBTT.Insert(idphieu) == 1)
                    {
                        MessageBox.Show("Đã xác nhận thành công!"); return;
                    }
                }
                if (isgoidau == true)
                {
                    GoiDau gd = new GoiDau();
                    if (gd.Insert(idphieu) == 1)
                    {
                        MessageBox.Show("Đã xác nhận thành công!"); return;

                    }
                }
                if (CheckPhieuNo() == true)
                    return;
                if (isKCMN == true)
                {
                    DiMuonNo KCMN = new DiMuonNo();
                    if (KCMN.Insert(idphieu) == 1)
                    {
                        MessageBox.Show("Đã xác nhận thành công!"); return;

                    }

                }
                if (isKCTN == true)
                {
                    DiTraNo KCTN = new DiTraNo();
                    if (KCTN.Insert(idphieu) == 1)
                    {
                        MessageBox.Show("Đã xác nhận thành công!"); return;

                    }

                }
                if (isKNTN == true)
                {
                    KhoKhacTraNo gd = new KhoKhacTraNo();
                    if (gd.Insert(idphieu) == 1)
                    {
                        MessageBox.Show("Đã xác nhận thành công!"); return;

                    }
                }
                if (isKNMN == true)
                {
                    PhieuKhoKhacMuon gd = new PhieuKhoKhacMuon();
                    if (gd.Insert(idphieu) == 1)
                    {
                        MessageBox.Show("Đã xác nhận thành công!"); return;

                    }
                }
                if (isgoidau == true)
                {
                    GoiDau gd = new GoiDau();
                    if (gd.Insert(idphieu) == 1)
                    {
                        MessageBox.Show("Đã xác nhận thành công!"); return;

                    }

                }

                if (idloaiphieu != -1)
                {
                    clsLoaiPhieuNhap lpn = new clsLoaiPhieuNhap();
                    if (lpn.getTenLPN(idloaiphieu).Equals("XD"))
                    {
                        PhieuNhap pn = new PhieuNhap();

                        if (pn.Insert(idphieu) == 1)
                        {
                            MessageBox.Show("Đã xác nhận thành công!"); return;

                        }
                    }
                    if (lpn.getTenLPN(idloaiphieu).Equals("TD"))
                    {
                        PhieuHoanNhap phn = new PhieuHoanNhap();
                        if (phn.Insert(idphieu) == 1)
                        {
                            MessageBox.Show("Đã xác nhận thành công!"); return;

                        }
                    }
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(Utilities.clsThamSoUtilities.COException(ex));
            }
        }
        public void XuLy()
        {
            try
            {
                Int32 selectedRowCount = gridDanhSachPhieuNhap.CurrentCell.RowIndex;
                string maphieu = gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["Ma_phieu"].Value.ToString();
                int idKho = int.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["ID_kho"].Value.ToString());

                //bool Da_phan_kho = bool.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["Da_phan_kho"].Value.ToString());

                //if (Da_phan_kho == true)
                //{
                //    MessageBox.Show("Phiếu này đã duyệt và phân kho ");
                //    return;
                //}

                //neu phieu nhap la XD thi co cac truong hop sau
                // kiem ttra xem danh sach vat tu trong danh sach phieu nhap la nhap ngoai va no la nhap tu to trinh hoac MN ko ?
                // neu trong to tinh co vat tu trung voi vat tu phieu nhap
                // thi nguoi dung tien hanh chuyen qua man hinh tra no
                DatabaseHelper help = new DatabaseHelper();
                help.ConnectDatabase();

                // lấy tất cả danh sách các vật tư có mã phiếu nhập đó
                DataTable tb = new clsChi_Tiet_Phieu_Nhap_Vat_Tu().GetAll(maphieu);

                //nếu phiếu này là cấn trừ
                //hiển thị form cấn trừ nợ cho vật tư
                // bool? isCanTru = bool.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isCanTru"].Value.ToString());
                try
                {
                    bool? isCanTru = bool.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isCanTru"].Value.ToString());
                    if (isCanTru == true)
                    {
                        MessageBox.Show("Phiếu này đang ở trạng thái chưa bù trừ nợ, vui lòng thực hiện chức năng bù trừ nợ trước! ");
                        return;
                    }
                }
                catch (Exception ex) { }
                try
                {
                    bool? isNhapNgoai = bool.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isNhapNgoai"].Value.ToString());
                    bool? isChoMuonNo = null;
                    try
                    {
                        isChoMuonNo = bool.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isChoMuonNgoai"].Value.ToString());
                    }
                    catch (Exception ex)
                    {

                    }
                    if (isNhapNgoai == true && isChoMuonNo == true)
                    {
                        using (var dbcxtransaction = help.ent.Database.BeginTransaction())
                        {
                            for (int i = 0; i < tb.Rows.Count; i++)
                            {
                                clsXuLyDuLieuChung dc = new clsXuLyDuLieuChung();
                                string mavattu = tb.Rows[i]["ma_vat_tu"].ToString();
                                decimal soluong = decimal.Parse(tb.Rows[i]["so_luong_thuc_lanh"].ToString());
                                int id_chat_luong = int.Parse(tb.Rows[i]["Id_chat_luong"].ToString());
                                DateTime ngayNhap = DateTime.Now;
                                if (dc.InsertTonKho(help, mavattu, idKho, soluong, maphieu, ngayNhap, id_chat_luong, false) == 0)
                                {
                                    dbcxtransaction.Rollback();
                                }

                            }
                            MessageBox.Show("Bạn đã xác nhận thành công ");
                            dbcxtransaction.Commit();
                            LoadData();
                            return;
                        }
                    }
                    else
                        if (isNhapNgoai == true)
                        {
                            using (var dbcxtransaction = help.ent.Database.BeginTransaction())
                            {
                                for (int i = 0; i < tb.Rows.Count; i++)
                                {
                                    clsXuLyDuLieuChung dc = new clsXuLyDuLieuChung();
                                    string mavattu = tb.Rows[i]["ma_vat_tu"].ToString();
                                    decimal soluong = decimal.Parse(tb.Rows[i]["so_luong_thuc_lanh"].ToString());
                                    int id_chat_luong = int.Parse(tb.Rows[i]["Id_chat_luong"].ToString());
                                    DateTime ngayNhap = DateTime.Now;
                                    if (dc.InsertTonKho(help, mavattu, idKho, soluong, maphieu, ngayNhap, id_chat_luong, true) == 0)
                                    {
                                        dbcxtransaction.Rollback();
                                    }

                                }
                                MessageBox.Show("Bạn đã xác nhận thành công ");
                                dbcxtransaction.Commit();
                                LoadData();
                            }
                            return;
                        }
                }
                catch (Exception ex) { }

                int? ID_loai_phieu_nhap = int.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["ID_loai_phieu_nhap"].Value.ToString());
                clsLoaiPhieuNhap LPN = new clsLoaiPhieuNhap();
                LPN.ID_LPN = (int)ID_loai_phieu_nhap;
                string TenLPN = LPN.getTenLPN((int)ID_loai_phieu_nhap);
                using (var dbcxtransaction = help.ent.Database.BeginTransaction())
                {
                    for (int i = 0; i < tb.Rows.Count; i++)
                    {
                        //duyệt qua từng dòng insert chi tiết phiếu nhập vào
                        clsXuLyDuLieuChung dc = new clsXuLyDuLieuChung();
                        string mavattu = tb.Rows[i]["ma_vat_tu"].ToString();
                        // số lượng hoàn nhập hay số lượng lãnh vật tư tùy vào ID loai phieu
                        decimal soluong = decimal.Parse(tb.Rows[i]["so_luong_thuc_lanh"].ToString());
                        int id_chat_luong = int.Parse(tb.Rows[i]["Id_chat_luong"].ToString());
                        DateTime ngayNhap = DateTime.Now;
                        try
                        {
                            bool isGoiDau = bool.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isGoiDau"].Value.ToString());
                            if (isGoiDau == true)
                            {
                                clsVatTuGoiDauKy gdk = new clsVatTuGoiDauKy();
                                gdk.ID_chat_luong = id_chat_luong;
                                gdk.Ma_vat_tu = mavattu;
                                gdk.So_Luong = soluong;
                                gdk.ID_kho = idKho;
                                if (gdk.CheckTonTaiSoDK() == true)
                                {
                                    //nếu có cập nhật lại gối đầu
                                    DataTable temp = gdk.GetAll();
                                    decimal sl = decimal.Parse(temp.Rows[0]["So_luong"].ToString());
                                    gdk.ID_VT_Goi_Dau = int.Parse(temp.Rows[0]["ID_VT_Goi_Dau"].ToString());
                                    gdk.So_Luong = gdk.So_Luong + sl;
                                    gdk.Update();
                                }
                                //nếu chưa tồn tại tiến hành insert dòng mới
                                else

                                    if (gdk.Insert() == 0)
                                    {
                                        MessageBox.Show("Đã có lỗi xãy ra !");
                                        return;
                                    }

                            }
                            // nếu mã phiếu hoàn nhập thì trừ trong gói đầu nếu có phiếu hoàn nhập mà chưa có gói đầu thì vô lý
                            if (TenLPN.Contains("T"))
                            {
                                clsVatTuGoiDauKy gdk = new clsVatTuGoiDauKy();

                                gdk.ID_chat_luong = id_chat_luong;
                                gdk.Ma_vat_tu = mavattu;

                                gdk.ID_kho = idKho;
                                DataTable temp = gdk.GetAll();
                                //số lượng gối đầu
                                if (temp.Rows.Count == 0)//chưa có
                                {
                                    MessageBox.Show("Vật tư này chưa có trong danh sách vật tư gối đầu, không thể hoàn nhập được");
                                    return;
                                }
                                decimal soluonght = decimal.Parse(temp.Rows[0]["So_luong"].ToString());
                                soluonght = soluonght - soluong;
                                gdk.So_Luong = soluonght;
                                gdk.ID_VT_Goi_Dau = int.Parse(temp.Rows[0]["ID_VT_Goi_Dau"].ToString());
                                if (gdk.Update() == 0)
                                {
                                    MessageBox.Show("Đã có lỗi xãy ra trong quá trình cập nhật số lượng đầu kỳ!");
                                    return;
                                }
                                //sau đó trừ vào kho, thẻ kho

                                //    MessageBox.Show("Hoàn nhập thành công!");
                                //    return;

                            }
                        }
                        catch (Exception ex) { }

                        if (TenLPN.Contains("X") == true)
                        {

                            if (dc.InsertTonKho(help, mavattu, idKho, soluong, maphieu, ngayNhap, id_chat_luong, true) == 0)
                            {
                                dbcxtransaction.Rollback();
                            }

                        }
                        else
                        {
                            //CO MA PHIEU TD

                            //PHIEU TRU KHO
                            if (dc.InsertTonKho(help, mavattu, idKho, soluong, maphieu, ngayNhap, id_chat_luong, false) == 0)
                            {
                                dbcxtransaction.Rollback();
                            }

                        }
                    }
                    dbcxtransaction.Commit();
                    MessageBox.Show("Bạn đã thêm thành công !");
                }

                LoadData();

            }
            catch (Exception ex)
            {
                MessageBox.Show(Utilities.clsThamSoUtilities.COException(ex));
            }
        }
        private void BoDuyet_Xu_Ly()
        {
            try
            {
                Int32 selectedRowCount = gridDanhSachPhieuNhap.CurrentCell.RowIndex;
                string maphieu = gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["Ma_phieu"].Value.ToString();
                int idKho = int.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["ID_kho"].Value.ToString());

                bool Da_phan_kho = bool.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["Da_phan_kho"].Value.ToString());

                if (Da_phan_kho == false)
                {
                    MessageBox.Show("Phiếu này chưa duyệt ");
                    return;
                }

                int idphieu = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["ID_phieu_nhap"].Value.ToString()) ? -1 : int.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["ID_phieu_nhap"].Value.ToString());
                int idloaiphieu = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["id_loai_phieu_nhap"].Value.ToString()) ? -1 : int.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["id_loai_phieu_nhap"].Value.ToString());
                bool isgoidau = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isgoidau"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isgoidau"].Value.ToString());
                bool isKNMN = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKNMN"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKNMN"].Value.ToString());
                bool isToTrinh = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isToTrinh"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isToTrinh"].Value.ToString());
                bool isKNTN = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKNTN"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKNTN"].Value.ToString());
                bool isKCMN = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKCMN"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKCMN"].Value.ToString());
                bool isKCTN = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKCTN"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isKCTN"].Value.ToString());
                bool isNVMN = string.IsNullOrEmpty(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isNVMN"].Value.ToString()) ? false : Boolean.Parse(gridDanhSachPhieuNhap.Rows[selectedRowCount].Cells["isNVMN"].Value.ToString());
                if (isNVMN == true)
                {
                    KhoNgoai kn = new KhoNgoai();
                   if( kn.BoDuyet(idphieu)==1)
                       MessageBox.Show("Bỏ duyệt thành công!");
                    return;
                }
                if (CheckTruNo(maphieu) != -1)
                {
                    MessageBox.Show("Phiếu này đã thực hiện trừ nợ không thể bỏ duyệt được!");
                    return;
                }
                if (isToTrinh == true)
                {
                    BienBanToTrinh BBTT = new BienBanToTrinh();
                    if (BBTT.BoDuyet(idphieu) == 1)
                    {
                        MessageBox.Show("Bỏ duyệt thành công!");
                        return;
                    }
                }
                if (isgoidau == true)
                {
                    GoiDau gd = new GoiDau();
                    if (gd.BoDuyet(idphieu) == 1)
                    {
                        MessageBox.Show("Bỏ duyệt thành công!");
                        return;
                    }
                }

                if (isKCMN == true)
                {
                    DiMuonNo KCMN = new DiMuonNo();
                    if (KCMN.BoDuyet(idphieu) == 1)
                    {
                        MessageBox.Show("Bỏ duyệt thành công!");
                        return;
                    }

                }
                if (isKCTN == true)
                {
                    DiTraNo KCTN = new DiTraNo();
                    if (KCTN.BoDuyet(idphieu) == 1)
                    {
                        MessageBox.Show("Bỏ duyệt thành công!");
                        return;
                    }

                }
                if (isKNTN == true)
                {
                    KhoKhacTraNo gd = new KhoKhacTraNo();
                    if (gd.BoDuyet(idphieu) == 1)
                    {
                        MessageBox.Show("Bỏ duyệt thành công!");
                        return;
                    }
                }
                if (isKNMN == true)
                {
                    PhieuKhoKhacMuon gd = new PhieuKhoKhacMuon();
                    if (gd.BoDuyet(idphieu) == 1)
                    {
                        MessageBox.Show("Bỏ duyệt thành công!");
                        return;
                    }
                }
                if (isgoidau == true)
                {
                    GoiDau gd = new GoiDau();
                    if (gd.BoDuyet(idphieu) == 1)
                    {
                        MessageBox.Show("Bỏ duyệt thành công!");
                        return;
                    }

                }

                if (idloaiphieu != -1)
                {
                    clsLoaiPhieuNhap lpn = new clsLoaiPhieuNhap();
                    if (lpn.getTenLPN(idloaiphieu).Equals("XD"))
                    {
                        PhieuNhap pn = new PhieuNhap();
                        if (pn.BoDuyet(idphieu) == 1)
                        {
                            MessageBox.Show("Bỏ duyệt thành công!");
                            return;
                        }
                    }
                    if (lpn.getTenLPN(idloaiphieu).Equals("TD"))
                    {
                        PhieuHoanNhap phn = new PhieuHoanNhap();
                        if (phn.BoDuyet(idphieu) == 1)
                        {
                            MessageBox.Show("Bỏ duyệt thành công!");
                            return;
                        }
                    }
                }

            }
            catch (Exception ex) { MessageBox.Show(Utilities.clsThamSoUtilities.COException(ex)); }
        }
        /// <summary>
        /// hàm này tiến hành cập nhật lại CSDL rất lớn liên quang 5000 dòng
        /// 
        /// </summary>
        public void ChuyenDoi()
        {
            DatabaseHelper help = new DatabaseHelper();
            help.ConnectDatabase();
            // insert
            using (var dbcxtransaction = help.ent.Database.BeginTransaction())
            {
                try
                {
                    for (int i = 0; i < tb.Rows.Count - 1; i++)
                    {
                        string Ma_phieu_nhap = tb.Rows[i]["column1"].ToString();
                        DateTime Ngay_lap = DateTime.Parse(tb.Rows[i]["column2"].ToString());
                        string Kho_nhan = tb.Rows[i]["column3"].ToString();
                        string Ly_do = tb.Rows[i]["column4"].ToString();
                        string Ma_vat_tu = tb.Rows[i]["column5"].ToString();
                        string Ten_vat_tu = tb.Rows[i]["column6"].ToString();
                        string Chat_luong = tb.Rows[i]["column7"].ToString();
                        string DVT = tb.Rows[i]["column8"].ToString();
                        string So_luong_thuc_lanh = tb.Rows[i]["column9"].ToString();
                        string Don_gia = tb.Rows[i]["column10"].ToString();
                        string Thanh_tien = tb.Rows[i]["column11"].ToString();
                        clsPhieuNhapKho pnk = new clsPhieuNhapKho();
                        if (pnk.CheckTonTaiSoDK(Ma_phieu_nhap, help) == false)
                        {
                            pnk.Ma_phieu_nhap = Ma_phieu_nhap;
                            pnk.isGoiDau = rdoPhieuGoiDau.Checked;
                            pnk.isCanTru = false;
                            pnk.Ngay_lap = Ngay_lap;
                            pnk.Kho_nhan = Kho_nhan;
                            pnk.Ly_do = Ly_do;
                            clsLoaiPhieuNhap LPN = new clsLoaiPhieuNhap();
                            LPN.Ma_LPN = Loai_PN;
                            pnk.ID_Loai_Phieu_Nhap = LPN.GetFirst(help);
                            pnk.ID_khoNhan = idkho;
                            if ( pnk.Insert(help) == 0)
                            {
                                dbcxtransaction.Rollback();
                                MessageBox.Show("insert thất bại tại dòng !" + i);
                                return;
                            }

                        }

                        clsChi_Tiet_Phieu_Nhap_Vat_Tu ctpn = new clsChi_Tiet_Phieu_Nhap_Vat_Tu();
                        ctpn.Ma_vat_tu = Ma_vat_tu;
                        ctpn.Ma_phieu_nhap = Ma_phieu_nhap;
                        ctpn.ID_Chat_luong = Chat_luong.Contains("mới") ? 1 : 2;
                        //kiểm tra xem vật tư đã có trong csdl chưa nếu chưa thêm vào
                        clsDM_DonViTinh DMDVT = new clsDM_DonViTinh();
                        if (ctpn.CheckTonTaiSoDK(help) == false)
                        {

                            DMDVT.Ten_don_vi_tinh = DVT;
                            if (DMDVT.hasDuplicateRow(help) == false)
                            {
                                //nếu chưa có thì insert dòng mới
                                DMDVT.Insert(help);
                            }
                            //tiến hành insert 5000 dòng dữ liệu từ phiếu nhập
                        }
                        ctpn.ID_Don_vi_tinh = DMDVT.getMATuTen(DVT, help);
                        //kiểm tra mã vật tư đã tồn tại chưa trong CSDL
                        clsDMVatTu vt = new clsDMVatTu();
                        vt.Ma_vat_tu = Ma_vat_tu;
                        vt.Ten_vat_tu = Ten_vat_tu;
                        vt.ID_Don_vi_tinh = ctpn.ID_Don_vi_tinh;
                        if (vt.KiemTraTrungMa(help) == false)
                        {
                            vt.Insert(help);
                        }
                        ctpn.So_luong_thuc_lanh = decimal.Parse(So_luong_thuc_lanh);
                        ctpn.Insert(help);
                        backgroundWorker1.ReportProgress(i);
                    }
                    dbcxtransaction.Commit();
                    backgroundWorker1.ReportProgress(0);
                    MessageBox.Show("Thêm thành công!");
                }
                catch (Exception ex)
                {
                    dbcxtransaction.Rollback();  // Get stack trace for the exception with source file information
                    MessageBox.Show(Utilities.clsThamSoUtilities.COException(ex));
                    return;

                }

            }
        }