protected IQueryOver <CollectiveExpense> QueryCollectiveExpenseDoc(IUnitOfWork uow) { if (Filter.StokDocumentType != null && Filter.StokDocumentType != StokDocumentType.CollectiveExpense) { return(null); } CollectiveExpense collectiveExpenseAlias = null; var collectiveExpenseQuery = uow.Session.QueryOver <CollectiveExpense>(() => collectiveExpenseAlias); if (Filter.StartDate.HasValue) { collectiveExpenseQuery.Where(o => o.Date >= Filter.StartDate.Value); } if (Filter.EndDate.HasValue) { collectiveExpenseQuery.Where(o => o.Date < Filter.EndDate.Value.AddDays(1)); } if (Filter.Warehouse != null) { collectiveExpenseQuery.Where(x => x.Warehouse == Filter.Warehouse); } collectiveExpenseQuery.Where(GetSearchCriterion( () => collectiveExpenseAlias.Id, () => authorAlias.Name, () => issuanceSheetAlias.Id )); collectiveExpenseQuery .JoinAlias(() => collectiveExpenseAlias.CreatedbyUser, () => authorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => collectiveExpenseAlias.Warehouse, () => warehouseExpenseAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .Left.JoinAlias(() => collectiveExpenseAlias.IssuanceSheet, () => issuanceSheetAlias) .SelectList(list => list .Select(() => collectiveExpenseAlias.Id).WithAlias(() => resultAlias.Id) .Select(() => collectiveExpenseAlias.Date).WithAlias(() => resultAlias.Date) .Select(() => issuanceSheetAlias.Id).WithAlias(() => resultAlias.IssueSheetId) .Select(() => authorAlias.Name).WithAlias(() => resultAlias.Author) .Select(() => warehouseExpenseAlias.Name).WithAlias(() => resultAlias.ExpenseWarehouse) .Select(() => collectiveExpenseAlias.Comment).WithAlias(() => resultAlias.Comment) .Select(() => StokDocumentType.CollectiveExpense).WithAlias(() => resultAlias.DocTypeEnum) .Select(() => collectiveExpenseAlias.CreationDate).WithAlias(() => resultAlias.CreationDate) ) .OrderBy(() => collectiveExpenseAlias.Date).Desc .ThenBy(() => collectiveExpenseAlias.CreationDate).Desc .TransformUsing(Transformers.AliasToBean <StockDocumentsJournalNode>()); return(collectiveExpenseQuery); }
public void GetReferencedDocuments_CollectiveExpenseTest() { var interactive = Substitute.For <IInteractiveQuestion>(); interactive.Question(string.Empty).ReturnsForAnyArgs(true); var baseParameters = Substitute.For <BaseParameters>(); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var protectionTools = new ProtectionTools { Name = "Тестовая курточка" }; uow.Save(protectionTools); var nomenclatureType = new ItemsType { Name = "Тестовый тип номенклатуры" }; uow.Save(nomenclatureType); var nomenclature = new Nomenclature { Type = nomenclatureType }; nomenclature.ProtectionTools.Add(protectionTools); uow.Save(nomenclature); var norm = new Norm(); norm.AddItem(protectionTools); uow.Save(norm); var employee = new EmployeeCard(); employee.AddUsedNorm(norm); uow.Save(employee); var employee2 = new EmployeeCard(); employee2.AddUsedNorm(norm); uow.Save(employee2); var expense = new CollectiveExpense() { Date = new DateTime(2021, 9, 10), Warehouse = warehouse, }; var size = new Size(); var height = new Size(); uow.Save(size); uow.Save(height); var stockPosition = new StockPosition(nomenclature, 0, size, height); var item = expense.AddItem(employee.WorkwearItems.FirstOrDefault(), stockPosition, 1); var item2 = expense.AddItem(employee2.WorkwearItems.FirstOrDefault(), stockPosition, 10); expense.UpdateOperations(uow, baseParameters, interactive); uow.Save(expense); uow.Commit(); var repository = new EmployeeIssueRepository(uow); var results = repository .GetReferencedDocuments(item.EmployeeIssueOperation.Id, item2.EmployeeIssueOperation.Id); var result1 = results.First(x => x.OperationId == item.EmployeeIssueOperation.Id); Assert.That(result1.DocumentType, Is.EqualTo(StokDocumentType.CollectiveExpense)); Assert.That(result1.DocumentId, Is.EqualTo(expense.Id)); Assert.That(result1.ItemId, Is.EqualTo(item.Id)); var result2 = results.First(x => x.OperationId == item2.EmployeeIssueOperation.Id); Assert.That(result2.DocumentType, Is.EqualTo(StokDocumentType.CollectiveExpense)); Assert.That(result2.DocumentId, Is.EqualTo(expense.Id)); Assert.That(result2.ItemId, Is.EqualTo(item2.Id)); } }