예제 #1
0
        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();
                }
        }
예제 #2
0
        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)
            };
        }
예제 #3
0
        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);
        }