/// <summary>Загружает лимиты договора</summary> public bool Load() { try { using (var PFL = new PerfomanceLogger(Contract.SessionLog, "ContractLimits.Load")) { if (Contract.LimitsCursor != null) { var Data = new QueryResult(Contract.LimitsCursor.GetDataReader()); this.Clear(); // загружаем все лимиты (online, offline и комбинированные) /*QueryResult Data = OraQuery.Execute(Connection, "select cl.ID, cl.Limit, cl.Duration, cl.PurseID, p.Name as PurseName, p.Type as PurseType from ContractLimits cl, Purses p where cl.PurseID = p.ID and cl.ContractID = :ContractID order by PurseType, PurseID, Duration", new string[] { "ContractID" }, new object[] { Contract.ID });*/ foreach (DataRow row in Data.Rows) Add(new LimitInfo(this, row)); } } } catch (Exception e) { ErrorMessage.Add("Ошибка при получении лимитов карты\n{0}", e.Message); } return ErrorMessage.IsEmpty; }
public bool Load() { PerfomanceLogger PFL = new PerfomanceLogger(SessionLog, "Contract.Load"); if (IsValid) { /*QueryResult Data = OraQuery.Execute(Connection, @"select ClientID, ContractNumber, Name, ContractComment, DateStart, DateFinish, Type, State, CurrencyID, OwnerID, opsOnlineRestrictions.CheckContract(:ContractID, :TerminalID, :ServicePointID, :RegionID, :NetworkID, :NetworkOwnerID, Type, ClientID, OwnerID) ContractRestriction, opsOnlineRestrictions.CheckContractOwner(OwnerID, :TerminalID, :ServicePointID, :RegionID, :NetworkID, :NetworkOwnerID, :ContractID, Type, ClientID) ContractOwnerRestriction, opsOnlineRestrictions.CheckNetworkOwner(:NetworkOwnerID, :TerminalID, :ServicePointID, :RegionID, :NetworkID, :ContractID, Type, ClientID, OwnerID) NetworkOwnerRestriction, (select count(1) from ContractLimits z where z.ContractID = c.id) LimitsCount * --, -- (select count(1) from ContractAccounts z where z.ContractID = c.id) AccountsCount, -- (select count(1) from OwnerAccounts z where z.OwnerID = c.OwnerID) OwnerAccountsCount from Contracts c where c.id = :ContractID", new string[] { "ContractID", "TerminalID", "ServicePointID", "RegionID", "NetworkID", "NetworkOwnerID" }, new object[] { ID, Terminal.ID, Terminal.ServicePoint.ID, Terminal.ServicePoint.Region.ID, Terminal.ServicePoint.Network.ID, Terminal.ServicePoint.Network.GlobalOwner.ID }, 1);*/ if (DataObject != null) { Number = Cvt.ToString(DataObject["ContractNumber"]); /*Name = Cvt.ToString(Data[0, "Name"]); Comment = Cvt.ToString(Data[0, "ContractComment"]);*/ DateStart = Cvt.ToDateTime(DataObject["DateStart"], DateTime.MinValue); DateFinish = Cvt.ToDateTime(DataObject["DateFinish"], DateTime.MinValue); Type = (ContractTypes)Cvt.ToByte(DataObject["Type"]); State = (ContractStates)Cvt.ToByte(DataObject["State"]); Restriction = (Restrictions)Cvt.ToByte(DataObject["ContractRestriction"]); ContractOwnerRestriction = (Restrictions)Cvt.ToByte(DataObject["ContractOwnerRestriction"]); NetworkOwnerRestriction = (Restrictions)Cvt.ToByte(DataObject["NetworkOwnerRestriction"]); CurrencyID = Cvt.ToUInt32(DataObject["CurrencyID"]); OwnerID = Cvt.ToUInt32(DataObject["OwnerID"]); HasTariffs = Cvt.ToInt32(DataObject["TariffsCount"]) > 0; HasLimits = Cvt.ToInt32(DataObject["LimitsCount"]) > 0; HasAccounts = Cvt.ToInt32(DataObject["AccountsCount"]) > 0; HasOwnerAccounts = Cvt.ToInt32(DataObject["OwnerAccountsCount"]) > 0; // получаем данные по клиенту, привязанному к договору ClientID = Cvt.ToUInt64(DataObject["ClientID"]); // контракт ВСЕГДА привязан к клиенту. Если это не так - генерируем ошибку /*switch (Type) { case ContractTypes.Loyalty: LoyaltyClient = new LoyaltyClientInfo(this); LoyaltyClient.ID = ClientID; LoyaltyClient.Load(); // получаем из БД информацию по клиенту лояльности break; case ContractTypes.Corporate: CorporateClient = new CorporateClientInfo(this); CorporateClient.ID = ClientID; CorporateClient.Load(); // получаем из БД информацию по корпоративному клиенту break; default: ErrorMessage.Add("Неизвестный тип '{0}' клиентского договора ID='{1}'", Type, ID); break; }*/ if (ErrorMessage.IsEmpty) { /*Accounts = new ContractAccountsInfo(this); счета загружаются по требованию Accounts.Load(); // загружаем счета договора*/ /*TariffPeriods = new ContractTariffPeriodsInfo(this); активные периоды тарифов загружаются по требованию TariffPeriods.Load(); // загружаем действующие периоды тарифов */ //OwnerAccounts.Load(); // загружаем счета владельца договора } /*if (ErrorMessage.IsEmpty && Accounts.Count == 0) /*наличие счетов не проверяем... ErrorMessage.Add("Отсутствуют активные счета у договора {0}-{1}", Number, Name);*/ // PA:07.08.2014 счета договора не проверяем после ввода ICardScript.DataScope if (ErrorMessage.IsEmpty && !Card.Transaction.Script.AvoidChecks && Card.Transaction.Source != TransactionSources.Offline) { if (ErrorMessage.IsEmpty && ContractOwnerRestriction == Restrictions.Forbidden) ErrorMessage.Add("Владелец договора\nзапретил обслуживание на\nданной точке продаж."); if (ErrorMessage.IsEmpty && NetworkOwnerRestriction == Restrictions.Forbidden) ErrorMessage.Add("Владелец сети ТО\nзапретил обслуживание\nдоговора на данной\nточке продаж."); if (ErrorMessage.IsEmpty && State != ContractStates.Allowed) ErrorMessage.Add("Обслуживание договора\nзапрещено"); if (ErrorMessage.IsEmpty && Card.Transaction.TerminalDateTime < DateStart) ErrorMessage.Add("Договор не начал\nдействовать. Дата начала\nдействия договора:\n{0}\nТекущая дата:\n{1}", DateStart.ToString("dd.MM.yyyy HH:mm:ss"), Card.Transaction.TerminalDateTime.ToString("dd.MM.yyyy HH:mm:ss")); if (ErrorMessage.IsEmpty && Card.Transaction.TerminalDateTime > DateFinish) ErrorMessage.Add("Срок действия договора\nистёк. Дата окончания\nдействия договора:\n{0}.\nТекущая дата:\n{1}", DateFinish.ToString("dd.MM.yyyy HH:mm:ss"), Card.Transaction.TerminalDateTime.ToString("dd.MM.yyyy HH:mm:ss")); } } else ErrorMessage.Add("Договор ID = {0} не найден"); } PFL.Stop(); return ErrorMessage.IsEmpty; }