private TestPrice CreateAssortmentPrice()
        {
            var assortPrice = new TestPrice {
                AgencyEnabled = true,
                Enabled       = true,
                Supplier      = supplier,
                PriceType     = PriceType.Assortment,
                PriceName     = "Ассортиментный"
            };

            session.Save(assortPrice);
            client.Settings.AssortmentPriceId = assortPrice.Id;
            session.Save(client.Settings);
            var synonym = new TestProductSynonym("Тестовый синоним товара",
                                                 session.Load <TestProduct>(_product.Id), assortPrice);

            session.Save(synonym);
            var prSynonym = new TestProducerSynonym("Тестовый синоним производителя",
                                                    session.Load <TestProducer>(_producer.Id),
                                                    assortPrice);

            session.Save(prSynonym);
            var core = new TestCore(synonym, prSynonym)
            {
                Code     = "0000",
                Quantity = "1",
                Period   = "01.01.2100"
            };

            assortPrice.Core.Add(core);

            session.Save(core);
            session.Flush();
            return(assortPrice);
        }
        public void Create_excludes()
        {
            var product        = Pharmacie().First();
            var catalogProduct = product.CatalogProduct;
            var synonym        = new TestProductSynonym("test", product, price);

            synonym.Save();
            var producerSynonym = new TestProducerSynonym("test", null, price);

            producerSynonym.Save();
            var expression = new TestUnrecExp(synonym, producerSynonym);

            expression.Save();

            Load();
            resolver.ExcludeProducer(GetRow(expression));
            Save();

            var exlcudes = TestExclude.Queryable.Where(e => e.Price == price).ToList();

            Assert.That(exlcudes.Count, Is.EqualTo(1), "не создали исключение");
            var exclude = exlcudes.Single();

            Assert.That(exclude.ProducerSynonym, Is.EqualTo(expression.FirmCr));
            Assert.That(exclude.CatalogProduct.Id, Is.EqualTo(catalogProduct.Id));
            Assert.That(exclude.OriginalSynonym.Id, Is.EqualTo(expression.ProductSynonymId));
        }
        public void Create_different_synonym_on_same_base_synonym()
        {
            var producerSynonym = new TestProducerSynonym("Test", null, price);

            producerSynonym.Save();
            new TestAutomaticSynonym {
                ProducerSynonymId = producerSynonym.Id
            }.Create();

            var productsWithAssortment = Pharmacie().Take(30).ToList().Where(p => p.CatalogProduct.Producers.Count > 0);
            var first    = productsWithAssortment.First();
            var products = productsWithAssortment.Where(p => p.CatalogProduct.Producers.All(pr => pr.Id != first.CatalogProduct.Producers[0].Id)).Take(1).ToList();

            products.Add(first);

            var synonym1 = new TestProductSynonym(products[0].CatalogProduct.Name, products[0], price);

            synonym1.Save();
            var synonym2 = new TestProductSynonym(products[1].CatalogProduct.Name, products[1], price);

            synonym2.Save();
            var exp1 = new TestUnrecExp(synonym1, producerSynonym);

            exp1.Save();
            var exp2 = new TestUnrecExp(synonym2, producerSynonym);

            exp2.Save();
            var producer1 = synonym1.Product.CatalogProduct.Producers.First();
            var producer2 = synonym2.Product.CatalogProduct.Producers.First();

            Load();
            Resolve(exp1, producer1);
            Resolve(exp2, producer2);
            Save();

            session.Clear();
            var synonyms = session.Query <TestProducerSynonym>().Where(s => s.Price == price).ToList();

            Assert.That(synonyms.Count, Is.EqualTo(2), "должны были создать два разных синонима, создали только ({0})",
                        synonyms.Implode(s => s.Name));
            var producerSynonym1 = synonyms.FirstOrDefault(s => s.Producer.Id == producer1.Id);
            var producerSynonym2 = synonyms.FirstOrDefault(s => s.Producer.Id == producer2.Id);

            Assert.That(producerSynonym1.Name, Is.EqualTo(producerSynonym.Name));
            Assert.That(producerSynonym1.Producer.Id, Is.EqualTo(producer1.Id));
            Assert.That(producerSynonym2.Name, Is.EqualTo(producerSynonym.Name));
            Assert.That(producerSynonym2.Producer.Id, Is.EqualTo(producer2.Id));
            var logs = session.CreateSQLQuery("select OperatorName, OperatorHost" +
                                              " from Logs.SynonymFirmCrLogs where SynonymFirmCrCode = :id and Operation = 1")
                       .SetParameter("id", producerSynonym2.Id)
                       .List <object[]>();

            Assert.AreEqual(Environment.UserName.ToLower(), logs[0][0].ToString().ToLower());
            Assert.AreEqual(Environment.MachineName, logs[0][1]);
        }
        public void Join_producers_with_identical_synonyms()
        {
            var price     = TestSupplier.CreateNaked(session).Prices[0];
            var producer1 = new TestProducer("Тестовый производитель");
            var producer2 = new TestProducer("Тестовый производитель");
            var synonym1  = new TestProducerSynonym("Тестовый синоним", producer1, price);
            var synonym2  = new TestProducerSynonym("Тестовый синоним", producer2, price);

            session.Save(producer1);
            session.Save(producer2);
            session.Save(synonym1);
            session.Save(synonym2);
            session.Transaction.Commit();

            service.DoJoin(new[] { producer1.Id }, producer2.Id);
        }
        public void CreateForbiddenProducerName()
        {
            var rnd            = new Random();
            var producerName   = "testTest" + rnd.Next();
            var product        = new TestProduct("Тестовый Продукт");
            var catalogProduct = product.CatalogProduct;

            catalogProduct.Pharmacie = true;
            product.Save();
            var synonym = new TestProductSynonym("test", product, price);

            synonym.Save();
            var producerSynonym = new TestProducerSynonym(producerName, null, price);

            producerSynonym.Save();
            var expression = new TestUnrecExp(synonym, producerSynonym);

            expression.Save();
            var notFormExpression = new TestUnrecExp("newTest", producerName, price);

            notFormExpression.Save();
            Load();
            resolver.ForbidProducer(GetRow(expression));
            Save();

            var query = session.CreateSQLQuery(String.Format("SELECT count(*) FROM farm.ForbiddenProducers F where F.Name='{0}'", producerName));
            var count = query.UniqueResult();

            Assert.That(count, Is.GreaterThan(0));
            var exclude = session.Query <TestExclude>().Where(e => e.Price == price);

            Assert.That(exclude.Count(), Is.EqualTo(0));
            var unrec = session.Query <TestUnrecExp>().Where(e => e.FirmCr.ToLower() == producerName && e.Status == 1);

            Assert.That(unrec.Count(), Is.EqualTo(0));
            unrec = session.Query <TestUnrecExp>().Where(e => e.FirmCr.ToLower() == producerName);
            Assert.That(unrec.Count(), Is.GreaterThan(0));
        }
        public void Check_SetAssortimentInfo()
        {
            var file = "14356_4.dbf";

            var log = CreateTestLog(file);

            var product = new TestProduct("тестовый товар");

            product.SaveAndFlush();
            var productSynonym = new TestProductSynonym("Коринфар таб п/о 10мг № 50", product, price);

            productSynonym.SaveAndFlush();

            var producer = new TestProducer {
                Name = "Тестовый производитель"
            };

            producer.SaveAndFlush();

            var producerSynonym = new TestProducerSynonym {
                Price    = price,
                Name     = "Плива Хрватска д.о.о./АВД фарма ГмбХ и Ко КГ",
                Producer = producer
            };

            producerSynonym.SaveAndFlush();

            var core = new TestCore(productSynonym, producerSynonym)
            {
                Price    = price,
                Code     = "1234567",
                Quantity = "0",
                Period   = "01.01.2015"
            };

            core.SaveAndFlush();

            core = new TestCore(productSynonym, producerSynonym)
            {
                Price    = price,
                Code     = "111111",
                Quantity = "0",
                Period   = "01.01.2015"
            };
            core.SaveAndFlush();

            settings.IsConvertFormat    = true;
            settings.AssortimentPriceId = price.Id;
            settings.SaveAndFlush();
            FlushAndCommit();

            var service = new WaybillService();
            var ids     = service.ParseWaybill(new[] { log.Id });

            var doc = Document.Find(ids.Single());

            Assert.That(doc.Lines.Count, Is.EqualTo(1));
            Assert.IsTrue(doc.Lines[0].ProductEntity != null);
            Assert.That(doc.Lines[0].ProductEntity.Id, Is.EqualTo(product.Id));
            Assert.That(doc.Lines[0].ProducerId, Is.EqualTo(producer.Id));

            var resultDoc = DocumentReceiveLog.Queryable.Single(d => d.Address.Id == address.Id && !d.IsFake);
            var files     = Directory.GetFiles(waybillsPath, "*.dbf");

            Assert.That(files.Count(), Is.EqualTo(2), files.Implode());

            var data = Dbf.Load(resultDoc.GetFileName(), Encoding.GetEncoding(866));

            Assert.IsTrue(data.Columns.Contains("id_artis"));
            Assert.That(data.Rows[0]["id_artis"], Is.EqualTo("111111"));
            Assert.IsTrue(data.Columns.Contains("name_artis"));
            Assert.That(data.Rows[0]["name_artis"], Is.EqualTo("Коринфар таб п/о 10мг № 50"));
            Assert.IsTrue(data.Columns.Contains("przv_artis"));
            Assert.That(data.Rows[0]["przv_artis"], Is.EqualTo("Плива Хрватска д.о.о./АВД фарма ГмбХ и Ко КГ"));
        }
        public void Check_SetProductId_if_synonym_exists()
        {
            var file = "14356_4.dbf";

            var log = CreateTestLog(file);

            var product = new TestProduct("тестовый товар");

            product.SaveAndFlush();

            var productSynonym = new TestSynonym {
                ProductId = product.Id,
                Synonym   = "Коринфар таб п/о 10мг № 50",
                PriceCode = (int?)price.Id
            };

            productSynonym.SaveAndFlush();

            productSynonym = new TestSynonym {
                ProductId = null,
                Synonym   = "Коринфар таб п/о 10мг № 50",
                PriceCode = (int?)price.Id
            };

            var producer1 = new TestProducer {
                Name = "Тестовый производитель"
            };

            producer1.SaveAndFlush();

            var producer2 = new TestProducer {
                Name = "Тестовый производитель"
            };

            producer2.SaveAndFlush();

            var producerSynonym = new TestProducerSynonym {
                Price    = price,
                Name     = "Плива Хрватска д.о.о./АВД фарма ГмбХ и Ко КГ",
                Producer = null
            };

            producerSynonym.SaveAndFlush();

            producerSynonym = new TestProducerSynonym {
                Price    = price,
                Name     = "Плива Хрватска д.о.о./АВД фарма ГмбХ и Ко КГ",
                Producer = producer1
            };
            producerSynonym.SaveAndFlush();

            producerSynonym = new TestProducerSynonym {
                Price    = price,
                Name     = "Плива Хрватска д.о.о./АВД фарма ГмбХ и Ко КГ",
                Producer = producer2
            };
            producerSynonym.SaveAndFlush();
            FlushAndCommit();

            var service = new WaybillService();
            var ids     = service.ParseWaybill(new[] { log.Id });

            var waybill = TestWaybill.Find(ids.Single());

            Assert.That(waybill.Lines.Count, Is.EqualTo(1));
            Assert.IsTrue(waybill.Lines[0].CatalogProduct != null);
            Assert.That(waybill.Lines[0].CatalogProduct.Id, Is.EqualTo(product.Id));
            Assert.That(waybill.Lines[0].ProducerId, Is.EqualTo(producer1.Id));
        }
Esempio n. 8
0
        public void Create_new_automatic_synonym_if_do_not_have_excludes()
        {
            var producer1 = new TestProducer("Тестовый производитель1");
            var producer2 = new TestProducer("Тестовый производитель2");
            var synonym1  = new TestProducerSynonym("Вектор", producer1, price);

            synonym1.Save();
            var synonym2 = new TestProducerSynonym("Вектор", producer2, price);

            synonym2.Save();

            var products = TestProduct.Queryable.Take(2).ToList();
            var product1 = products[0];

            product1.CatalogProduct.Pharmacie = true;
            product1.Save();
            var product2 = products[1];

            product2.CatalogProduct.Pharmacie = true;
            product2.Save();
            new TestProductSynonym("5-нок 50мг Таб. П/о Х50", product1, price).Save();
            new TestProductSynonym("Теотард 200мг Капс.пролонг.дейст. Х40", product2, price).Save();

            var assortment1 = TestAssortment.Queryable.FirstOrDefault(a => a.Producer == producer1 && a.Catalog == product1.CatalogProduct);

            if (assortment1 != null)
            {
                assortment1.Delete();
            }

            var assortment2 = TestAssortment.Queryable.FirstOrDefault(a => a.Producer == producer2 && a.Catalog == product2.CatalogProduct);

            if (assortment2 != null)
            {
                assortment2.Delete();
            }
            price.CreateAssortmentBoundSynonyms(
                "9 МЕСЯЦЕВ КРЕМ Д/ПРОФИЛАКТИКИ И КОРРЕКЦИИ РАСТЯЖЕК 150МЛ",
                "Валента Фармацевтика/Королев Ф");
            price.Save();

            Formalize(@"9 МЕСЯЦЕВ КРЕМ Д/ПРОФИЛАКТИКИ И КОРРЕКЦИИ РАСТЯЖЕК 150МЛ;Валента Фармацевтика/Королев Ф;2864;220.92;
5-нок 50мг Таб. П/о Х50;Вектор;440;66.15;
Теотард 200мг Капс.пролонг.дейст. Х40;Вектор;157;83.02;");

            var cores = TestCore.Queryable.Where(c => c.Price == price).ToList();

            Assert.That(cores.Count, Is.EqualTo(3));
            var core1 = cores.Single(c => c.ProductSynonym.Name == "5-нок 50мг Таб. П/о Х50");

            Assert.That(core1.Product.Id, Is.EqualTo(product1.Id));
            Assert.That(core1.ProducerSynonym.Id, Is.Not.EqualTo(synonym1.Id).And.Not.EqualTo(synonym2.Id));
            Assert.That(core1.ProducerSynonym.Name, Is.EqualTo("Вектор"));
            Assert.That(core1.Producer, Is.Null);

            var core2 = cores.Single(c => c.ProductSynonym.Name == "Теотард 200мг Капс.пролонг.дейст. Х40");

            Assert.That(core2.Product.Id, Is.EqualTo(product2.Id));
            Assert.That(core2.ProducerSynonym.Id, Is.Not.EqualTo(synonym1.Id).And.Not.EqualTo(synonym2.Id));
            Assert.That(core2.ProducerSynonym.Name, Is.EqualTo("Вектор"));
            Assert.That(core2.Producer, Is.Null);
            var excludes = TestExclude.Queryable.Where(c => c.Price == price).ToList();

            Assert.That(excludes.Count, Is.EqualTo(0));
        }