public AuftragDO addPosition(final AuftragsPositionDO position) { ensureAndGetPositionen(); short number = 1; for (final AuftragsPositionDO pos : positionen) { if (pos.getNumber() >= number) { number = pos.getNumber(); number++; } } position.setNumber(number); position.setAuftrag(this); this.positionen.add(position); return this; }
final List<AuftragsPositionDO> auftragsPositions = auftrag.ensureAndGetPositionen(); final List<PaymentScheduleDO> paymentSchedules = auftrag.ensureAndGetPaymentSchedules();
@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); }