/// <summary> /// Получение очередного абсолютного номера записи в базе /// </summary> public int getISN() { // Вариант с XPCollection Session ssn = this.Session; // new Session(this.Session.Dictionary); XPCollection <RegistrationLogISNCounter> xpCounterCol = new XPCollection <RegistrationLogISNCounter>(ssn); if (!xpCounterCol.IsLoaded) { xpCounterCol.Load(); } if (xpCounterCol.Count == 0) { // SHU 2011-11-03 ПЕРЕДЕЛАТЬ НА Session! using (UnitOfWork uow = new UnitOfWork(this.Session.DataLayer)) { RegistrationLogISNCounter newCounter = new RegistrationLogISNCounter(uow); newCounter.Save(); uow.CommitChanges(); xpCounterCol.Reload(); if (!xpCounterCol.IsLoaded) { xpCounterCol.Load(); } } } // Номер ISN return(xpCounterCol[0].ReserveNumber()); }
private void UpdateTrwDeals() { // using (IObjectSpace os = ObjectSpace.CreateNestedObjectSpace()) { IList <crmContractDeal> deals = os.GetObjects <crmContractDeal>(); foreach (crmContractDeal deal in deals) { if (deal.Contract == null) { throw new InvalidDataException("Deal.Contract is Null"); } if (deal.ContractKind == ContractKind.CONTRACT && deal.Contract.ContractDocument != deal.ContractDocument) { throw new InvalidDataException("Invalid Contract Document"); } } // IList <crmContractRegistrationLog> log_recs = os.GetObjects <crmContractRegistrationLog>(); foreach (crmContractRegistrationLog log_rec in log_recs) { if (log_rec.ContractDeal.Contract == null) { log_rec.ContractDeal.State = DealStates.DEAL_DELETED; continue; } if (log_rec.ContractDeal.ContractKind == ContractKind.CONTRACT) { if (log_rec.ContractDeal.Contract.IntNumber == 0) { log_rec.ContractDeal.Contract.IntNumber = log_rec.ISN; } else { throw new InvalidDataException("Contract already has int number"); } } else { } } // RegistrationLogISNCounter int_counter = os.GetObjects <RegistrationLogISNCounter>().FirstOrDefault(); // IList <crmContract> contracts = os.GetObjects <crmContract>(); foreach (crmContract contract in contracts) { if (contract.IntNumber == 0) { int_counter.ISN++; contract.IntNumber = int_counter.ISN; } crmContractDeal contract_deal = null; Int32 FailNumber = 1; foreach (crmContractDeal deal in contract.ContractDeals) { if (deal.State == DealStates.DEAL_DELETED) { continue; } if (deal.ContractKind == ContractKind.CONTRACT) { contract.IntCurDocNumber++; deal.IntNumber = contract.IntCurDocNumber; if (contract_deal != null) { contract_deal.FailNumber = FailNumber++; } // throw new InvalidDataException("Dublicate Contract Deal"); contract_deal = deal; } } if (contract_deal == null) { contract.FailNumber = 1; } foreach (crmContractDeal deal in contract.ContractDeals) { if (deal.State == DealStates.DEAL_DELETED || deal.FailNumber != 0) { continue; } if (deal.ContractKind == ContractKind.ADDENDUM) { contract.IntCurDocNumber++; deal.IntNumber = contract.IntCurDocNumber; Int32 cur_fail_number = 1; crmContractDeal cur_deal = deal; foreach (crmContractDeal sub_deal in contract.ContractDeals) { if (sub_deal.ContractKind != ContractKind.ADDENDUM || cur_deal == sub_deal || sub_deal.FailNumber != 0) { continue; } if (cur_deal.ContractDocument.Number == sub_deal.ContractDocument.Number) { cur_deal.FailNumber = cur_fail_number++; cur_deal = sub_deal; } } } } // throw new InvalidDataException("Unknow Contract Deal"); foreach (crmContractDeal deal in contract.ContractDeals) { if (deal.State == DealStates.DEAL_DELETED || deal.FailNumber != 0) { continue; } deal.UpdateTrwNumbers(); } } os.CommitChanges(); } }