private KostZuweisungDO addZuweisung(final AbstractRechnungsPositionDO position) { final KostZuweisungDO kostZuweisung = new KostZuweisungDO(); position.addKostZuweisung(kostZuweisung); if (kostZuweisung.getIndex() > 0) { final KostZuweisungDO predecessor = position.getKostZuweisung(kostZuweisung.getIndex() - 1); if (predecessor != null) { kostZuweisung.setKost1(predecessor.getKost1()); // Preset kost1 from the predecessor position. kostZuweisung.setKost2(predecessor.getKost2()); // Preset kost2 from the predecessor position. } } if (RechnungsPositionDO.class.isAssignableFrom(position.getClass()) == true && kostZuweisung.getKost2() == null) { // Preset kost2 with first kost2 found for the projekt. final RechnungsPositionDO rechnungsPosition = (RechnungsPositionDO) position; final RechnungDO rechnung = rechnungsPosition.getRechnung(); if (rechnung != null) { final ProjektDO project = rechnung.getProjekt(); if (project != null) { final List<Kost2DO> kost2List = kost2Dao.getActiveKost2(project); if (CollectionUtils.isNotEmpty(kost2List) == true) { kostZuweisung.setKost2(kost2List.get(0)); } } } } kostZuweisung.setNetto(position.getKostZuweisungNetFehlbetrag().negate()); return kostZuweisung; }
assertEquals(0, destPos.getKostZuweisungen().size()); final KostZuweisungDO kostZuweisung = new KostZuweisungDO().setNetto(BigDecimal.ONE).setComment("1"); kostZuweisung.setId(4711); // simulate non deletable srcPos.addKostZuweisung(kostZuweisung); assertEquals(srcPos.getKostZuweisungen().get(0), destPos.getKostZuweisungen().get(0)); destPos.addKostZuweisung(new KostZuweisungDO().setNetto(BigDecimal.ONE).setComment("1")); assertEquals(2, destPos.getKostZuweisungen().size()); assertEquals(srcPos.getKostZuweisungen().get(0), destPos.getKostZuweisungen().get(0)); srcPos.getKostZuweisung(0).setNetto(BigDecimal.TEN).setComment("10"); KostZuweisungenCopyHelper.copy(srcPos.getKostZuweisungen(), destPos); assertEquals(1, destPos.getKostZuweisungen().size()); assertEquals("10", destPos.getKostZuweisung(0).getComment()); srcPos.addKostZuweisung(new KostZuweisungDO().setNetto(BigDecimal.ONE).setComment("2")); srcPos.addKostZuweisung(new KostZuweisungDO().setNetto(BigDecimal.ONE).setComment("3")); srcPos.addKostZuweisung(new KostZuweisungDO().setNetto(BigDecimal.ONE).setComment("4")); srcPos.addKostZuweisung(new KostZuweisungDO().setNetto(BigDecimal.ONE).setComment("5")); KostZuweisungenCopyHelper.copy(srcPos.getKostZuweisungen(), destPos); assertEquals(5, destPos.getKostZuweisungen().size());