/// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnAdd_Click(object sender, EventArgs e)
        {
            mvMessage.CheckRequired(txtBudget, "Ngân sách kỳ: là Danh mục bắt bắt buộc nhập");
            if (!mvMessage.IsValid) return;

            //Get and Insert Data
            BD_BudgetScheduleData data = new BD_BudgetScheduleData();
            ITransaction tran = factory.GetInsertObject(data);
            data.Budget = txtBudget.Text.Trim();
            data.BuildingId = Func.ParseString(Session["__BUILDINGID__"]);
            data.YearMonth = drpYear.SelectedValue;
            data.ModifiedBy = Page.User.Identity.Name;
            data.CreatedBy = Page.User.Identity.Name;
            data.Created = DateTime.Now.ToString("yyyyMMddHHmmss");
            data.Modified = DateTime.Now.ToString("yyyyMMddHHmmss");
            data.DelFlag = "0";
            Execute(tran);

            if (!HasError)
            {
                OperationLogger.WriteInfo(Constants.LogOperationAlbumId, Constants.LogActionInsertId, addSuccess, Page.User.Identity.Name);
                mvMessage.SetCompleteMessage(addSuccess);
                DbHelper.FillList(drpBudget, "Select * from BD_BudgetSchedule Where DelFlag = 0 and YearMonth = '" + drpYear.SelectedValue + "' and BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "'", "Budget", "id");
                DbHelper.FillListSearch(drpBudgetExport, "Select * from BD_BudgetSchedule Where DelFlag = 0 and YearMonth = '" + drpYear.SelectedValue + "' and BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "'", "Budget", "id");

                //// Them vao de xuat ngan sach
                string yearmonth = drpYear.SelectedValue;
                string building = Func.ParseString(Session["__BUILDINGID__"]);

                DataTable dtTable = new DataTable();
                dtTable.Columns.Add("BuggetScheduleId", Type.GetType("System.String"));
                dtTable.Columns.Add("PaymentType", Type.GetType("System.String"));
                dtTable.Columns.Add("PaymentId", Type.GetType("System.String"));
                dtTable.Columns.Add("colNo", Type.GetType("System.String"));
                dtTable.Columns.Add("delFlag", Type.GetType("System.String"));
                dtTable.Columns.Add("ParentId", Type.GetType("System.Int32"));
                dtTable.Columns.Add("ItemLevel", Type.GetType("System.String"));

                string buildingId = Func.ParseString(Session["__BUILDINGID__"]);
                string sqlTmp = "Select Name,id,ParentId,ItemLevel from BD_PaymentType Where delflag = '0' and BuildingId = '" + buildingId + "' ";
                sqlTmp += "Union ";
                sqlTmp += "Select Name,id,ParentId,ItemLevel from Mst_PaymentType";

                DataTable dt = DbHelper.GetDataTable("Select * from (" + sqlTmp + ") A order by id");
                foreach (DataRow dr in dt.Rows)
                {
                    if (dr["ParentId"].ToString() == "")
                    {
                        int j = 1;
                        string Name = dr["Name"].ToString();
                        string id = dr["Id"].ToString();
                        string itemLevel = dr["ItemLevel"].ToString();
                        dtTable.Rows.Add(data.id, Name, id, j, "0", Func.ParseInt(dr["ParentId"]), itemLevel);
                        GetChildItems(data.id, id, dt, dtTable, j);
                    }
                }
                using (SqlBulkCopy copy = new SqlBulkCopy(Gnt.Configuration.ApplicationConfiguration.ConnectionString))
                {
                    copy.DestinationTableName = "BD_BudgetScheduleDetail";
                    copy.BatchSize = 3000;
                    copy.BulkCopyTimeout = 99999;
                    copy.ColumnMappings.Add(0, "BuggetScheduleId");
                    copy.ColumnMappings.Add(1, "PaymentType");
                    copy.ColumnMappings.Add(2, "PaymentId");
                    copy.ColumnMappings.Add(3, "colNo");
                    copy.ColumnMappings.Add(4, "DelFlag");
                    copy.ColumnMappings.Add(5, "ParentId");
                    copy.ColumnMappings.Add(6, "ItemLevel");

                    copy.WriteToServer(dtTable);
                }
            }
            else
            {
                OperationLogger.WriteError(Constants.LogOperationAlbumId, Constants.LogActionInsertId, addUnSuccess, Page.User.Identity.Name);
                mvMessage.AddError(addUnSuccess);
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnUpdate_Click(object sender, EventArgs e)
        {
            mvMessage.CheckRequired(txtBudget, "Ngân sách kỳ: là Danh mục bắt bắt buộc nhập");
            if (!mvMessage.IsValid) return;

            //Get and Insert Data
            BD_BudgetScheduleData data = new BD_BudgetScheduleData();
            ITransaction tran = factory.GetLoadObject(data, drpBudget.SelectedValue);
            Execute(tran);
            if (!HasError)
            {
                //Get Data
                data = (BD_BudgetScheduleData)tran.Result;
                data.Budget = txtBudget.Text.Trim();

                data.ModifiedBy = Page.User.Identity.Name;
                data.Modified = DateTime.Now.ToString("yyyyMMddHHmmss");

                tran = factory.GetUpdateObject(data);

                Execute(tran);

                if (!HasError)
                {
                    OperationLogger.WriteInfo(Constants.LogOperationAlbumId, Constants.LogActionUpdateId, updateSuccess, Page.User.Identity.Name);
                    mvMessage.SetCompleteMessage(updateSuccess);
                    DbHelper.FillList(drpBudget, "Select * from BD_BudgetSchedule Where YearMonth = '" + drpYear.SelectedValue + "' and BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "'", "Budget", "id");
                }
                else
                {
                    OperationLogger.WriteError(Constants.LogOperationAlbumId, Constants.LogActionUpdateId, updateUnSuccess, Page.User.Identity.Name);
                    mvMessage.AddError(updateUnSuccess);
                }
            }
        }