コード例 #1
0
        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);
        }
コード例 #2
0
        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();
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
            }
        }