final List<EntryDTO> entryDTOs = calculateEntries();
final List<AccountingEventPaymentCode> result = new ArrayList<AccountingEventPaymentCode>();
for (final AccountingEventPaymentCode paymentCode : getNonProcessedPaymentCodes()) {
final EntryDTO entryDTO = findEntryDTOForPaymentCode(entryDTOs, paymentCode);
if (entryDTO == null) {
paymentCode.cancel();
continue;
}
if (paymentCode instanceof InstallmentPaymentCode) {
final InstallmentPaymentCode installmentPaymentCode = (InstallmentPaymentCode) paymentCode;
paymentCode.update(new YearMonthDay(),
calculateInstallmentPaymentCodeEndDate(installmentPaymentCode.getInstallment()),
entryDTO.getAmountToPay(), entryDTO.getAmountToPay());
result.add(paymentCode);
} else {
paymentCode.update(new YearMonthDay(), calculateFullPaymentCodeEndDate(), entryDTO.getAmountToPay(),
entryDTO.getAmountToPay());
result.add(paymentCode);
}
}