public void UpgradeData() { using (var session = Factory.OpenSession()) using (var transaction = session.BeginTransaction()) { var markups = session.Query <MarkupConfig>().ToList(); markups .Where(c => c.MaxMarkup < c.Markup) .Each(c => c.MaxMarkup = c.Markup); var groups = markups.GroupBy(x => new { x.Address, x.Type }); foreach (var group in groups) { var last = group.OrderBy(x => x.End).Last(); if (last.End < 1000000) { last.End = 1000000; } } if (!session.Query <WriteoffReason>().Any()) { session.SaveEach(WriteoffReason.Default()); } transaction.Commit(); } }
public void Init() { storage = new Storage("Тестовое место хранения", StorageType.DistributionCenter) { Id = 1 }; writeoffReason = new WriteoffReason("Тестовая причина списания") { Id = 2 }; var juridicalLegalForm = new LegalForm("ООО", EconomicAgentType.JuridicalPerson) { Id = 3 }; var juridicalPerson = new JuridicalPerson(juridicalLegalForm) { Id = 4 }; var juridicalPerson2 = new JuridicalPerson(juridicalLegalForm) { Id = 15 }; accountOrganization = new AccountOrganization("Тестовое юридическое лицо", "Тестовое юридическое лицо", juridicalPerson) { Id = 5 }; var provider = new Provider("Тестовый поставщик", new ProviderType("Тестовый тип поставщика"), ProviderReliability.Medium, 5) { Id = 6 }; var providerOrganization = new ProviderOrganization("Организация поставщика", "Организация поставщика", juridicalPerson2); var articleGroup = new ArticleGroup("Тестовая группа", "Тестовая группа"); var measureUnit = new MeasureUnit("шт.", "Штука", "123", 0) { Id = 1 }; var customDeclarationNumber = new String('0', 25); article = new Article("Тестовый товар А", articleGroup, measureUnit, true); providerContract = new ProviderContract(accountOrganization, providerOrganization, "Договор", "4645", DateTime.Now, DateTime.Now); provider.AddProviderContract(providerContract); user = new User(new Employee("Иван", "Иванов", "Иванович", new EmployeePost("Менеджер"), null), "Иванов Иван", "ivanov", "pa$$w0rd", new Team("Тестовая команда", null), null); receiptWaybill = new ReceiptWaybill("123АБВ", DateTime.Today.AddDays(1), storage, accountOrganization, provider, 1234.5M, 0M, new ValueAddedTax("18%", 18), providerContract, customDeclarationNumber, user, user, DateTime.Now); receiptWaybillRow = new ReceiptWaybillRow(article, 100, 1234.5M, receiptWaybill.PendingValueAddedTax); receiptWaybill.AddRow(receiptWaybillRow); writeoffWaybill = new WriteoffWaybill("123", DateTime.Today, storage, accountOrganization, writeoffReason, user, user, DateTime.Now); priceLists = new List <ArticleAccountingPrice>() { new ArticleAccountingPrice(article, 10M) }; }
private bool CheckSettings(bool overrideHash) { using (var session = Factory.OpenSession()) using (var transaction = session.BeginTransaction()) { var settings = session.Query <Settings>().FirstOrDefault(); var mappingToken = AppBootstrapper.NHibernate.MappingHash; if (settings == null) { settings = new Settings(mappingToken, session.Query <Address>().ToArray()); settings.CheckToken(); session.Save(settings); } else { settings.CheckToken(); if (overrideHash) { settings.MappingToken = mappingToken; } if (settings.MappingToken != mappingToken) { return(true); } if (settings.Waybills.Count == 0) { session.Query <WaybillSettings>().Each(settings.Waybills.Add); } } var markupGlobalConfigList = session.Query <MarkupGlobalConfig>().ToList(); var addresses = session.Query <Address>().ToList(); settings.SetGlobalMarkupsSettingsForAddress(addresses, markupGlobalConfigList); var mainAddress = addresses.FirstOrDefault(); foreach (var address in addresses.Except(new [] { mainAddress })) { settings.CopyMarkups(mainAddress, address); } //если ничего восстановить не удалось тогда берем значения по умолчанию foreach (var address in addresses) { foreach (MarkupType type in Enum.GetValues(typeof(MarkupType))) { if (settings.Markups.Count(x => x.Address == address && x.Type == type) == 0) { MarkupConfig.Defaults(address).Where(x => x.Type == type).Each(settings.AddMarkup); } } if (settings.PriceTags.Count(r => r.Address == address) == 0) { PriceTagSettings.Defaults(address).Each(settings.AddPriceTag); } } settings.PriceTags.RemoveEach(settings.PriceTags.Where(x => x.Address == null || !addresses.Contains(x.Address))); var addressConfigs = session.Query <AddressConfig>().ToArray(); session.DeleteEach(addressConfigs.Where(x => x.Address == null)); session.SaveEach(addresses.Except(addressConfigs.Select(x => x.Address)).Select(x => new AddressConfig(x))); //если есть адреса то должен быть и пользователь //если только база не была поломана var user = session.Query <User>().FirstOrDefault() ?? new User(); settings.Waybills.AddEach(addresses .Except(settings.Waybills.Select(w => w.BelongsToAddress)) .Select(a => new WaybillSettings(user, a))); if (!session.Query <WriteoffReason>().Any()) { session.SaveEach(WriteoffReason.Default()); } var suppliers = session.Query <Supplier>().ToList(); var dirMaps = session.Query <DirMap>().ToList(); var newDirMaps = suppliers .Except(dirMaps.Select(m => m.Supplier)) .Select(s => new DirMap(settings, s)) .ToArray(); session.SaveEach(newDirMaps); transaction.Commit(); } return(false); }