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)); }
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)); }