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 OnlyNoParsedWithSendLogsTest() { // создаем фильтр, устанавливаем в качестве параметра созданного поставщика и "искать только неразобранные" var filter = new DocumentFilter(); filter.Supplier = _supplier; filter.OnlyNoParsed = true; var documents = filter.Find(session); // Добавляем логи отправки _documentLog.SendLogs = new List <DocumentSendLog>(); _documentLog.SendLogs.Add(new DocumentSendLog(_client.Users[0], _documentLog)); _documentLog.SendLogs.Add(new DocumentSendLog(_client.Users[1], _documentLog)); Save(_documentLog.SendLogs); Save(_documentLog); // проверяем, что два сохраненных лога не дают дублирование документа var documentsWithSendLogs = filter.Find(session); Assert.That(documents.Count, Is.GreaterThan(0)); Assert.That(documents.Count, Is.EqualTo(documentsWithSendLogs.Count)); }
public void OnlyNoParcedWithFakeTest() { _documentLog.IsFake = true; Save(_documentLog); Flush(); // создаем фильтр, устанавливаем в качестве параметра созданного поставщика и "искать только неразобранные" var filter = new DocumentFilter(); filter.Supplier = _supplier; filter.OnlyNoParsed = true; // ищем var documents = filter.Find(session); // не должны получить сохраненный выше документ из-за установленного IsFake Assert.That(documents.Count, Is.EqualTo(0)); }
public void OnlyNoParcedWithDocumentTest() { // создаем фильтр, устанавливаем в качестве параметра созданного поставщика и "искать только неразобранные" var filter = new DocumentFilter(); filter.Supplier = _supplier; filter.OnlyNoParsed = true; // создаем документ для лога var document = DataMother.CreateTestDocument(_supplier, _client, _documentLog); Save(document); // не должны выбрать запись лога, так как уже есть документ var documents = filter.Find(session); Assert.That(documents.Count, Is.EqualTo(0)); }
public void Get_document_error_for_supplier() { var supplier = DataMother.CreateSupplier(); Save(supplier); var document = new DocumentReceiveLog(supplier); Save(document); Flush(); var filter = new DocumentFilter(); filter.Supplier = supplier; var documents = filter.Find(session); Assert.That(documents.Count, Is.GreaterThan(0)); Assert.That(documents.Any(d => d.Id == document.Id), Is.True, "должен быть {0} но есть {1}", document.Id, documents.Implode(d => d.Id)); }
public void Documents([ARDataBind("filter", AutoLoadBehavior.NullIfInvalidKey)] DocumentFilter filter) { if (filter.Client != null) { var clientUsers = DbSession.Load <Client>(filter.Client.Id).Users; if (clientUsers != null) { filter.StatMode = clientUsers.Count > 1; } } var sqlFormat = @" SELECT document_logs.RowId as Id, document_logs.LogTime as LogTime, document_logs.DocumentType as DocumentType, document_logs.FileName as FileName, document_logs.Addition as Addition, document_logs.DocumentSize as DocumentSize, analitFUpdates.UpdateId as SendUpdateId, documentHeaders.ProviderDocumentId as ProviderDocumentId, documentHeaders.DocumentDate as DocumentDate, IFNULL(documentHeaders.Id,IFNULL(reject.Id,NULL)) as DocumentId, IFNULL(documentHeaders.WriteTime,IFNULL(reject.WriteTime,NULL)) as DocumentWriteTime, IFNULL(documentHeaders.Parser,IFNULL(reject.Parser,NULL)) as Parser, services.Name as Supplier, suppliers.Id as SupplierId, servClients.Name as Client, clients.Id as ClientId, addresses.Address as Address, addresses.Enabled as AddressEnabled, services.HomeRegion as RegionName {0} FROM Logs.Document_logs document_logs inner join Customers.Suppliers suppliers on document_logs.FirmCode=suppliers.Id left outer join Customers.Services services on suppliers.Id=services.Id left outer join Customers.Clients clients on document_logs.ClientCode=clients.Id left outer join Customers.Services servClients on clients.Id=servClients.Id left outer join Customers.Addresses addresses on document_logs.AddressId=addresses.Id left outer join logs.AnalitFUpdates analitFUpdates on document_logs.SendUpdateId=analitFUpdates.UpdateId {1} left outer join documents.DocumentHeaders documentHeaders on document_logs.RowId=documentHeaders.DownloadId left outer join documents.rejectheaders reject on document_logs.RowId=reject.DownloadId WHERE document_logs.LogTime >= @LogTimeBegin and document_logs.LogTime <= @LogTimeEnd {2} ORDER BY LogTime desc; "; PropertyBag["filter"] = filter; var statModeFrom = ""; var statModeSelect = ""; if (!filter.StatMode) { statModeSelect = @", users.Login as Login, users.Id as LoginId, logsAnalitFUpdates.RequestTime as RequestTime, documentSendLogs.Id DeliveredId, documentSendLogs.FileDelivered as FileDelivered, documentSendLogs.DocumentDelivered as DocumentDelivered, documentSendLogs.SendDate as SendDate "; statModeFrom = @" left outer join Logs.DocumentSendLogs documentSendLogs on document_logs.RowId=documentSendLogs.DocumentId left outer join Customers.Users users on documentSendLogs.UserId=users.Id left outer join logs.AnalitFUpdates logsAnalitFUpdates on documentSendLogs.UpdateId=logsAnalitFUpdates.UpdateId "; } // если выставлен флаг "только не разобранные накладные" (OnlyNoParsed, для соответствующей страницы), используем фильтр, иначе sql прямой запрос if (filter.OnlyNoParsed) { PropertyBag["logEntities"] = filter.Find(DbSession); } else { var documentLogList = new List <DocumentLog>(); if (filter.Supplier != null) { documentLogList = DbSession.Connection.Query <DocumentLog>( string.Format(sqlFormat, statModeSelect, statModeFrom, "and document_logs.FirmCode = @SupplierId "), new { @LogTimeBegin = filter.Period.Begin, @LogTimeEnd = filter.Period.End.AddDays(1).AddSeconds(-1), @SupplierId = filter.Supplier.Id }).ToList(); } if (filter.Client != null) { documentLogList = DbSession.Connection.Query <DocumentLog>( string.Format(sqlFormat, statModeSelect, statModeFrom, "and document_logs.ClientCode = @ClientId "), new { @LogTimeBegin = filter.Period.Begin, @LogTimeEnd = filter.Period.End.AddDays(1).AddSeconds(-1), @ClientId = filter.Client.Id }).ToList(); } if (filter.User != null) { documentLogList = DbSession.Connection.Query <DocumentLog>( string.Format(sqlFormat, statModeSelect, statModeFrom, "and documentSendLogs.UserId = @UserId "), new { @LogTimeBegin = filter.Period.Begin, @LogTimeEnd = filter.Period.End.AddDays(1).AddSeconds(-1), @UserId = filter.User.Id }).ToList(); } PropertyBag["logEntities"] = documentLogList; } }
public static byte[] DocumentsLog(ISession session, DocumentFilter filter) { var book = new HSSFWorkbook(); var sheet = book.CreateSheet("Неразобранные накладные"); var row = 0; var headerStyle = NPOIExcelHelper.GetHeaderStype(book); var dataStyle = NPOIExcelHelper.GetDataStyle(book); var sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, "Неразобранные накладные", headerStyle); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, String.Format("Период: с {0} по {1}", filter.Period.Begin.ToString("dd.MM.yyyy"), filter.Period.End.ToString("dd.MM.yyyy")), book.CreateCellStyle()); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, String.Format("Дата подготовки отчета: {0}", DateTime.Now), book.CreateCellStyle()); sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, String.Format("Регион: {0}", filter.Region == null ? "Все" : filter.Region.Name), book.CreateCellStyle()); sheet.CreateRow(row++); var tableHeaderRow = row; sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, "Номер документа", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 1, "Дата получения", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 2, "Тип документа", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 3, "От поставщика", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 4, "Клиенту", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 5, "На адрес", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 6, "Название файла", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 7, "Размер", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 8, "Парсер", headerStyle); NPOIExcelHelper.FillNewCell(sheetRow, 9, "Комментарий", headerStyle); var items = filter.Find(session, true); foreach (var item in items) { sheetRow = sheet.CreateRow(row++); NPOIExcelHelper.FillNewCell(sheetRow, 0, item.Id.ToString(), dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 1, item.LogTime.ToString(), dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 2, BindingHelper.GetDescription(item.DocumentType), dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 3, item.Supplier, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 4, item.Client, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 5, item.Address, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 6, item.FileName, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 7, item.DocumentSize == null ? "" : ViewHelper.ConvertToUserFriendlySize(item.DocumentSize.Value), dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 8, item.Parser, dataStyle); NPOIExcelHelper.FillNewCell(sheetRow, 9, item.Addition, dataStyle); } // добавляем автофильтр sheet.SetAutoFilter(new CellRangeAddress(tableHeaderRow, row, 0, 9)); sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 9)); // устанавливаем ширину столбцов for (int i = 0; i < 10; i++) { sheet.SetColumnWidth(i, sheet.GetColumnWidth(i) * 2); } sheet.SetColumnWidth(5, sheet.GetColumnWidth(5) * 2); var buffer = new MemoryStream(); book.Write(buffer); return(buffer.ToArray()); }