public bool Compare(DOBangGiaBudget OrtherMuonTra)
        {
            try
            {
                FieldInfo[] infos = typeof(DOBangGiaBudget).GetFields();
                foreach (FieldInfo info in infos)
                {
                    if (info.Name == "NGUOI_CAP_NHAT" || info.Name == "NGAY_CAP_NHAT") continue;

                    object a = info.GetValue(this);
                    object b = info.GetValue(OrtherMuonTra);
                    if ((a == null && b != null) || a != null && b == null)
                        return false;
                    else if (a == null && b == null) continue;
                    if (info.FieldType == typeof(DataSet))
                    {
                        DataSet dsA = a as DataSet;
                        DataSet dsB = b as DataSet;

                        if (dsA.Tables.Count != dsB.Tables.Count)
                            return false;
                        foreach (DataTable dtA in dsA.Tables)
                        {
                            if (dsB.Tables.Contains(dtA.TableName) == false)
                                return false;
                            DataTable dtB = dsB.Tables[dtA.TableName];

                            if (dtA.Columns.Count == 0 && dtB.Columns.Count == 0) continue;
                            if (dtA.Columns.Count != dtB.Columns.Count)
                                return false;

                            if (dtA.Rows.Count == 0 && dtB.Rows.Count == 0) continue;
                            if (dtA.Rows.Count != dtB.Rows.Count)
                                return false;

                            foreach (DataColumn colA in dtA.Columns)
                            {
                                if (dtB.Columns.Contains(colA.ColumnName) == false)
                                    return false;
                                DataView viewA = dtA.DefaultView;
                                DataView viewB = dtB.DefaultView;
                                viewA.Sort = colA.ColumnName;
                                viewB.Sort = colA.ColumnName;
                                for (int i = 0; i < viewA.Count; i++)
                                {
                                    if (viewA[i][colA.ColumnName].Equals(viewB[i][colA.ColumnName]) == false)
                                        return false;
                                }
                            }

                        }
                    }
                    else
                    {
                        if (a.Equals(b) == false)
                            return false;
                    }

                }
                return true;
            }
            catch (Exception ex)
            {
                PLException.AddException(ex);
            }
            return false;
        }
        public DOBangGiaBudget Copy()
        {
            DOBangGiaBudget pm = new DOBangGiaBudget();

            try
            {
                FieldInfo[] infos = typeof(DOBangGiaBudget).GetFields();
                foreach (FieldInfo info in infos)
                {
                    if (info.FieldType == typeof(DataSet))
                    {
                        object ds = info.GetValue(this);
                        if (ds == null) continue;
                        info.SetValue(pm, ((DataSet)ds).Copy());
                    }
                    else
                    {
                        info.SetValue(pm, info.GetValue(this));
                    }
                }
            }
            catch (Exception ex)
            {
                PLException.AddException(ex);
            }
            return pm;
        }
        private bool? Save(bool isCopy)
        {
            if (GetValidData())
            {
                if (DABangGiaBudget.I.Update(doBangGiaBudget))
                {
                    doBangGiaBudget.DSDetail.AcceptChanges();
                    this.dsDetail = doBangGiaBudget.DSDetail.Copy();
                    dtSource = dsDetail.Tables[0];
                    this.gridControlDetail.DataSource = dtSource;
                    doRootBangGiaBudget = doBangGiaBudget.Copy();
                   // rpTietMuc.DataSource = HelpDB.getDBService().LoadDataSet("select * from " + DMTietMuc.TABLE_MAP).Tables[0];
                    InitCotTietMuc();
                    if (isCopy == false)
                    {
                        UpdateIsAdd(false);
                        this.MaBangGia.Text = doBangGiaBudget.MA_BGBG;
                        // this.Text = Text = "KHPS: " + (doBangGiaBudget.TEN_KE_HOACH.Trim() == "" ? doBangGiaBudget.MA_KHLPS : doBangGiaBudget.TEN_KE_HOACH.Trim());

                    }
                    if (IsAdd == false)
                    {
                        try
                        {
                            foreach (Form f in System.Windows.Forms.Application.OpenForms)
                            {
                                if (!(f is FrmKeHoachBudget)) continue;
                                FrmKeHoachBudget fkh = (FrmKeHoachBudget)f;
                                if (fkh.BangGia._getSelectedID() == doBangGiaBudget.BGBG_ID)
                                {
                                    fkh.UpdateBangGia(dtSource.Copy());
                                }

                            }
                        }
                        catch { }
                    }
                    HelpMsgBox.ShowNotificationMessage("Lưu dữ liệu thành công!");
                    return true;
                }
                else
                {
                    HelpMsgBox.ShowErrorMessage("Lưu dữ liệu thất bại!");
                    return false;
                }
            }
            return false;
        }
 private bool InitDOData(object id)
 {
     if (id is DOBangGiaBudget)
     {
         this.doBangGiaBudget = id as DOBangGiaBudget;
         return true;
     }
     if (!((id is Int64) || (id is string))) return false;
     this.doBangGiaBudget = DABangGiaBudget.I.LoadAll(HelpNumber.ParseInt64(id));
     if (id.ToString() == "-2")
     {
     }
     return true;
 }
        public void UpdateControls()
        {
            if (IsAdd == false)
                doRootBangGiaBudget = doBangGiaBudget.Copy();
            HelpPhieu.SetSoPhieu(MaBangGia, doBangGiaBudget.MA_BGBG);
            GhiChu.Text = doBangGiaBudget.GHI_CHU;
            if (doBangGiaBudget.TIME_TYPE > 0)
            {
                ThoiGianApDung.SelectedType = (SelectionTypes)doBangGiaBudget.TIME_TYPE;
                ThoiGianApDung.FromDate = doBangGiaBudget.TU_NGAY.Value;
                ThoiGianApDung.ToDate = doBangGiaBudget.DEN_NGAY.Value;

            }
            UpdateIsAdd(IsAdd);
        }
        public void SetCopy()
        {
            this.doBangGiaBudget.BGBG_ID = -1;
            this.IsAdd = true;
            this.doRootBangGiaBudget = null;

            this.Title.Text = "TẠO BẢNG GIÁ BUDGET (COPY)";

            btnCopy.Enabled = false;
            btnDelete.Enabled = false;
            Info.Enabled = false;
            btnSave.Visible = true;
            btnExcel.Visible = true;
            btnImportBG.Visible = true;
            MaBangGia.Text = "";
            GhiChu.Text = "";
            ThoiGianApDung.SelectedType = SelectionTypes.None;
            foreach (DataRow r in dsDetail.Tables[0].Rows)
            {
                r[BANG_GIA_BUDGET_CT.BGBG_CT_ID] = DBNull.Value;
                r[BANG_GIA_BUDGET_CT.BGBG_ID] = DBNull.Value;
            }
        }