bazar.Accrual.OnComboContractChanged C# (CSharp) Method

OnComboContractChanged() protected method

protected OnComboContractChanged ( object sender, EventArgs e ) : void
sender object
e System.EventArgs
return void
        protected void OnComboContractChanged(object sender, EventArgs e)
        {
            TestCanSave();
            if(comboContract.Active < 0)
            {
                labelLessee.LabelProp = "--";
                labelOrg.LabelProp = "--";
                labelPlace.LabelProp = "--";
                buttonOpenContract.Sensitive = false;
                return;
            }
            try
            {
                TreeIter iter;
                string sql = "SELECT lessees.name as lessee, organizations.name as organization, contracts.place_no, contracts.place_type_id, place_types.name as place_type, places.area as area FROM contracts " +
                    "LEFT JOIN lessees ON contracts.lessee_id = lessees.id " +
                    "LEFT JOIN organizations ON contracts.org_id = organizations.id " +
                    "LEFT JOIN place_types ON contracts.place_type_id = place_types.id " +
                    "LEFT JOIN places ON places.type_id = contracts.place_type_id AND places.place_no=contracts.place_no " +
                    "WHERE contracts.id = @contract_id";
                MySqlCommand cmd = new MySqlCommand(sql, QSMain.connectionDB);
                comboContract.GetActiveIter ( out iter);
                cmd.Parameters.AddWithValue("@contract_id", comboContract.Model.GetValue (iter, 1));
                using(MySqlDataReader rdr = cmd.ExecuteReader())
                {
                    rdr.Read();

                    labelLessee.LabelProp = rdr["lessee"].ToString();
                    labelOrg.LabelProp = rdr["organization"].ToString();
                    labelPlace.LabelProp = rdr["place_type"].ToString () + " - " + rdr["place_no"].ToString ();
                    Place_type_id = rdr.GetInt32 ("place_type_id");
                    Place_no = rdr["place_no"].ToString ();

                    decimal old_area = PlaceArea;
                    PlaceArea = DBWorks.GetDecimal (rdr, "area", 0);

                    TreeIter ServiceIter;
                    if (ServiceListStore.GetIterFirst (out ServiceIter))
                    {
                        do
                        {
                            bool b = (bool) ServiceListStore.GetValue(ServiceIter, (int)ServiceCol.by_aria);
                            decimal i = (decimal) ServiceListStore.GetValue(ServiceIter, (int)ServiceCol.count);
                            if( b && i == old_area)
                            {
                                ServiceListStore.SetValue(ServiceIter, (int)ServiceCol.count, PlaceArea);
                                decimal Price = (decimal)ServiceListStore.GetValue (ServiceIter, (int)ServiceCol.price);
                                ServiceListStore.SetValue(ServiceIter, (int)ServiceCol.sum, Price * PlaceArea);
                            }
                        }
                        while(ServiceListStore.IterNext (ref ServiceIter));
                        CalculateServiceSum ();
                    }
                }
                buttonOpenContract.Sensitive = true;
            }
            catch (Exception ex)
            {
                QSMain.ErrorMessageWithLog(this, "Ошибка получения информации о договоре!", logger, ex);
            }
        }