private void Load_DTCT_GridView()
        {
            DUTOANCONGTRINHController dtctcontroller = new DUTOANCONGTRINHController();
            var dUTOANCONGTRINHmodels = dtctcontroller.GetDUTOANCONGTRINH(DTCT_bsFromToDateEdit.FromDate.Date, DTCT_bsFromToDateEdit.ToDate.Date);

            dtctData = new BindingList <DUTOANCONGTRINHmodel>(dUTOANCONGTRINHmodels);
            DTCT_gridControl.DataSource = dtctData;
            //reset list chứa dữ liệu delete
            dtctDataDelete = new List <DUTOANCONGTRINHmodel>();
            DTCT_gridView.RefreshData();
        }
        private void SaveDuToanCongTrinh()
        {
            bool savedataDeleteflag = true;
            bool savedataflag       = true;
            DUTOANCONGTRINHController controllerDTCT = new DUTOANCONGTRINHController();
            //Thêm và sửa dữ liệu; Dựa vào ngày hợp đồng
            List <DUTOANCONGTRINHmodel> savedata = dtctData.Where(o => o.Status == ModifyMode.Insert || o.Status == ModifyMode.Update).ToList();

            if (savedata.Count > 0)
            {
                //Kiểm tra ngày khóa sổ
                DateTime dateTimeCheckLock  = new DateTime();
                bool     checkLockFirstTime = false;
                foreach (DUTOANCONGTRINHmodel dtctItem in savedata)
                {
                    QuanLy quanLy = VoucherControl._quanLies.Where(o => o.QLID == dtctItem.QLID).FirstOrDefault();
                    if (quanLy != null)
                    {
                        dtctItem.QLNgayHopDong = quanLy.QLNgayHopDong;
                        if (!checkLockFirstTime)
                        {
                            //check khóa sổ cho DTCT đầu list
                            if (VoucherControl.CheckLockDBCompany(quanLy.QLNgayHopDong, CommonInfo.CompanyInfo.CompanyID))
                            {
                                //Dữ liệu đang nằm trong vùng khóa sổ
                                MessageBoxHelper.ShowErrorMessage("Dữ liệu đang bị khóa sổ!");
                                return;
                            }
                            dateTimeCheckLock  = quanLy.QLNgayHopDong;
                            checkLockFirstTime = true;
                        }
                        else
                        {
                            if (quanLy.QLNgayHopDong != dateTimeCheckLock)
                            {
                                //check khóa sổ
                                if (VoucherControl.CheckLockDBCompany(quanLy.QLNgayHopDong, CommonInfo.CompanyInfo.CompanyID))
                                {
                                    //Dữ liệu đang nằm trong vùng khóa sổ
                                    MessageBoxHelper.ShowErrorMessage("Dữ liệu đang bị khóa sổ!");
                                    return;
                                }
                                dateTimeCheckLock = quanLy.QLNgayHopDong;
                            }
                        }
                    }
                    else
                    {
                        MessageBoxHelper.ShowErrorMessage("Mã quản lý không tồn tại!");
                        dtctItem.QLNgayHopDong = DateTime.Now.Date;
                        return;
                    }
                }

                if (controllerDTCT.SaveDUTOANCONGTRINH(savedata))
                {
                    //Thêm dữ liệu thành công
                    savedataflag = true;
                }
                else
                {
                    savedataflag = false;
                }
            }

            //Delete dữ liệu; Dữ liệu đã được check khóa sổ
            if (controllerDTCT.SaveDUTOANCONGTRINH(dtctDataDelete))
            {
                //Xóa dữ liệu thành công
                savedataDeleteflag = true;
            }
            else
            {
                savedataDeleteflag = false;
            }

            //Sau khi lưu xong thì thực hiện load lại toàn bộ dữ liệu dự toán công trình
            if (!savedataflag && !savedataDeleteflag)
            {
                //Thêm xóa sửa dữ liệu thất bại
                MessageBoxHelper.ShowWarningMessage(BSMessage.BSM000002);
            }
            else if (savedataflag && !savedataDeleteflag)
            {
                //Xóa dữ liệu thất bại
                MessageBoxHelper.ShowWarningMessage(BSMessage.BSM000031);
            }
            else if (!savedataflag && savedataDeleteflag)
            {
                //Thêm và sửa dữ liệu thất bại
                MessageBoxHelper.ShowWarningMessage("Thêm, sửa dữ liệu thất bại!");
            }
            else if (savedataflag && savedataDeleteflag)
            {
                //Thêm, xóa, sửa dữu liệu thành công
                MessageBoxHelper.ShowInfoMessage(BSMessage.BSM000001);
            }
            //tải lại dữ liệu
            Load_DTCT_GridView();
        }