public synchronized int getAbgeschlossenNichtFakturiertAnzahl() { if (abgeschlossenNichtFakturiert != null) { return abgeschlossenNichtFakturiert; } final AuftragFilter filter = new AuftragFilter(); filter.getAuftragsStatuses().add(AuftragsStatus.ABGESCHLOSSEN); filter.setAuftragFakturiertFilterStatus(AuftragFakturiertFilterStatus.NICHT_FAKTURIERT); try { final List<AuftragDO> list = getList(filter, false); abgeschlossenNichtFakturiert = list != null ? list.size() : 0; return abgeschlossenNichtFakturiert; } catch (final Exception ex) { log.error("Exception ocurred while getting number of closed and not invoiced orders: " + ex.getMessage(), ex); // Exception e. g. if data-base update is needed. return 0; } }
private Integer getAuftragsPositionsPaymentType() { if (getSearchFilter().getAuftragsPositionsPaymentType() != null) { return getSearchFilter().getAuftragsPositionsPaymentType().ordinal(); } else { return -1; } }
@Override public PFUserDO getUser() { return getSearchFilter().getUser(); }
@Override public AuftragFilter reset() { searchString = ""; startDate = null; endDate = null; periodOfPerformanceStartDate = null; periodOfPerformanceEndDate = null; user = null; auftragsStatuses.clear(); auftragsPositionsArten.clear(); setAuftragFakturiertFilterStatus(null); setAuftragsPositionsPaymentType(null); return this; } }
myFilter = (AuftragFilter) filter; } else { myFilter = new AuftragFilter(filter); if (myFilter.getUser() != null) { queryFilter.add( Restrictions.or( Restrictions.eq("contactPerson", myFilter.getUser()), Restrictions.eq("projectManager", myFilter.getUser()), Restrictions.eq("headOfBusinessManager", myFilter.getUser()), Restrictions.eq("salesManager", myFilter.getUser()) if (myFilter.getAuftragsPositionsPaymentType() != null) { CollectionUtils.filter(list, object -> { final AuftragDO auftrag = (AuftragDO) object; boolean match = false; if (myFilter.getAuftragsPositionsPaymentType() != null) { if (CollectionUtils.isNotEmpty(auftrag.getPositionenExcludingDeleted()) == true) { for (final AuftragsPositionDO position : auftrag.getPositionenExcludingDeleted()) { if (myFilter.getAuftragsPositionsPaymentType() == position.getPaymentType()) { match = true; break;
@Test public void testPeriodOfPerformanceFilter() { logon(TEST_FINANCE_USER); auftragDao.save(createAuftragWithPeriodOfPerformance(2017, 4, 1, 2017, 4, 30)); auftragDao.save(createAuftragWithPeriodOfPerformance(2017, 4, 3, 2017, 4, 5)); auftragDao.save(createAuftragWithPeriodOfPerformance(2017, 3, 31, 2017, 5, 1)); auftragDao.save(createAuftragWithPeriodOfPerformance(2017, 3, 31, 2017, 4, 5)); auftragDao.save(createAuftragWithPeriodOfPerformance(2017, 3, 31, 2017, 5, 1)); auftragDao.save(createAuftragWithPeriodOfPerformance(2010, 1, 1, 2020, 12, 31)); final AuftragFilter auftragFilter = new AuftragFilter(); assertEquals(17, auftragDao.getList(auftragFilter).size()); setPeriodOfPerformanceStartDateAndEndDate(auftragFilter, 2017, 4, 1, 2017, 4, 30); assertEquals(6, auftragDao.getList(auftragFilter).size()); setPeriodOfPerformanceStartDateAndEndDate(auftragFilter, 2017, 4, 1, 2017, 4, 1); assertEquals(5, auftragDao.getList(auftragFilter).size()); auftragFilter.setPeriodOfPerformanceStartDate(null); assertEquals(5, auftragDao.getList(auftragFilter).size()); setPeriodOfPerformanceStartDateAndEndDate(auftragFilter, 2017, 4, 6, 2017, 4, 6); assertEquals(4, auftragDao.getList(auftragFilter).size()); auftragFilter.setPeriodOfPerformanceStartDate(null); assertEquals(6, auftragDao.getList(auftragFilter).size()); setPeriodOfPerformanceStartDateAndEndDate(auftragFilter, 2016, 1, 1, 2016, 1, 1); assertEquals(1, auftragDao.getList(auftragFilter).size()); auftragFilter.setPeriodOfPerformanceEndDate(null); assertEquals(6, auftragDao.getList(auftragFilter).size()); }
@Override protected List<AuftragsPositionDO> getChoices(final String input) { final AuftragFilter filter = new AuftragFilter(); filter.setSearchString(input); final List<AuftragDO> list = auftragDao.getList(filter); Collections.sort(list, new Comparator<AuftragDO>() { @Override public int compare(final AuftragDO o1, final AuftragDO o2) { return (o1.getNummer().compareTo(o2.getNummer())); } }); final List<AuftragsPositionDO> result = new ArrayList<AuftragsPositionDO>(); for (final AuftragDO auftrag : list) { if (auftrag.getPositionenExcludingDeleted() != null) { for (final AuftragsPositionDO pos : auftrag.getPositionenExcludingDeleted()) { result.add(pos); } } } return result; }
@Override protected AuftragFilter newSearchFilterInstance() { return new AuftragFilter(); }
private void addCriterionForAuftragsStatuses(final AuftragFilter myFilter, final QueryFilter queryFilter) { final Collection<AuftragsStatus> auftragsStatuses = myFilter.getAuftragsStatuses(); if (CollectionUtils.isEmpty(auftragsStatuses)) { // nothing to do return; } final List<Criterion> orCriterions = new ArrayList<>(); orCriterions.add(Restrictions.in("auftragsStatus", auftragsStatuses)); orCriterions.add(Restrictions.in("position.status", auftragsStatuses)); // special case if (auftragsStatuses.contains(AuftragsStatus.ABGESCHLOSSEN)) { orCriterions.add(Restrictions.eq("paymentSchedule.reached", true)); queryFilter.createAlias("paymentSchedules", "paymentSchedule", Criteria.FULL_JOIN); } queryFilter .createAlias("positionen", "position", Criteria.FULL_JOIN) .add(Restrictions.or(orCriterions.toArray(new Criterion[orCriterions.size()]))); // check deleted if (myFilter.isIgnoreDeleted() == false) { queryFilter.add(Restrictions.eq("position.deleted", myFilter.isDeleted())); } }
private void setAuftragsPositionsPaymentType(final Integer auftragsPositionsPaymentType) { if (auftragsPositionsPaymentType == null || auftragsPositionsPaymentType == -1) { getSearchFilter().setAuftragsPositionsPaymentType(null); } else { getSearchFilter().setAuftragsPositionsPaymentType(AuftragsPositionsPaymentType.values()[auftragsPositionsPaymentType]); } }
private Optional<Criterion> createCriterionForErfassungsDatum(final AuftragFilter myFilter) { final java.sql.Date startDate = DateHelper.convertDateToSqlDateInTheUsersTimeZone(myFilter.getStartDate()); final java.sql.Date endDate = DateHelper.convertDateToSqlDateInTheUsersTimeZone(myFilter.getEndDate()); if (startDate != null && endDate != null) { return Optional.of( Restrictions.between("erfassungsDatum", startDate, endDate) ); } if (startDate != null) { return Optional.of( Restrictions.ge("erfassungsDatum", startDate) ); } if (endDate != null) { return Optional.of( Restrictions.le("erfassungsDatum", endDate) ); } return Optional.empty(); }
private void filterFakturiert(final AuftragFilter myFilter, final List<AuftragDO> list) final AuftragFakturiertFilterStatus auftragFakturiertFilterStatus = myFilter.getAuftragFakturiertFilterStatus(); if (auftragFakturiertFilterStatus == null || auftragFakturiertFilterStatus == AuftragFakturiertFilterStatus.ALL) { vollstaendigFakturiert == false && myFilter.getAuftragsStatuses().contains(AuftragsStatus.ABGESCHLOSSEN)) {
private void filterPositionsArten(final AuftragFilter myFilter, final List<AuftragDO> list) { final Collection<AuftragsPositionsArt> auftragsPositionsArten = myFilter.getAuftragsPositionsArten(); if (CollectionUtils.isNotEmpty(auftragsPositionsArten)) { CollectionUtils.filter(list, object -> { final List<AuftragsPositionDO> positionen = ((AuftragDO) object).getPositionenExcludingDeleted(); // check if any of the current positions contains at least one AuftragsPositionsArt of the auftragsPositionsArten of the filter return CollectionUtils.isNotEmpty(positionen) && positionen.stream() .map(AuftragsPositionDO::getArt) .anyMatch(positionsArt -> auftragsPositionsArten.stream().anyMatch(art -> art == positionsArt)); }); } }
@Override public void onClick() { final List<AuftragDO> list = getList(); Calendar startDate = Calendar.getInstance(ThreadLocalUserContext.getTimeZone()); if (form != null && form.getSearchFilter() != null && form.getSearchFilter().getPeriodOfPerformanceStartDate() != null) { startDate.setTime(form.getSearchFilter().getPeriodOfPerformanceStartDate()); } else { startDate.set(Calendar.MONTH, 0); } byte[] xls = null; try { xls = forecastExport.export(list, startDate); } catch (Exception e) { log.error("Exception while creating forecast report: " + e.getMessage(), e); throw new UserException("error", e.getMessage() + "\n" + ExceptionUtils.getStackTrace(e)); } if (xls == null || xls.length == 0) { form.addError("datatable.no-records-found"); return; } final String filename = "ProjectForge-Forecast_" + DateHelper.getDateAsFilenameSuffix(new Date()) + ".xls"; DownloadUtils.setDownloadTarget(xls, filename); } }, getString("fibu.auftrag.forecastExportAsXls")).setTooltip(getString("fibu.auftrag.forecastExportAsXls.tooltip"));
private void checkNoAccess(final String who) { try { final AuftragFilter filter = new AuftragFilter(); auftragDao.getList(filter); fail("AccessException expected: " + who + " users should not have select list access to orders."); } catch (final AccessException ex) { // OK } }