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));
        }
Exemple #2
0
        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));
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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"));
        }
Exemple #7
0
        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));
        }
Exemple #13
0
        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);
        }
Exemple #21
0
        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);
        }
Exemple #23
0
        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);
        }
Exemple #24
0
        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"));
        }
Exemple #25
0
        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);
            }
        }
Exemple #27
0
        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"));
        }
Exemple #28
0
        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);
        }
Exemple #30
0
        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);
        }