Exemplo n.º 1
0
        protected override IQueryOver <IssuanceSheet> ItemsQuery(IUnitOfWork uow)
        {
            IssuanceSheetJournalNode resultAlias = null;

            IssuanceSheet     issuanceSheetAlias     = null;
            IssuanceSheetItem issuanceSheetItemAlias = null;
            Organization      organizationAlias      = null;
            Subdivision       subdivisionAlias       = null;
            EmployeeCard      employeeCardAlias      = null;

            var employeesSubquery = QueryOver.Of <IssuanceSheetItem>(() => issuanceSheetItemAlias)
                                    .Where(() => issuanceSheetItemAlias.IssuanceSheet.Id == issuanceSheetAlias.Id)
                                    .JoinQueryOver(x => x.Employee, () => employeeCardAlias)
                                    .Select(CustomProjections
                                            .GroupConcat(Projections
                                                         .Property(() => employeeCardAlias.LastName), useDistinct: true, separator: ", "));

            var query = uow.Session.QueryOver <IssuanceSheet>(() => issuanceSheetAlias);

            if (Filter.StartDate != null)
            {
                query.Where(x => x.Date >= Filter.StartDate);
            }
            if (Filter.EndDate != null)
            {
                query.Where(x => x.Date <= Filter.EndDate);
            }

            return(query
                   .Where(GetSearchCriterion(
                              () => issuanceSheetAlias.Id,
                              () => issuanceSheetAlias.Expense.Id,
                              () => issuanceSheetAlias.CollectiveExpense.Id,
                              () => organizationAlias.Name,
                              () => subdivisionAlias.Name,
                              () => subdivisionAlias.Code
                              ))
                   .Left.JoinAlias(s => s.Organization, () => organizationAlias)
                   .Left.JoinAlias(s => s.Subdivision, () => subdivisionAlias)
                   .SelectList((list) => list
                               .Select(x => x.Id).WithAlias(() => resultAlias.Id)
                               .Select(x => x.Date).WithAlias(() => resultAlias.Date)
                               .Select(() => organizationAlias.Name).WithAlias(() => resultAlias.Organigation)
                               .Select(() => subdivisionAlias.Name).WithAlias(() => resultAlias.Subdivision)
                               .Select(() => subdivisionAlias.Code).WithAlias(() => resultAlias.SubdivisionCode)
                               .Select(x => x.Expense.Id).WithAlias(() => resultAlias.DocExpenseId)
                               .Select(x => x.CollectiveExpense.Id).WithAlias(() => resultAlias.DocCollectiveExpenseId)
                               .SelectSubQuery(employeesSubquery).WithAlias(() => resultAlias.Employees)
                               )
                   .OrderBy(() => issuanceSheetAlias.Date).Desc
                   .ThenBy(() => issuanceSheetAlias.Id).Desc
                   .TransformUsing(Transformers.AliasToBean <IssuanceSheetJournalNode>()));
        }
        void NomenclatureJournal_OnSelectResult(object sender, QS.Project.Journal.JournalSelectedEventArgs e)
        {
            var nomeclatures = UoW.GetById <Nomenclature>(e.SelectedObjects.Select(x => x.GetId()));

            foreach (var nomenclature in nomeclatures)
            {
                var item = new IssuanceSheetItem {
                    IssuanceSheet = Entity,
                    Nomenclature  = nomenclature,
                    StartOfUse    = Entity.Date,
                    Amount        = 1,
                    Lifetime      = 12,
                };
                Entity.ObservableItems.Add(item);
            }
        }