@Override public List<AuftragDO> getList(final BaseSearchFilter filter) { return getList(filter, true); }
/** * Get all invoices and set the field fakturiertSum for every order of the given col. * * @param col * @see RechnungCache#getRechnungsPositionVOSetByAuftragsPositionId(Integer) */ public void calculateInvoicedSum(final Collection<AuftragDO> col) { if (col == null) { return; } for (final AuftragDO auftrag : col) { calculateInvoicedSum(auftrag); } }
private AuftragsStatistik getAuftragsStatistik() { if (auftragsStatistik == null) { auftragsStatistik = auftragDao.buildStatistik(getParentPage().getList()); } return auftragsStatistik; }
auftrag1.setNummer(auftragDao.getNextNumber(auftrag1)); auftragDao.setContactPerson(auftrag1, getUserId(TEST_PROJECT_MANAGER_USER)); auftrag1.addPosition(new AuftragsPositionDO()); final Serializable id1 = auftragDao.save(auftrag1); auftrag1 = auftragDao.getById(id1); auftragDao.update(auftrag1); fail("UserException expected: Only orders with state ABGESCHLOSSEN should be set as fully invoiced."); } catch (final UserException ex) { auftrag1 = auftragDao.getById(id1); auftrag1.setAuftragsStatus(AuftragsStatus.ABGESCHLOSSEN); auftragDao.update(auftrag1); auftrag1 = auftragDao.getById(id1); position.setVollstaendigFakturiert(true); try { auftragDao.update(auftrag1); fail("AccessException expected: Projectmanager should not able to set order as fully invoiced."); } catch (final AccessException ex) { position.setStatus(AuftragsPositionsStatus.ABGESCHLOSSEN); position.setVollstaendigFakturiert(true); auftragDao.update(auftrag1);
addCriterionForAuftragsStatuses(myFilter, queryFilter); createCriterionForErfassungsDatum(myFilter).ifPresent(queryFilter::add); list = getList(queryFilter); } else { list = internalGetList(queryFilter); filterFakturiert(myFilter, list); filterPositionsArten(myFilter, list);
final Integer next = getNextNumber(obj); if (next.intValue() != obj.getNummer().intValue()) { throw new UserException("fibu.auftrag.error.nummerIstNichtFortlaufend"); final List<RechnungDO> list = (List<RechnungDO>) getHibernateTemplate().find( "from AuftragDO r where r.nummer = ? and r.id <> ?", new Object[] { obj.getNummer(), obj.getId() }); validateDatesInPaymentScheduleWithinPeriodOfPerformanceOfPosition(obj); validateAmountsInPaymentScheduleNotGreaterThanNetSumOfPosition(obj);
auftrag.setNummer(auftragDao.getNextNumber(auftrag)); auftrag.setProjekt(projekt); auftrag.addPosition(new AuftragsPositionDO()); id = auftragDao.save(auftrag); auftrag = auftragDao.getById(id); auftrag = auftragDao.getById(id); fail("Access exception expected."); } catch (final AccessException ex) { logon(user); try { auftrag = auftragDao.getById(id); fail("Access exception expected."); } catch (final AccessException ex) { auftrag = auftragDao.getById(id); logon(TEST_ADMIN_USER); right.setValue(UserRightValue.PARTLYREADWRITE); auftrag = auftragDao.getById(id);
@Test public void getNextNumber() { logon(TEST_FINANCE_USER); AuftragDO auftrag = new AuftragDO(); auftrag.setNummer(auftragDao.getNextNumber(auftrag)); auftrag.addPosition(new AuftragsPositionDO()); auftragDao.save(auftrag); assertEquals(dbNumber++, auftrag.getNummer().intValue()); auftrag = new AuftragDO(); auftrag.setNummer(auftragDao.getNextNumber(auftrag)); auftrag.addPosition(new AuftragsPositionDO()); auftragDao.save(auftrag); assertEquals(dbNumber++, auftrag.getNummer().intValue()); }
/** * @see org.projectforge.web.fibu.ISelectCallerPage#select(String, Object) */ @Override public void select(final String property, final Object selectedValue) { if ("projektId".equals(property) == true) { auftragDao.setProjekt(getData(), (Integer) selectedValue); form.projektSelectPanel.getTextField().modelChanged(); if (getData().getProjektId() != null && getData().getProjektId() >= 0) { final ProjektDO projekt = projektDao.getById(getData().getProjektId()); form.setKundePmHobmAndSmIfEmpty(projekt, null); } } else if ("kundeId".equals(property) == true) { auftragDao.setKunde(getData(), (Integer) selectedValue); form.kundeSelectPanel.getTextField().modelChanged(); } else if ("contactPersonId".equals(property) == true) { auftragDao.setContactPerson(getData(), (Integer) selectedValue); setSendEMailNotification(); } else if (property.startsWith("taskId:") == true) { final Short number = NumberHelper.parseShort(property.substring(property.indexOf(':') + 1)); final AuftragsPositionDO pos = getData().getPosition(number); auftragDao.setTask(pos, (Integer) selectedValue); } else { log.error("Property '" + property + "' not supported for selection."); } }
private void checkNoWriteAccess(final Serializable id, final AuftragDO auftrag, final String who) { try { final AuftragDO auf = new AuftragDO(); final int number = auftragDao.getNextNumber(auf); auf.setNummer(number); auftragDao.save(auf); fail("AccessException expected: " + who + " users should not have save access to orders."); } catch (final AccessException ex) { // OK } try { auftrag.setBemerkung(who); auftragDao.update(auftrag); fail("AccessException expected: " + who + " users should not have update access to orders."); } catch (final AccessException ex) { // OK } }
@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()); }
private AuftragDO createAuftragWithPeriodOfPerformance(final int beginYear, final int beginMonth, final int beginDay, final int endYear, final int endMonth, final int endDay) { final AuftragDO auftrag = new AuftragDO(); auftrag.setNummer(auftragDao.getNextNumber(auftrag)); dbNumber++; auftrag.addPosition(new AuftragsPositionDO()); auftrag.setPeriodOfPerformanceBegin(java.sql.Date.valueOf(LocalDate.of(beginYear, beginMonth, beginDay))); auftrag.setPeriodOfPerformanceEnd(java.sql.Date.valueOf(LocalDate.of(endYear, endMonth, endDay))); return auftrag; } }
public AuftragEditPage(final PageParameters parameters) { super(parameters, "fibu.auftrag"); init(); if (isNew() == true && getData().getContactPerson() == null) { auftragDao.setContactPerson(getData(), getUser().getId()); } }
auftragDao.validateDatesInPaymentScheduleWithinPeriodOfPerformanceOfPosition(auftrag); } catch (UserException e) { exceptionThrown = true; auftragDao.validateDatesInPaymentScheduleWithinPeriodOfPerformanceOfPosition(auftrag); } catch (UserException e) { exceptionThrown = true;
@Test public void validateAmountsInPaymentScheduleNotGreaterThanNetSumOfPosition() { final AuftragDO auftrag = new AuftragDO(); final List<AuftragsPositionDO> auftragsPositions = auftrag.ensureAndGetPositionen(); final List<PaymentScheduleDO> paymentSchedules = auftrag.ensureAndGetPaymentSchedules(); auftragsPositions.add(new AuftragsPositionDO().setNumber((short) 1).setNettoSumme(new BigDecimal(2000))); auftragsPositions.add(new AuftragsPositionDO().setNumber((short) 2).setNettoSumme(new BigDecimal(5000))); paymentSchedules.add(new PaymentScheduleDO().setPositionNumber((short) 1).setAmount(new BigDecimal(1000))); paymentSchedules.add(new PaymentScheduleDO().setPositionNumber((short) 1).setAmount(null)); // should not cause a NPE paymentSchedules.add(new PaymentScheduleDO().setPositionNumber((short) 1).setAmount(new BigDecimal(1000))); paymentSchedules.add(new PaymentScheduleDO().setPositionNumber((short) 2).setAmount(new BigDecimal(2000))); paymentSchedules.add(new PaymentScheduleDO().setPositionNumber((short) 2).setAmount(new BigDecimal(2999))); boolean exceptionThrown = false; try { auftragDao.validateAmountsInPaymentScheduleNotGreaterThanNetSumOfPosition(auftrag); } catch (UserException e) { exceptionThrown = true; } assertFalse(exceptionThrown); // amounts of position 1 (2001) will now be greater than netto summe (2000) -> should throw exception paymentSchedules.add(new PaymentScheduleDO().setPositionNumber((short) 1).setAmount(new BigDecimal(1))); try { auftragDao.validateAmountsInPaymentScheduleNotGreaterThanNetSumOfPosition(auftrag); } catch (UserException e) { exceptionThrown = true; } assertTrue(exceptionThrown); }
auftrag1.setNummer(auftragDao.getNextNumber(auftrag1)); auftragDao.setContactPerson(auftrag1, getUserId(TEST_FINANCE_USER)); Serializable id1; try { id1 = auftragDao.save(auftrag1); fail("UserException expected: Order should have positions."); } catch (final UserException ex) { id1 = auftragDao.save(auftrag1); auftrag1 = auftragDao.getById(id1); auftrag2.setNummer(auftragDao.getNextNumber(auftrag2)); auftragDao.setContactPerson(auftrag2, getUserId(TEST_PROJECT_MANAGER_USER)); auftrag2.addPosition(new AuftragsPositionDO()); final Serializable id2 = auftragDao.save(auftrag2); auftrag3.setNummer(auftragDao.getNextNumber(auftrag3)); auftragDao.setContactPerson(auftrag3, getUserId(TEST_PROJECT_MANAGER_USER)); final DateHolder date = new DateHolder(); date.add(Calendar.YEAR, -6); // 6 years old. position.setStatus(AuftragsPositionsStatus.ABGESCHLOSSEN); auftrag3.addPosition(position); final Serializable id3 = auftragDao.save(auftrag3); auftragDao.getById(id1); fail("AccessException expected: Projectmanager should not have access to foreign orders."); } catch (final AccessException ex) {
projekt1 = projektDao.getById(id); AuftragDO auftrag1 = new AuftragDO(); auftrag1.setNummer(auftragDao.getNextNumber(auftrag1)); auftrag1.setProjekt(projekt1); auftrag1.addPosition(new AuftragsPositionDO()); id = auftragDao.save(auftrag1); auftrag1 = auftragDao.getById(id); projekt2 = projektDao.getById(id); AuftragDO auftrag2 = new AuftragDO(); auftrag2.setNummer(auftragDao.getNextNumber(auftrag2)); auftrag2.setProjekt(projekt2); auftrag2.addPosition(new AuftragsPositionDO()); id = auftragDao.save(auftrag2); auftrag2 = auftragDao.getById(id);
auftragsPosition.setTitel("Pos 2"); auftrag.addPosition(auftragsPosition); auftrag.setNummer(auftragDao.getNextNumber(auftrag)); auftragDao.save(auftrag);
@Override public AbstractSecuredBasePage onSaveOrUpdate() { if (getData().getNummer() == null) { getData().setNummer(auftragDao.getNextNumber(getData())); } if (getData().getKunde() != null) { getData().setKundeText(null); } return null; }
@Override protected void onPreEdit() { final AuftragDO auftrag = getData(); if (auftrag.getId() == null) { if (auftrag.getAngebotsDatum() == null) { final LocalDate today = LocalDate.now(); auftrag.setAngebotsDatum(java.sql.Date.valueOf(today)); auftrag.setErfassungsDatum(java.sql.Date.valueOf(today)); auftrag.setEntscheidungsDatum(java.sql.Date.valueOf(today)); } if (auftrag.getContactPersonId() == null && accessChecker.isLoggedInUserMemberOfGroup(ProjectForgeGroup.PROJECT_MANAGER)) { auftragDao.setContactPerson(auftrag, getUser().getId()); form.setSendEMailNotification(false); } } else if (auftrag.getErfassungsDatum() == null) { if (auftrag.getCreated() != null) { auftrag.setErfassungsDatum(DateHelper.convertDateToSqlDateInTheUsersTimeZone(auftrag.getCreated())); } else if (auftrag.getAngebotsDatum() != null) { auftrag.setErfassungsDatum((java.sql.Date) auftrag.getAngebotsDatum().clone()); } else { auftrag.setErfassungsDatum(java.sql.Date.valueOf(LocalDate.now())); } } else { setSendEMailNotification(); } auftrag.recalculate(); }