@Test public void validateAmountsInPaymentScheduleNotGreaterThanNetSumOfPosition() { final AuftragDO auftrag = new AuftragDO(); final List<AuftragsPositionDO> auftragsPositions = auftrag.ensureAndGetPositionen(); final List<PaymentScheduleDO> paymentSchedules = auftrag.ensureAndGetPaymentSchedules(); AuftragsPositionDO pos1 = new AuftragsPositionDO(); pos1.setNumber((short) 1); pos1.setNettoSumme(new BigDecimal(2000)); AuftragsPositionDO pos2 = new AuftragsPositionDO(); pos2.setNumber((short) 2); pos2.setNettoSumme(new BigDecimal(5000)); auftragsPositions.add(pos1); auftragsPositions.add(pos2); PaymentScheduleDO paymentSchedule = new PaymentScheduleDO(); paymentSchedule.setPositionNumber((short) 1); paymentSchedule.setAmount(new BigDecimal(1000)); paymentSchedules.add(paymentSchedule); paymentSchedule = new PaymentScheduleDO(); paymentSchedule.setPositionNumber((short) 1); paymentSchedule.setAmount(null); paymentSchedules.add(paymentSchedule); paymentSchedule = new PaymentScheduleDO(); paymentSchedule.setPositionNumber((short) 1); paymentSchedule.setAmount(new BigDecimal(1000)); paymentSchedules.add(paymentSchedule); paymentSchedule = new PaymentScheduleDO(); paymentSchedule.setPositionNumber((short) 2); paymentSchedule.setAmount(new BigDecimal(2000)); paymentSchedules.add(paymentSchedule); paymentSchedule = new PaymentScheduleDO(); paymentSchedule.setPositionNumber((short) 2); paymentSchedule.setAmount(new BigDecimal(2999)); paymentSchedules.add(paymentSchedule); boolean exceptionThrown = false; try { auftragDao.validateAmountsInPaymentScheduleNotGreaterThanNetSumOfPosition(auftrag); } catch (UserException e) { exceptionThrown = true; } assertFalse(exceptionThrown); paymentSchedule = new PaymentScheduleDO(); paymentSchedule.setPositionNumber((short) 1); paymentSchedule.setAmount(new BigDecimal(1)); paymentSchedules.add(paymentSchedule); try { auftragDao.validateAmountsInPaymentScheduleNotGreaterThanNetSumOfPosition(auftrag); } catch (UserException e) { exceptionThrown = true; } assertTrue(exceptionThrown); }
void validateAmountsInPaymentScheduleNotGreaterThanNetSumOfPosition(final AuftragDO auftrag) { final List<PaymentScheduleDO> paymentSchedules = auftrag.getPaymentSchedules(); if (paymentSchedules == null) { return; } for (final AuftragsPositionDO pos : auftrag.getPositionenExcludingDeleted()) { final BigDecimal sumOfAmountsForCurrentPosition = paymentSchedules.stream() .filter(payment -> payment.getPositionNumber() == pos.getNumber()) .map(PaymentScheduleDO::getAmount) .filter(Objects::nonNull) .reduce(BigDecimal.ZERO, BigDecimal::add); final BigDecimal netSum = pos.getNettoSumme(); if (netSum != null && netSum.compareTo(BigDecimal.ZERO) > 0 && sumOfAmountsForCurrentPosition.compareTo(netSum) > 0) { throw new UserException("fibu.auftrag.error.amountsInPaymentScheduleAreGreaterThanNetSumOfPosition", pos.getNumber()); } } }
AuftragDao extends BaseDao<AuftragDO> { void validateAmountsInPaymentScheduleNotGreaterThanNetSumOfPosition(final AuftragDO auftrag) { final List<PaymentScheduleDO> paymentSchedules = auftrag.getPaymentSchedules(); if (paymentSchedules == null) { return; } for (final AuftragsPositionDO pos : auftrag.getPositionenExcludingDeleted()) { final BigDecimal sumOfAmountsForCurrentPosition = paymentSchedules.stream() .filter(payment -> payment.getPositionNumber() == pos.getNumber()) .map(PaymentScheduleDO::getAmount) .filter(Objects::nonNull) .reduce(BigDecimal.ZERO, BigDecimal::add); final BigDecimal netSum = pos.getNettoSumme(); if (netSum != null && netSum.compareTo(BigDecimal.ZERO) > 0 && sumOfAmountsForCurrentPosition.compareTo(netSum) > 0) { throw new UserException("fibu.auftrag.error.amountsInPaymentScheduleAreGreaterThanNetSumOfPosition", pos.getNumber()); } } } }
AuftragDao extends BaseDao<AuftragDO> { void validateAmountsInPaymentScheduleNotGreaterThanNetSumOfPosition(final AuftragDO auftrag) { final List<PaymentScheduleDO> paymentSchedules = auftrag.getPaymentSchedules(); if (paymentSchedules == null) { return; } for (final AuftragsPositionDO pos : auftrag.getPositionenExcludingDeleted()) { final BigDecimal sumOfAmountsForCurrentPosition = paymentSchedules.stream() .filter(payment -> payment.getPositionNumber() == pos.getNumber()) .map(PaymentScheduleDO::getAmount) .filter(Objects::nonNull) .reduce(BigDecimal.ZERO, BigDecimal::add); final BigDecimal netSum = pos.getNettoSumme(); if (netSum != null && netSum.compareTo(BigDecimal.ZERO) > 0 && sumOfAmountsForCurrentPosition.compareTo(netSum) > 0) { throw new UserException("fibu.auftrag.error.amountsInPaymentScheduleAreGreaterThanNetSumOfPosition", pos.getNumber()); } } } AuftragDao(); }
AuftragDao extends BaseDao<AuftragDO> { void validateAmountsInPaymentScheduleNotGreaterThanNetSumOfPosition(final AuftragDO auftrag) { final List<PaymentScheduleDO> paymentSchedules = auftrag.getPaymentSchedules(); if (paymentSchedules == null) { return; } for (final AuftragsPositionDO pos : auftrag.getPositionenExcludingDeleted()) { final BigDecimal sumOfAmountsForCurrentPosition = paymentSchedules.stream() .filter(payment -> payment.getPositionNumber() == pos.getNumber()) .map(PaymentScheduleDO::getAmount) .filter(Objects::nonNull) .reduce(BigDecimal.ZERO, BigDecimal::add); final BigDecimal netSum = pos.getNettoSumme(); if (netSum != null && netSum.compareTo(BigDecimal.ZERO) > 0 && sumOfAmountsForCurrentPosition.compareTo(netSum) > 0) { throw new UserException("fibu.auftrag.error.amountsInPaymentScheduleAreGreaterThanNetSumOfPosition", pos.getNumber()); } } } AuftragDao(); void registerTaskTree(final TaskTree taskTree); @Override String[] getAdditionalSearchFields(); int[] getYears(); Map<Integer, Set<AuftragsPositionVO>> getTaskReferences(); AuftragsStatistik buildStatistik(final List<AuftragDO> list); void calculateInvoicedSum(final Collection<AuftragDO> col); void calculateInvoicedSum(final AuftragDO order); void setContactPerson(final AuftragDO auftrag, final Integer contactPersonId); void setTask(final AuftragsPositionDO position, final Integer taskId); void setKunde(final AuftragDO auftrag, final Integer kundeId); void setProjekt(final AuftragDO auftrag, final Integer projektId); AuftragsPositionDO getAuftragsPosition(final String posString); synchronized int getAbgeschlossenNichtFakturiertAnzahl(); @Override List<AuftragDO> getList(final BaseSearchFilter filter); boolean sendNotificationIfRequired(final AuftragDO auftrag, final OperationType operationType,
                                            final String requestUrl); @SuppressWarnings("unchecked") Integer getNextNumber(); @SuppressWarnings("unchecked") Integer getNextNumber(final AuftragDO auftrag); @Override List<DisplayHistoryEntry> getDisplayHistoryEntries(final AuftragDO obj); @Override boolean contains(final Set<Integer> idSet, final AuftragDO entry); @Override AuftragDO newInstance(); }
AuftragDao extends BaseDao<AuftragDO> { void validateAmountsInPaymentScheduleNotGreaterThanNetSumOfPosition(final AuftragDO auftrag) { final List<PaymentScheduleDO> paymentSchedules = auftrag.getPaymentSchedules(); if (paymentSchedules == null) { return; } for (final AuftragsPositionDO pos : auftrag.getPositionenExcludingDeleted()) { final BigDecimal sumOfAmountsForCurrentPosition = paymentSchedules.stream() .filter(payment -> payment.getPositionNumber() == pos.getNumber()) .map(PaymentScheduleDO::getAmount) .filter(Objects::nonNull) .reduce(BigDecimal.ZERO, BigDecimal::add); final BigDecimal netSum = pos.getNettoSumme(); if (netSum != null && netSum.compareTo(BigDecimal.ZERO) > 0 && sumOfAmountsForCurrentPosition.compareTo(netSum) > 0) { throw new UserException("fibu.auftrag.error.amountsInPaymentScheduleAreGreaterThanNetSumOfPosition", pos.getNumber()); } } } AuftragDao(); void registerTaskTree(final TaskTree taskTree); @Override String[] getAdditionalSearchFields(); int[] getYears(); Map<Integer, Set<AuftragsPositionVO>> getTaskReferences(); AuftragsStatistik buildStatistik(final List<AuftragDO> list); void calculateInvoicedSum(final Collection<AuftragDO> col); void calculateInvoicedSum(final AuftragDO order); void setContactPerson(final AuftragDO auftrag, final Integer contactPersonId); void setTask(final AuftragsPositionDO position, final Integer taskId); void setKunde(final AuftragDO auftrag, final Integer kundeId); void setProjekt(final AuftragDO auftrag, final Integer projektId); AuftragsPositionDO getAuftragsPosition(final String posString); synchronized int getAbgeschlossenNichtFakturiertAnzahl(); @Override List<AuftragDO> getList(final BaseSearchFilter filter); boolean sendNotificationIfRequired(final AuftragDO auftrag, final OperationType operationType,
                                            final String requestUrl); @SuppressWarnings("unchecked") Integer getNextNumber(); @SuppressWarnings("unchecked") Integer getNextNumber(final AuftragDO auftrag); @Override List<DisplayHistoryEntry> getDisplayHistoryEntries(final AuftragDO obj); @Override boolean contains(final Set<Integer> idSet, final AuftragDO entry); @Override AuftragDO newInstance(); static final UserRightId USER_RIGHT_ID; final static int START_NUMBER; }