public void ConvertWaybillToDBFWithAssortmentCodes()
        {
            var doc = WaybillParser.Parse("9046752.DBF");

            settings.IsConvertFormat    = true;
            settings.AssortimentPriceId = price.Id;
            settings.Save();
            var order   = TestOrder.FindFirst();
            var address = Address.Find(client.Addresses[0].Id);
            var log     = new DocumentReceiveLog {
                Supplier     = Supplier.Find(supplier.Id),
                ClientCode   = settings.Id,
                Address      = address,
                MessageUid   = 123,
                DocumentSize = 100
            };

            doc.Log        = log;
            doc.OrderId    = order.Id;
            doc.Address    = address;
            doc.FirmCode   = log.Supplier.Id;
            doc.ClientCode = (uint)log.ClientCode;

            doc.SetProductId();

            var path = Path.GetDirectoryName(log.GetRemoteFileNameExt());

            Directory.Delete(path, true);

            Exporter.ConvertIfNeeded(doc, WaybillSettings.Find(doc.ClientCode));

            var files_dbf = Directory.GetFiles(path, "*.dbf");

            Assert.That(files_dbf.Count(), Is.EqualTo(1));
            var file_dbf = files_dbf[0];
            var data     = Dbf.Load(file_dbf, Encoding.GetEncoding(866));

            Assert.That(data.Rows.Count, Is.EqualTo(45));
            Assert.IsTrue(data.Columns.Contains("ID_ARTIS"));
            Assert.IsTrue(data.Columns.Contains("NAME_ARTIS"));
            Assert.IsTrue(data.Columns.Contains("NAME_POST"));
            Assert.That(data.Rows[0]["NAME_POST"], Is.EqualTo("Амоксициллин 500мг таб. Х20 (R)"));
            Assert.That(data.Rows[1]["NAME_POST"], Is.EqualTo("Андипал Таб Х10"));

            Assert.That(data.Rows[0]["ID_ARTIS"], Is.Not.EqualTo("100208"));
            Assert.That(data.Rows[0]["NAME_ARTIS"], Is.Not.EqualTo("МилдронатR р-р д/ин., 10 % 5 мл № 10"));

            Assert.That(data.Rows[1]["ID_ARTIS"], Is.Not.EqualTo("100208"));
            Assert.That(data.Rows[1]["NAME_ARTIS"], Is.Not.EqualTo("МилдронатR р-р д/ин., 10 % 5 мл № 10"));
        }
        public void Document_invoice_test()
        {
            var settings = TestDrugstoreSettings.FindFirst();
            var order    = TestOrder.FindFirst();

            var log = new DocumentReceiveLog {
                Supplier     = appSupplier,
                ClientCode   = settings.Id,
                Address      = address,
                MessageUid   = 123,
                DocumentSize = 100
            };

            var doc = new Document(log)
            {
                OrderId      = order.Id,
                DocumentDate = DateTime.Now
            };
            var inv = doc.SetInvoice();

            inv.BuyerName = "Тестовый покупатель";

            log.Save();
            doc.Save();

            var doc2 = Document.Find(doc.Id);

            Assert.That(doc2, Is.Not.Null);
            Assert.That(doc2.Invoice, Is.Not.Null);
            Assert.That(doc2.Invoice.Id, Is.EqualTo(doc.Id));
            Assert.That(doc2.Invoice.BuyerName, Is.EqualTo("Тестовый покупатель"));

            var inv2 = Invoice.Find(doc.Id);

            Assert.That(inv2, Is.Not.Null);
            Assert.That(inv2.Id, Is.EqualTo(doc.Id));
            Assert.That(inv2.Document, Is.Not.Null);
            Assert.That(inv2.Document.Id, Is.EqualTo(doc.Id));
            Assert.That(inv2.Document.Address.Id, Is.EqualTo(doc.Address.Id));
            Assert.That(inv2.BuyerName, Is.EqualTo("Тестовый покупатель"));
        }