public void Parse() { var documentLog = new DocumentReceiveLog { Supplier = new Supplier { Id = 257 } }; // код поставщика МедСервис Assert.IsTrue(new WaybillFormatDetector().DetectParser(@"..\..\Data\Waybills\2ddd.DBF", documentLog) is MedServiceParser); var doc = WaybillParser.Parse(@"2ddd.DBF", documentLog); var line = doc.Lines[0]; Assert.That(doc.ProviderDocumentId, Is.EqualTo(" 2")); Assert.That(doc.DocumentDate.Value.ToShortDateString(), Is.EqualTo("01.10.2015")); Assert.That(line.Code, Is.EqualTo("13")); Assert.That(line.Product, Is.EqualTo("Ингалятор компрессорный Флоренция")); Assert.That(line.Producer, Is.EqualTo("\"MED 2000 S.R.L.\"")); Assert.That(line.Country, Is.Null); Assert.That(line.Quantity, Is.EqualTo(3)); Assert.That(line.SerialNumber, Is.Null); Assert.That(line.Certificates, Is.EqualTo("РОСС IT.АГ88.Д73187")); Assert.That(line.SupplierCostWithoutNDS, Is.EqualTo(2928.00)); Assert.That(line.SupplierCost, Is.EqualTo(2928.00)); Assert.That(line.Period, Is.Null); Assert.That(line.Amount, Is.EqualTo(8784.00)); }
public void Parse_Ekaterinburg_farm() { var documentLog = new DocumentReceiveLog { Supplier = new Supplier { Id = 4001u } }; Assert.IsTrue(new WaybillFormatDetector().DetectParser(@"..\..\Data\Waybills\bi055540.DBF", documentLog) is Moron_338_SpecialParser); var document = WaybillParser.Parse(@"..\..\Data\Waybills\bi055540.DBF", documentLog); Assert.That(document.ProviderDocumentId, Is.EqualTo("55540")); Assert.That(document.DocumentDate, Is.EqualTo(Convert.ToDateTime("19/02/2010"))); Assert.That(document.Lines[0].Code, Is.EqualTo("252839416")); Assert.That(document.Lines[0].Product, Is.EqualTo("Азитромицин 250мг капс №6")); Assert.That(document.Lines[0].Producer, Is.EqualTo("Вертекс ЗАО")); Assert.That(document.Lines[0].Country, Is.EqualTo("РОССИЯ")); Assert.That(document.Lines[0].ProducerCostWithoutNDS, Is.EqualTo(67.17)); Assert.That(document.Lines[0].SupplierCostWithoutNDS, Is.EqualTo(70.59)); Assert.That(document.Lines[0].Quantity, Is.EqualTo(5)); Assert.That(document.Lines[0].Period, Is.EqualTo("01.11.2011")); Assert.That(document.Lines[0].Certificates, Is.EqualTo("РОСС RU.ФМ03.Д01939")); Assert.That(document.Lines[0].SerialNumber, Is.EqualTo("231009")); Assert.That(document.Lines[0].Nds, Is.EqualTo(10)); Assert.That(document.Lines[0].VitallyImportant, Is.True); Assert.That(document.Lines[0].RegistryCost, Is.EqualTo(80.70)); }
public FullDocument CreateTestDocument(Supplier supplier, Client client) { var log = new DocumentReceiveLog(supplier, client.Addresses[0]); session.Save(log); return(CreateTestDocument(supplier, client, log)); }
public void View_loaded_documents_details_from_client_update_history() { Client client = null; Supplier supplier = null; DocumentReceiveLog documentLogEntity = null; Document document = null; UpdateLogEntity updateEntity = null; Create_loaded_document_logs(out client, out supplier, out documentLogEntity, out document, out updateEntity); Open(client); Click("История обновлений"); OpenedWindow(String.Format("История обновлений клиента {0}", client.Name)); Assert.IsTrue(browser.Link(Find.ByText("Загрузка документов на сервер")).Exists); browser.Link("ShowUpdateDetailsLink" + updateEntity.Id).Click(); Thread.Sleep(2000); AssertText("Дата загрузки"); AssertText("Тип документа"); AssertText("Дата разбора"); AssertText("Имя файла"); AssertText("Статус"); AssertText("Разобран"); AssertText(supplier.Name); browser.Link("ShowDocumentDetailsLink" + documentLogEntity.Id).Click(); Check_document_view(document); }
public void Parse_ForaFarm_Chelyabinsk() { var documentLog = new DocumentReceiveLog { Supplier = new Supplier { Id = 5802u } }; Assert.IsTrue(new WaybillFormatDetector().DetectParser(@"..\..\Data\Waybills\44027.dbf", documentLog) is Moron_338_SpecialParser); var document = WaybillParser.Parse(@"..\..\Data\Waybills\44027.dbf", documentLog); Assert.That(document.Lines.Count, Is.EqualTo(6)); Assert.That(document.ProviderDocumentId, Is.EqualTo("45027")); Assert.That(document.DocumentDate, Is.EqualTo(Convert.ToDateTime("31/05/2010"))); Assert.That(document.Lines[0].Code, Is.EqualTo("394")); Assert.That(document.Lines[0].Product, Is.EqualTo("Боро Плюс (розовый) 25мл крем")); Assert.That(document.Lines[0].Producer, Is.EqualTo("Emami limited")); Assert.That(document.Lines[0].Country, Is.EqualTo("Индия")); Assert.That(document.Lines[0].Quantity, Is.EqualTo(12)); Assert.That(document.Lines[0].SupplierCost, Is.EqualTo(26.8)); Assert.That(document.Lines[0].SupplierCostWithoutNDS, Is.EqualTo(22.71)); Assert.That(document.Lines[0].ProducerCostWithoutNDS, Is.EqualTo(0.00)); Assert.That(document.Lines[0].SupplierPriceMarkup, Is.Null); Assert.That(document.Lines[0].Period, Is.EqualTo("01.09.2014")); Assert.That(document.Lines[0].VitallyImportant, Is.Null); Assert.That(document.Lines[0].Nds.Value, Is.EqualTo(18.00)); Assert.That(document.Lines[0].Certificates, Is.EqualTo("РОСС IN.ПК08.В02670")); Assert.That(document.Lines[0].RegistryCost, Is.Null); Assert.That(document.Lines[0].SerialNumber, Is.EqualTo("AT0023")); }
public void Parse() { var documentLog = new DocumentReceiveLog { Supplier = new Supplier { Id = 7999u } }; // код поставщика Тредифарм, Чебоксары //Парсер пока удален как специальный. Но, думаю его надо оставить в системе, может пригодится //Assert.IsTrue(WaybillParser.GetParserType(@"..\..\Data\Waybills\TrediFarmCheboksary.dbf", documentLog) is TrediFarmCheboksarySpecialParser); var doc = WaybillParser.Parse("TrediFarmCheboksary.dbf", documentLog); Assert.That(doc.Lines.Count, Is.EqualTo(5)); Assert.That(doc.ProviderDocumentId, Is.EqualTo("РНЧ-000000022838")); Assert.That(doc.DocumentDate.Value.ToShortDateString(), Is.EqualTo("28.03.2011")); var line = doc.Lines[0]; Assert.That(line.Code, Is.EqualTo("00010686")); Assert.That(line.Product, Is.EqualTo("Калия йодид 100мкг табл №100")); Assert.That(line.Producer, Is.EqualTo("Оболенское-фармацевтическое предпр-е")); Assert.That(line.Country, Is.EqualTo("Россия")); Assert.That(line.Quantity, Is.EqualTo(1)); Assert.That(line.ProducerCostWithoutNDS, Is.EqualTo(44.0356)); Assert.That(line.RegistryCost, Is.EqualTo(44.0300)); Assert.That(line.SupplierPriceMarkup, Is.EqualTo(12.5000)); Assert.That(line.SupplierCostWithoutNDS, Is.EqualTo(49.5400)); Assert.That(line.Nds, Is.EqualTo(10)); Assert.That(line.SupplierCost, Is.EqualTo(54.4900)); Assert.That(line.NdsAmount, Is.EqualTo(4.9500)); Assert.That(line.Amount, Is.EqualTo(54.4900)); Assert.That(line.SerialNumber, Is.EqualTo("180910")); Assert.That(line.Certificates, Is.EqualTo("РОСС RU.ФМ01.Д24225")); Assert.That(line.Period, Is.EqualTo("01.10.2013")); }
public void View_loaded_documents_details_from_user_document_history() { Client client = null; Supplier supplier = null; DocumentReceiveLog documentLogEntity = null; Document document = null; UpdateLogEntity updateEntity = null; Create_loaded_document_logs(out client, out supplier, out documentLogEntity, out document, out updateEntity); Open(client); Click("История документов"); OpenedWindow("История документов"); AssertText(supplier.Name); browser.Link("ShowDocumentDetailsLink" + documentLogEntity.Id).Click(); Thread.Sleep(1000); AssertText("Код товара"); AssertText("Наименование"); AssertText("Производитель"); AssertText("Страна"); AssertText("Количество"); AssertText("Срок годности"); Check_document_view(document); }
public override void ImportDocument(DocumentReceiveLog log, string filename) { using (var transaction = new TransactionScope(OnDispose.Rollback)) { log.Save(); transaction.VoteCommit(); } }
public static List <DocumentReceiveLog> GetFilesForParsing(ISession session, params string[] filePaths) { var client = TestClient.Create(session); var supplier = TestSupplier.Create(session); var resultList = new List <uint>(); foreach (var filePath in filePaths) { var file = filePath; if (!File.Exists(file)) { file = Path.Combine(@"..\..\Data\Waybills\multifile", filePath); } var log = new TestDocumentLog(supplier, client, Path.GetFileName(filePath)); session.Save(log); resultList.Add(log.Id); var clientDir = Path.Combine(Settings.Default.DocumentPath, log.Address.Id.ToString().PadLeft(3, '0')); var documentDir = Path.Combine(clientDir, DocumentType.Waybill + "s"); var name = String.Format("{0}_{1}({2}){3}", log.Id, supplier.Name, Path.GetFileNameWithoutExtension(file), Path.GetExtension(file)); Common.Tools.FileHelper.CreateDirectoryRecursive(documentDir); File.Copy(file, Path.Combine(documentDir, name)); } return(DocumentReceiveLog.LoadByIds(resultList.ToArray())); }
public void LipetskFormaciaProtekExport() { var supplier = TestSupplier.CreateNaked(session); var client = TestClient.CreateNaked(session); var settings = session.Load <WaybillSettings>(client.Id); settings.AssortimentPriceId = supplier.Prices[0].Id; settings.WaybillConvertFormat = WaybillFormat.LipetskFarmacia; settings.IsConvertFormat = true; var path = @"..\..\Data\Waybills\446406_0.dbf"; var startLog = new DocumentReceiveLog(session.Load <Supplier>(supplier.Id), session.Load <Address>(client.Addresses[0].Id)) { DocumentType = DocType.Waybill, LogTime = DateTime.Now, }; session.Save(startLog); var document = WaybillParser.Parse(path, startLog); document.Log = startLog; document.DocumentDate = DateTime.Now; document.Log.IsFake = true; session.Save(document); //test Exporter.SaveProtek(document); var dblogs = session.Query <DocumentReceiveLog>().Where(i => i.ClientCode == client.Id).ToList(); Assert.That(dblogs.Count, Is.EqualTo(2)); Assert.That(dblogs[0].IsFake, Is.False); Assert.That(dblogs[1].IsFake, Is.False); }
protected bool MoveWaybill(string archFileName, string fileName, DataRow drCurrent, BaseDocumentReader documentReader) { using (var cleaner = new FileCleaner()) { var supplierId = Convert.ToUInt32(drCurrent[WaybillSourcesTable.colFirmCode]); try { var addresses = With.Connection(c => documentReader.ParseAddressIds(c, supplierId, archFileName, fileName)); var formatFile = documentReader.FormatOutputFile(fileName, drCurrent); cleaner.Watch(fileName); cleaner.Watch(formatFile); foreach (var addressId in addresses) { var log = DocumentReceiveLog.LogNoCommit(supplierId, (uint)addressId, formatFile, _currentDocumentType.DocType, "Получен с нашего FTP"); _logger.InfoFormat("WaybillLanSourceHandler: обработка файла {0}", fileName); documentReader.ImportDocument(log, fileName); new WaybillService().Process(new[] { log }.ToList()); } } catch (Exception e) { var message = "Не удалось отформатировать документ.\nОшибка: " + e; _logger.ErrorFormat("WaybillLanSourceHandler: {0}, archfilename {1}, fileName {2}, error {3}", message, archFileName, fileName, e); DocumentReceiveLog.Log(supplierId, null, fileName, _currentDocumentType.DocType, message); return(false); } } return(true); }
public void LipetskFormaciaExporter() { var supplier = TestSupplier.CreateNaked(session); var client = TestClient.CreateNaked(session); var settings = session.Load <WaybillSettings>(client.Id); settings.AssortimentPriceId = supplier.Prices[0].Id; settings.WaybillConvertFormat = WaybillFormat.LipetskFarmacia; settings.IsConvertFormat = true; var path = @"..\..\Data\Waybills\446406_0.dbf"; var startLog = new DocumentReceiveLog(session.Load <Supplier>(supplier.Id), session.Load <Address>(client.Addresses[0].Id)) { DocumentType = DocType.Waybill, LogTime = DateTime.Now, }; session.Save(startLog); var document = WaybillParser.Parse(path, startLog); document.Log = startLog; document.DocumentDate = DateTime.Now; document.Log.IsFake = true; session.Save(document); //test var log = Exporter.ConvertAndSave(document, WaybillFormat.LipetskFarmacia, settings); Assert.That(log.FileName.Substring(log.FileName.Length - 4), Is.EqualTo(".xls")); Assert.That(document.Log.IsFake, Is.EqualTo(false)); }
public void Parse() { var documentLog = new DocumentReceiveLog { Supplier = new Supplier { Id = 2754 }, }; // код поставщика "Катрен" (Казань) Assert.IsTrue(new WaybillFormatDetector().DetectParser(@"..\..\Data\Waybills\218817.txt", documentLog) is KatrenKazanSpecialParser); var doc = WaybillParser.Parse(@"218817.txt", documentLog); Assert.That(doc.Lines.Count, Is.EqualTo(12)); Assert.That(doc.ProviderDocumentId, Is.EqualTo("218817")); Assert.That(doc.DocumentDate, Is.EqualTo(Convert.ToDateTime("27.10.2011"))); Assert.That(doc.Lines[4].Code, Is.EqualTo("379132")); Assert.That(doc.Lines[4].Product, Is.EqualTo("ДЕКАРИС 0,05 N2 ТАБЛ")); Assert.That(doc.Lines[4].Producer, Is.EqualTo("Гедеон Рихтер ОАО/Гедеон Рихтер Румыния А.О.")); Assert.That(doc.Lines[4].Country, Is.EqualTo("венгрия")); Assert.That(doc.Lines[4].Quantity, Is.EqualTo(2)); Assert.That(doc.Lines[4].ProducerCostWithoutNDS, Is.EqualTo(50.28)); Assert.That(doc.Lines[4].SupplierCostWithoutNDS, Is.EqualTo(51.60)); Assert.That(doc.Lines[4].Nds, Is.EqualTo(10)); Assert.That(doc.Lines[4].NdsAmount, Is.EqualTo(10.32)); Assert.That(doc.Lines[4].SerialNumber, Is.EqualTo("F14010F")); Assert.That(doc.Lines[4].Period, Is.EqualTo("01.04.2016")); Assert.That(doc.Lines[4].BillOfEntryNumber, Is.EqualTo("10130032/101011/0005403/24")); Assert.That(doc.Lines[4].Certificates, Is.EqualTo("РОСС HU.ФМ08.Д19429")); Assert.That(doc.Lines[4].CertificatesDate, Is.EqualTo("27.09.2011")); Assert.That(doc.Lines[4].RegistryCost, Is.EqualTo(50.42)); Assert.That(doc.Lines[4].EAN13, Is.EqualTo(5997001380338)); Assert.That(doc.Lines[4].VitallyImportant, Is.True); Assert.That(doc.Lines[4].Amount, Is.EqualTo(113.52)); }
public override void ImportDocument(DocumentReceiveLog log, string filename) { var dsDocument = new DataSet(); dsDocument.ReadXml(filename); var providerDocumentId = dsDocument.Tables["Header"].Rows[0][HeaderTable.colInvNum].ToString(); using (new SessionScope()) { var doc = Document.Queryable.FirstOrDefault(d => d.FirmCode == log.Supplier.Id && d.ClientCode == log.ClientCode && d.ProviderDocumentId == providerDocumentId && d.DocumentType == log.DocumentType); if (doc != null) { throw new Exception(String.Format( "Дублирующийся документ с аттрибутами: FirmCode = {0}, ClientCode = {1}, DocumentType = {2}, ProviderDocumentId = {3}", log.Supplier.Id, log.ClientCode, log.DocumentType, providerDocumentId)); } doc = new Document(log) { ProviderDocumentId = providerDocumentId }; using (var transaction = new TransactionScope(OnDispose.Rollback)) { log.Save(); doc.Save(); transaction.VoteCommit(); } } }
public void Parse() { // код поставщика "Бизон" (Казань) var documentLog = new DocumentReceiveLog { Supplier = new Supplier { Id = 8063 }, }; Assert.IsTrue(new WaybillFormatDetector().DetectParser(@"..\..\Data\Waybills\N000011720.txt", documentLog) is BizonKazanSpecialParser); var doc = WaybillParser.Parse("N000011720.txt", documentLog); Assert.That(doc.Lines.Count, Is.EqualTo(15)); Assert.That(doc.ProviderDocumentId, Is.EqualTo("Р-000011720")); Assert.That(doc.DocumentDate.Value.ToShortDateString(), Is.EqualTo("30.05.2011")); Assert.That(doc.Lines[0].Code, Is.Null); Assert.That(doc.Lines[0].Product, Is.EqualTo("Аптечка автомобильная (нового образца )")); Assert.That(doc.Lines[0].SerialNumber, Is.EqualTo("*")); Assert.That(doc.Lines[0].Quantity, Is.EqualTo(1)); Assert.That(doc.Lines[0].SupplierCostWithoutNDS, Is.EqualTo(115.91)); Assert.That(doc.Lines[0].Nds, Is.EqualTo(10)); Assert.That(doc.Lines[0].NdsAmount, Is.EqualTo(11.59)); Assert.That(doc.Lines[0].Amount, Is.EqualTo(127.5)); Assert.That(doc.Lines[0].Producer, Is.EqualTo("Фарм-Глобал")); Assert.That(doc.Lines[0].Period, Is.EqualTo("01.09.13")); Assert.That(doc.Lines[0].Country, Is.Null); Assert.That(doc.Lines[0].ProducerCostWithoutNDS, Is.Null); Assert.That(doc.Lines[0].SupplierCost, Is.EqualTo(127.5)); Assert.That(doc.Lines[0].Certificates, Is.Null); Assert.That(doc.Lines[0].RegistryCost, Is.Null); Assert.That(doc.Lines[0].VitallyImportant, Is.Null); Assert.That(doc.Lines[0].SupplierPriceMarkup, Is.Null); doc = WaybillParser.Parse("801_000011708.txt", documentLog); Assert.That(doc.Lines.Count, Is.EqualTo(9)); Assert.That(doc.ProviderDocumentId, Is.EqualTo("Р-000011708")); Assert.That(doc.DocumentDate.Value.ToShortDateString(), Is.EqualTo("30.05.2011")); Assert.That(doc.Lines[0].Code, Is.Null); Assert.That(doc.Lines[0].Product, Is.EqualTo("Алмагель А (сусп. 170 мл )")); Assert.That(doc.Lines[0].SerialNumber, Is.EqualTo("250610")); Assert.That(doc.Lines[0].Quantity, Is.EqualTo(1)); Assert.That(doc.Lines[0].SupplierCostWithoutNDS, Is.EqualTo(76.5)); Assert.That(doc.Lines[0].Nds, Is.EqualTo(10)); Assert.That(doc.Lines[0].NdsAmount, Is.EqualTo(7.65)); Assert.That(doc.Lines[0].Amount, Is.EqualTo(84.15)); Assert.That(doc.Lines[0].Producer, Is.EqualTo("Balkanpharma-Troyan AD")); Assert.That(doc.Lines[0].Period, Is.EqualTo("01.06.12")); Assert.That(doc.Lines[0].Country, Is.Null); Assert.That(doc.Lines[0].ProducerCostWithoutNDS, Is.EqualTo(87.66)); Assert.That(doc.Lines[0].SupplierCost, Is.EqualTo(84.15)); Assert.That(doc.Lines[0].Certificates, Is.EqualTo("ФМ09.Д09423")); Assert.That(doc.Lines[0].RegistryCost, Is.EqualTo(0.00)); Assert.That(doc.Lines[0].VitallyImportant, Is.False); Assert.That(doc.Lines[0].SupplierPriceMarkup, Is.EqualTo(-12.73)); }
public void Parse3() { var documentLog = new DocumentReceiveLog { Supplier = new Supplier { Id = 6256u } }; var fileName = @"..\..\Data\Waybills\4049766_Авеста-Фармацевтика(118955).dbf"; Assert.IsFalse(new WaybillFormatDetector().DetectParser(fileName, documentLog) is Avesta_6256_SpecialParser); var doc = WaybillParser.Parse("4049766_Авеста-Фармацевтика(118955).dbf", documentLog); Assert.That(doc.ProviderDocumentId, Is.EqualTo("118955")); Assert.That(doc.DocumentDate, Is.EqualTo(DateTime.Parse("09.07.2010"))); var line = doc.Lines[0]; Assert.That(line.Code, Is.EqualTo("40764")); Assert.That(line.Product, Is.EqualTo("АДЖИСЕПТ МЕНТОЛ+ЭВКАЛИПТ пастилки N24")); Assert.That(line.Producer, Is.EqualTo("Agio Pharmaceuticals")); Assert.That(line.Country, Is.EqualTo("Индия")); Assert.That(line.Quantity, Is.EqualTo(5)); Assert.That(line.Nds, Is.EqualTo(10)); Assert.That(line.Period, Is.EqualTo("31.12.2012")); Assert.That(line.Certificates, Is.EqualTo("РОСС IN.ФМ08.Д95800")); Assert.That(line.SupplierCost, Is.EqualTo(22.90)); Assert.That(line.SupplierCostWithoutNDS, Is.EqualTo(20.8200)); Assert.That(line.ProducerCostWithoutNDS, Is.EqualTo(20.4200)); Assert.That(line.SerialNumber, Is.EqualTo("10/14/0004")); Assert.That(line.SupplierPriceMarkup, Is.EqualTo(1.96)); Assert.That(line.VitallyImportant, Is.Null); Assert.That(line.RegistryCost, Is.Null); }
public void Parse_without_period() { var documentLog = new DocumentReceiveLog { Supplier = new Supplier { Id = 8063 }, }; Assert.IsTrue(new WaybillFormatDetector().DetectParser(@"..\..\Data\Waybills\13755.txt", documentLog) is BizonKazanSpecialParser); var doc = WaybillParser.Parse("13755.txt", documentLog); Assert.That(doc.Lines.Count, Is.EqualTo(11)); Assert.That(doc.ProviderDocumentId, Is.EqualTo("Р-000013755")); Assert.That(doc.DocumentDate.Value.ToShortDateString(), Is.EqualTo("28.06.2011")); Assert.That(doc.Lines[10].Code, Is.Null); Assert.That(doc.Lines[10].Product, Is.EqualTo("Фурадонин (табл. 0,05 г №10 )")); Assert.That(doc.Lines[10].SerialNumber, Is.EqualTo("360311")); Assert.That(doc.Lines[10].Quantity, Is.EqualTo(20)); Assert.That(doc.Lines[10].SupplierCostWithoutNDS, Is.EqualTo(2.72)); Assert.That(doc.Lines[10].Nds, Is.EqualTo(10)); Assert.That(doc.Lines[10].NdsAmount, Is.EqualTo(5.44)); Assert.That(doc.Lines[10].Amount, Is.EqualTo(59.84)); Assert.That(doc.Lines[10].Producer, Is.EqualTo("Борисовский ")); Assert.That(doc.Lines[10].Period, Is.Null); Assert.That(doc.Lines[10].Country, Is.Null); Assert.That(doc.Lines[10].ProducerCostWithoutNDS, Is.Null); Assert.That(doc.Lines[10].Certificates, Is.Null); Assert.That(doc.Lines[10].RegistryCost, Is.Null); Assert.That(doc.Lines[10].VitallyImportant, Is.Null); Assert.That(doc.Lines[10].SupplierPriceMarkup, Is.Null); }
public void FilterGetAllDocumentsIfNoOnlyNoParsedTest() { // Создаем поставщика var supplier = DataMother.CreateSupplier(); Save(supplier); var client = DataMother.CreateTestClientWithAddress(); Save(client); // Создаем много документов, чтобы не влезали на одну страницу for (int i = 0; i < 33; i++) { var documentLog = new DocumentReceiveLog(supplier); documentLog.ForClient = client; Save(documentLog); } // Создаем фильтр и устанавливаем параметр Только неразобранные var filter = new DocumentFilter(); filter.Supplier = supplier; filter.OnlyNoParsed = true; var documents = filter.Find(session); // должны получить документы в количестве равном одной странице Assert.That(documents.Count, Is.EqualTo(filter.PageSize)); // ищем все документы filter.OnlyNoParsed = false; documents = filter.Find(session); // должны получить документы в количестве большем одной страницы Assert.That(documents.Count, Is.GreaterThan(filter.PageSize)); }
public void Parse2() { var documentLog = new DocumentReceiveLog { Supplier = new Supplier { Id = 7815u } }; var doc = WaybillParser.Parse("М0003927.dbf", documentLog); Assert.That(doc.Lines.Count, Is.EqualTo(9)); Assert.That(doc.ProviderDocumentId, Is.EqualTo("3927")); Assert.That(doc.DocumentDate.Value.ToShortDateString(), Is.EqualTo("23.03.2016")); var line = doc.Lines[0]; Assert.That(line.Code, Is.EqualTo("00000005090")); Assert.That(line.Product, Is.EqualTo("Бутылочка БУСИНКА пластик 125мл соска силикон")); Assert.That(line.Producer, Is.EqualTo("Бусинка")); Assert.That(line.Country, Is.EqualTo("КИТАЙ")); Assert.That(line.Quantity, Is.EqualTo(10)); Assert.That(line.SupplierCostWithoutNDS, Is.EqualTo(72.7970)); Assert.That(line.Nds, Is.EqualTo(18)); Assert.That(line.SupplierCost, Is.EqualTo(85.9000)); Assert.That(line.NdsAmount, Is.EqualTo(131.0300)); Assert.That(line.Amount, Is.EqualTo(859.0000)); Assert.That(line.Certificates, Is.EqualTo("RU.77.01.34.019.E.007822.10.12")); Assert.That(line.CertificatesEndDate.Value.ToShortDateString(), Is.EqualTo("01.01.2999")); Assert.That(line.CertificatesDate, Is.EqualTo("08.10.2012")); Assert.That(line.CertificateAuthority, Is.EqualTo("Таможенный союз от 08.10.2012")); Assert.That(line.Period, Is.EqualTo("30.12.2021")); }
public Document Parse(ISession session, string file, DocumentReceiveLog log) { Document doc = null; if (!string.IsNullOrEmpty(file) && new FileInfo(file).Extension.ToLower() == ".sst") { var document = new Document(log, nameof(WaybillSstParser)); doc = new WaybillSstParser().Parse(file, document); } if (doc == null) { var parsers = session.Query <PriceProcessor.Models.Parser>().Where(x => x.Supplier == log.Supplier).ToList(); doc = PriceProcessor.Models.Parser.Parse(log, file, parsers); } if (doc == null) { var parser = DetectParser(file, log); if (parser == null) { return(null); } var document = new Document(log, parser.GetType().Name); return(parser.Parse(file, document)); } return(doc); }
public void CertificateDetailsFileTest() { Client client = null; Supplier supplier = null; DocumentReceiveLog documentLogEntity = null; Document document = null; UpdateLogEntity updateEntity = null; Create_loaded_document_logs(out client, out supplier, out documentLogEntity, out document, out updateEntity); var sert = new CertificateRequestLog { Line = document.Lines[0], Update = updateEntity }; Save(sert); Open("Main/Stat"); Css("#StatisticsTD a").Click(); AssertText("Статистика по сертификатам"); Thread.Sleep(2000); AssertText(supplier.Name); browser.Link("ShowDocumentDetailsLink" + documentLogEntity.Id).Click(); Thread.Sleep(1000); AssertText("Код товара"); AssertText("Наименование"); AssertText("Производитель"); AssertText("Страна"); AssertText("Количество"); AssertText("Срок годности"); Thread.Sleep(2000); AssertText(document.Lines[0].Producer); AssertText(document.Lines[0].Country); }
/// <summary> /// Находит парсер отказов для отказа /// </summary> /// <param name="log">Лог, о получении документа</param> /// <returns>Парсер для отказа или null</returns> private static RejectParser GetRejectParser(DocumentReceiveLog log) { var parsername = log.Supplier.RejectParser; if (string.IsNullOrEmpty(parsername)) { return(null); } var assembly = Assembly.GetAssembly(typeof(DocumentReceiveLog)); var parser = assembly.GetTypes().FirstOrDefault(i => i.Name == parsername); if (parser == null) { throw new Exception(string.Format("Парсер {0} не был найден в сборке {1}", parsername, assembly.FullName)); } var obj = Activator.CreateInstance(parser); var rjparser = obj as RejectParser; if (rjparser == null) { throw new Exception( string.Format("Не удалось привести тип. Скорее всего {0} не является наследником класса RejectParser", parsername)); } return(rjparser); }
public void View_loaded_documents_details_from_user_update_history() { Client client = null; Supplier supplier = null; DocumentReceiveLog documentLogEntity = null; Document document = null; UpdateLogEntity updateEntity = null; Create_loaded_document_logs(out client, out supplier, out documentLogEntity, out document, out updateEntity); var user = client.Users[0]; Open(user); Click("История обновлений"); OpenedWindow(String.Format("История обновлений пользователя {0}", user.Login)); browser.Link("ShowUpdateDetailsLink" + updateEntity.Id).Click(); Thread.Sleep(2000); AssertText("Дата загрузки"); AssertText("Тип документа"); AssertText("Дата разбора"); AssertText("Имя файла"); AssertText("Статус"); AssertText("Разобран"); AssertText(supplier.Name); browser.Link("ShowDocumentDetailsLink" + documentLogEntity.Id).Click(); Check_document_view(document); }
public void Parse() { var documentLog = new DocumentReceiveLog { Supplier = new Supplier { Id = 11427 } }; // код поставщика ИП Покревский Assert.IsTrue(new WaybillFormatDetector().DetectParser(@"..\..\Data\Waybills\541_POKR.dbf", documentLog) is PokrevskySpecialParser); var document = WaybillParser.Parse(@"541_POKR.dbf", documentLog); Assert.That(document.Lines.Count, Is.EqualTo(16)); Assert.That(document.ProviderDocumentId, Is.EqualTo("541")); Assert.That(document.DocumentDate.Value.ToShortDateString(), Is.EqualTo("13.09.2011")); Assert.That(document.Lines[0].Code, Is.EqualTo("2426")); Assert.That(document.Lines[0].Product, Is.EqualTo("Козинак 4злака \"Арахис с изюмом\"100г")); Assert.That(document.Lines[0].Producer, Is.EqualTo("ТПО Диал")); Assert.That(document.Lines[0].Quantity, Is.EqualTo(2)); Assert.That(document.Lines[0].ProducerCostWithoutNDS, Is.EqualTo(26.32)); Assert.That(document.Lines[0].SupplierPriceMarkup, Is.EqualTo(3.00)); Assert.That(document.Lines[0].Nds, Is.EqualTo(0)); Assert.That(document.Lines[0].NdsAmount, Is.EqualTo(0.00)); Assert.That(document.Lines[0].SupplierCostWithoutNDS, Is.EqualTo(27.11)); Assert.That(document.Lines[0].Amount, Is.EqualTo(54.22)); Assert.That(document.Lines[0].SerialNumber, Is.Null); Assert.That(document.Lines[0].Certificates, Is.EqualTo("АЯ42.Н27564")); }
public void Parse_Katren_Ufa_with_column_vital() { var documentLog = new DocumentReceiveLog { Supplier = new Supplier { Id = 7146u } }; Assert.IsTrue(new WaybillFormatDetector().DetectParser(@"..\..\Data\Waybills\K_12345.dbf", documentLog) is Moron_338_SpecialParser); var document = WaybillParser.Parse(@"..\..\Data\Waybills\K_12345.dbf", documentLog); Assert.That(document.Lines.Count, Is.EqualTo(22)); Assert.That(document.ProviderDocumentId, Is.EqualTo("12345")); Assert.That(document.DocumentDate, Is.EqualTo(Convert.ToDateTime("22.01.2010"))); Assert.That(document.Lines[0].Code, Is.EqualTo("1126300")); Assert.That(document.Lines[0].Product, Is.EqualTo("АКРИДЕРМ СК 15,0 МАЗЬ")); Assert.That(document.Lines[0].Quantity, Is.EqualTo(1)); Assert.That(document.Lines[0].SupplierCostWithoutNDS, Is.EqualTo(68.5000)); Assert.That(document.Lines[0].Country, Is.EqualTo("россия")); Assert.That(document.Lines[0].Producer, Is.EqualTo("Акрихин ХФК ОАО")); Assert.That(document.Lines[0].Period, Is.EqualTo("01.10.2012")); Assert.That(document.Lines[0].ProducerCostWithoutNDS, Is.EqualTo(68.5000)); Assert.That(document.Lines[0].Certificates, Is.EqualTo("РОСС RU.ФМ01.Д03430")); Assert.That(document.Lines[0].RegistryCost, Is.EqualTo(0)); Assert.That(document.Lines[0].SupplierPriceMarkup, Is.EqualTo(0)); Assert.That(document.Lines[0].Nds.Value, Is.EqualTo(10)); Assert.That(document.Lines[0].SerialNumber, Is.EqualTo("501009")); Assert.That(document.Lines[0].SupplierCost, Is.EqualTo(75.35)); Assert.That(document.Lines[0].VitallyImportant, Is.False); Assert.That(document.Lines[1].VitallyImportant, Is.True); Assert.That(document.Lines[2].VitallyImportant, Is.False); }
public void ParseByRules_noRules() { session.Transaction.Begin(); var testAddress = session.Query <Address>().FirstOrDefault(s => s.Client.Id == TestRawClientId); var testSupplier = session.Query <Supplier>().FirstOrDefault(s => s.Id == TestRawSupplierId); //Создаем лог, а затем отказ var log = new DocumentReceiveLog(testSupplier, testAddress); //Имя файла должно быть задано, так как от него будет зависеть работа парсера - сам парсер не проверяет лог на то, что он отказный log.FileName = @"..\..\data\rejects\RuleRejectParserFix.dbf"; log.DocumentType = DocType.Reject; session.Save(log); session.Transaction.Commit(); session.Transaction.Begin(); //дирректория для удаления var pathToRemove = CopyToRightDirrectory(log); new WaybillService().ParseWaybill(new[] { log.Id }); var reject = session.Query <RejectHeader>().FirstOrDefault(s => s.Log.Id == log.Id); //Проверяем отсутствие отказа Assert.That(reject, Is.Null); if (Directory.Exists(pathToRemove)) { Directory.Delete(pathToRemove, true); } }
public void Parse_Katren_Ufa() { var documentLog = new DocumentReceiveLog { Supplier = new Supplier { Id = 7146u } }; Assert.IsTrue(new WaybillFormatDetector().DetectParser(@"..\..\Data\Waybills\K_69960.dbf", documentLog) is Moron_338_SpecialParser); var document = WaybillParser.Parse(@"..\..\Data\Waybills\K_69960.dbf", documentLog); Assert.That(document.Lines.Count, Is.EqualTo(21)); Assert.That(document.ProviderDocumentId, Is.EqualTo("69960")); Assert.That(document.DocumentDate, Is.EqualTo(Convert.ToDateTime("19.04.2010"))); Assert.That(document.Lines[0].Code, Is.EqualTo("410726")); Assert.That(document.Lines[0].Product, Is.EqualTo("АМОКСИКЛАВ 0,5+0,125 N15 ТАБЛ П/О")); Assert.That(document.Lines[0].Producer, Is.EqualTo("Лек Д.Д.")); Assert.That(document.Lines[0].Country, Is.EqualTo("словения")); Assert.That(document.Lines[0].Quantity, Is.EqualTo(1)); Assert.That(document.Lines[0].SupplierCost, Is.EqualTo(326.81)); Assert.That(document.Lines[0].SupplierCostWithoutNDS, Is.EqualTo(297.1)); Assert.That(document.Lines[0].ProducerCostWithoutNDS, Is.EqualTo(284.2500)); Assert.That(document.Lines[0].SupplierPriceMarkup, Is.EqualTo(4.5200)); Assert.That(document.Lines[0].Period, Is.EqualTo("01.01.2012")); Assert.That(document.Lines[0].VitallyImportant, Is.Null); Assert.That(document.Lines[0].Nds.Value, Is.EqualTo(10)); Assert.That(document.Lines[0].Certificates, Is.EqualTo("РОСС SI.ФМ08.Д55748")); Assert.That(document.Lines[0].RegistryCost, Is.EqualTo(284.2500)); Assert.That(document.Lines[0].SerialNumber, Is.EqualTo("AR5148")); }
public void Cleanup_file_name() { var log = new DocumentReceiveLog(new Supplier { Id = 7579, Name = "Надежда-Фарм Орел/Фарма Орел" }) { Address = new Address(new Client(), new LegalEntity(new Payer("тест"))) { Id = 2575 }, FileName = "test.txt", Id = 879, }; Directory.CreateDirectory(@".\2575\Waybills\"); var expectedFilename = @".\2575\Waybills\879_Надежда-Фарм Орел_Фарма Орел(test).txt"; FileHelper.Touch(expectedFilename); var filename = log.GetRemoteFileName(new AppConfig { AptBox = "." }); Assert.AreEqual(expectedFilename, filename); }
public FullDocument CreateTestDocument(Supplier supplier, Client client, DocumentReceiveLog documentLogEntity) { var document = new FullDocument { ClientCode = client.Id, DocumentDate = DateTime.Now.AddDays(-1), Supplier = supplier, ProviderDocumentId = "123", Log = documentLogEntity, AddressId = null, }; var documentLine = new DocumentLine { Certificates = "Test certificate", Code = "999", Country = "Test country", Nds = 10, Period = "01.10.2010", Producer = "Test producer", ProducerCost = 10.10M, VitallyImportant = true, Document = document, }; document.Lines = new List <DocumentLine> { documentLine }; session.Save(document); return(document); }
public void Parse() { var documentLog = new DocumentReceiveLog { Supplier = new Supplier { Id = 74u }, }; // код поставщика Империя-Фарма Assert.IsTrue(new WaybillFormatDetector().DetectParser(@"..\..\Data\Waybills\KZ069425_корр.txt", documentLog) is ImperiaFarmaSpecialParser2); var doc = WaybillParser.Parse("KZ069425_корр.txt", documentLog); Assert.That(doc.Lines.Count, Is.EqualTo(1)); Assert.That(doc.ProviderDocumentId, Is.EqualTo("КЗ069425")); Assert.That(doc.DocumentDate.Value.ToShortDateString(), Is.EqualTo("20.12.2011")); Assert.That(doc.Lines[0].Code, Is.EqualTo("305")); Assert.That(doc.Lines[0].Product, Is.EqualTo("Панзинорм форте 20000 №30")); Assert.That(doc.Lines[0].Producer, Is.EqualTo("КРКА д.д. Ново место")); Assert.That(doc.Lines[0].Country, Is.EqualTo("Словения")); Assert.That(doc.Lines[0].Quantity, Is.EqualTo(4)); Assert.That(doc.Lines[0].ProducerCostWithoutNDS, Is.EqualTo(104.76)); Assert.That(doc.Lines[0].SupplierCostWithoutNDS, Is.EqualTo(99.57)); Assert.That(doc.Lines[0].Nds, Is.EqualTo(10)); Assert.That(doc.Lines[0].NdsAmount, Is.EqualTo(39.83)); Assert.That(doc.Lines[0].SerialNumber, Is.EqualTo("N82575")); Assert.That(doc.Lines[0].Period, Is.EqualTo("01.05.2014")); Assert.That(doc.Lines[0].BillOfEntryNumber, Is.EqualTo("10130032/160911/0004842/1")); Assert.That(doc.Lines[0].Certificates, Is.EqualTo("POCC.SI.ФМ08.Д15539")); Assert.That(doc.Lines[0].CertificatesDate, Is.EqualTo("16.09.2011")); Assert.That(doc.Lines[0].RegistryCost, Is.EqualTo(104.94)); Assert.That(doc.Lines[0].Amount, Is.EqualTo(438.12)); Assert.That(doc.Lines[0].VitallyImportant, Is.True); }