public void SlipFill(int SlipId, bool Copy)
{
NewSlip = Copy;
TreeIter iter;
logger.Info("Запрос расходного ордера №{0}...", SlipId);
string sql = "SELECT debit_slips.*, contractors.name as contractor, users.name as user, " +
"employees.name as employee, expense_items.name as expense FROM debit_slips " +
"LEFT JOIN contractors ON debit_slips.contractor_id = contractors.id " +
"LEFT JOIN users ON debit_slips.user_id = users.id " +
"LEFT JOIN employees ON debit_slips.employee_id = employees.id " +
"LEFT JOIN expense_items ON debit_slips.expense_id = expense_items.id " +
"WHERE debit_slips.id = @id";
try
{
MySqlCommand cmd = new MySqlCommand(sql, QSMain.connectionDB);
cmd.Parameters.AddWithValue("@id", SlipId);
MySqlDataReader rdr = cmd.ExecuteReader();
rdr.Read();
switch (rdr["operation"].ToString())
{
case "advance":
comboOperation.Active = 1;
break;
default:
comboOperation.Active = 0;
break;
}
if(!Copy)
entryNumber.Text = rdr["id"].ToString();
if(rdr["contractor_id"] != DBNull.Value)
{
Contractor_id = Convert.ToInt32(rdr["contractor_id"].ToString());
entryContractor.Text = rdr["contractor"].ToString();
entryContractor.TooltipText = rdr["contractor"].ToString();
ContractorNull = false;
}
if(rdr["employee_id"] != DBNull.Value)
{
Accountable_id = Convert.ToInt32(rdr["employee_id"].ToString());
entryAccountable.Text = rdr["employee"].ToString();
entryAccountable.TooltipText = rdr["employee"].ToString();
AccountableNull = false;
}
if(rdr["date"] != DBNull.Value && !Copy)
dateSlip.Date = DateTime.Parse( rdr["date"].ToString());
if(rdr["org_id"] != DBNull.Value)
ListStoreWorks.SearchListStore((ListStore)comboOrg.Model, int.Parse(rdr["org_id"].ToString()), out iter);
else
ListStoreWorks.SearchListStore((ListStore)comboOrg.Model, -1, out iter);
comboOrg.SetActiveIter (iter);
if(rdr["cash_id"] != DBNull.Value)
ListStoreWorks.SearchListStore((ListStore)comboCash.Model, int.Parse(rdr["cash_id"].ToString()), out iter);
else
ListStoreWorks.SearchListStore((ListStore)comboCash.Model, -1, out iter);
comboCash.SetActiveIter (iter);
if(rdr["expense_id"] != DBNull.Value)
{
Expense_id = Convert.ToInt32(rdr["expense_id"].ToString());
entryExpense.Text = rdr["expense"].ToString();
entryExpense.TooltipText = rdr["expense"].ToString();
ExpenseNull = false;
}
spinSum.Value = double.Parse (rdr["sum"].ToString());
if(rdr["user"] != DBNull.Value && !Copy)
entryUser.Text = rdr["user"].ToString ();
textviewDetails.Buffer.Text = rdr["details"].ToString();
rdr.Close();
if(!NewSlip)
{
this.Title = "Расходный ордер №" + entryNumber.Text;
buttonPrint.Sensitive = true;
}
// Проверяем права на редактирование
if(!QSMain.User.Permissions["edit_slips"] && dateSlip.Date != DateTime.Now.Date && !Copy)
{
comboOperation.Sensitive = false;
comboOrg.Sensitive = false;
comboCash.Sensitive = false;
buttonContractorEdit.Sensitive = false;
buttonAccountableEdit.Sensitive = false;
spinSum.Sensitive = false;
textviewDetails.Sensitive = false;
}
logger.Info("Ok");
}
catch (Exception ex)
{
QSMain.ErrorMessageWithLog(this, "Ошибка получения информации о расходном ордере!", logger, ex);
}
TestCanSave();
}