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);
}
}