private TestWaybillLine CreateBodyLine(string serialNumber = null, TestProduct product = null) { var user = TestUser.Queryable.First(u => u.AvaliableAddresses.Count > 0); if (product == null) { product = TestProduct.Queryable.First(); } var documentLog = new TestDocumentLog(testSupplier, user.Client) { FileName = Path.GetRandomFileName() + ".txt" }; var document = new TestWaybill(documentLog); var documentLine = new TestWaybillLine { Waybill = document, SerialNumber = serialNumber, CatalogProduct = product }; document.Lines = new List <TestWaybillLine>(); document.Lines.Add(documentLine); document.Save(); Assert.That(document.Lines.Count, Is.EqualTo(1)); Assert.That(document.Lines[0].Id, Is.GreaterThan(0)); return(documentLine); }
public override void Execute(ISession session) { var random = new Random(); var user = User(session); var order = session.Query <TestOrder>().Where(o => o.User == user) .OrderByDescending(o => o.WriteTime) .FirstOrDefault(); if (order == null) { throw new Exception("Не заказов для формирования накладной"); } var log = new TestDocumentLog(order.Price.Supplier, order.Address); Waybill = new TestWaybill(log); session.Save(Waybill); session.Save(new TestDocumentSendLog(user, log)); foreach (var orderline in order.Items) { var line = new TestWaybillLine(Waybill); line.Product = orderline.Product.FullName; line.Quantity = orderline.Quantity; line.SupplierCost = (decimal?)orderline.Cost; line.Period = DateTime.Today.AddDays(random.Next(5 * 365)).ToShortDateString(); Waybill.Lines.Add(line); session.Save(line); session.CreateSQLQuery("insert into Documents.WaybillOrders(DocumentLineId, OrderLineId) values (:documentLineId, :orderLineId)") .SetParameter("documentLineId", line.Id) .SetParameter("orderLineId", orderline.Id) .ExecuteUpdate(); } }
private TestWaybillLine CreateBodyLine() { var documentLog = new TestDocumentLog { Supplier = testSupplier, Client = testUser.Client, DocumentType = DocumentType.Waybill, LogTime = DateTime.Now, FileName = Path.GetRandomFileName() + ".txt" }; var document = new TestWaybill(documentLog); var documentLine = new TestWaybillLine(); documentLine.Waybill = document; document.Lines.Add(documentLine); using (new TransactionScope()) { document.Save(); } Assert.That(document.Lines.Count, Is.EqualTo(1)); Assert.That(document.Lines[0].Id, Is.GreaterThan(0)); return(documentLine); }
public override void Execute(ISession session) { var user = User(session); IQueryable <TestWaybillLine> lines = session.Query <TestWaybillLine>().OrderByDescending(x => x.Id); if (Waybill != null) { lines = session.Query <TestWaybillLine>().Where(l => l.Waybill.Id == Waybill.Id); } Line = lines.FirstOrDefault(l => l.Waybill.Client == user.Client && l.CatalogProduct != null && l.SerialNumber != null); if (Line == null) { throw new Exception("Нет ни одной подходящей накладной для создания сертификата"); } var source = session.Query <TestCertificateSource>().FirstOrDefault(s => s.Suppliers.Contains(Line.Waybill.Supplier)); if (source == null) { source = new TestCertificateSource(Line.Waybill.Supplier); session.Save(source); } Line.Certificate = null; var existsCert = session.Query <TestCertificate>() .FirstOrDefault(c => c.CatalogProduct == Line.CatalogProduct.CatalogProduct && c.SerialNumber == Line.SerialNumber); if (existsCert != null) { session.Query <TestWaybillLine>().Where(c => c.Certificate == existsCert).Each(l => l.Certificate = null); session.Delete(existsCert); session.Flush(); } var cert = new TestCertificate(Line.CatalogProduct.CatalogProduct, Line.SerialNumber); var file = new TestCertificateFile(source) { Extension = ".gif" }; cert.NewFile(file); session.Save(cert); Line.Certificate = cert; //если тесты запускать несколько раз с перезаливкой базы то id будет одинаковый File.Copy(Path.Combine(DbHelper.GetRoot(), "assets", "certificate.gif"), Path.Combine(Config.CertificatesPath, file.Id + ".gif"), true); if (Verbose) { Console.WriteLine("Для строки {0} накладной {1} создан сертификат", Line.Product, Line.Waybill.Log.Id); } }