// valorizzato con
// i dati vecchi + tutti i dati nuovi...
private GruppoDatiFinanziari generaNuoviDatiFinanziari(Movimento nuovoMovimento, GruppoDatiFinanziari oldDatifin,
List<PianoAmmortamento> nuovoPam, Finanziamento nuovoFin) {
GruppoDatiFinanziari nuoviDatifin = new GruppoDatiFinanziari();
try {
PropertyUtils.copyProperties(nuoviDatifin, oldDatifin);
nuoviDatifin.setNumeroPam(nuovoPam.get(0).getRataId().getNumeroPam());
nuoviDatifin.setPianoAmmortamento(new HashSet<PianoAmmortamento>());
nuoviDatifin.getPianoAmmortamento().addAll(nuovoPam);
nuoviDatifin.setDataInizioValidita(nuovoMovimento.getDataMovimento());
nuoviDatifin.setDataFineValidita(null);
// Aggiorno gli importi
nuoviDatifin.setImportoFinanziato(oldDatifin.getImportoFinanziato().doubleValue()
+ nuovoMovimento.getImportoMovimento().doubleValue());
// Aggiorno i dati Fin con i dati specifici di una nuova tranche
if (nuovoMovimento instanceof TrancheMutuoSal) {
TrancheMutuoSal nuovaTranche = (TrancheMutuoSal) nuovoMovimento;
nuoviDatifin.setImportoErogato(oldDatifin.getImportoErogato().doubleValue()
+ nuovaTranche.getImportoErogato().doubleValue());
nuoviDatifin.setImportoLiquidato(oldDatifin.getImportoErogato().doubleValue()
+ nuovaTranche.getImportoErogato().doubleValue());
nuoviDatifin.setImportoSpese(NumberUtils.checkNull(oldDatifin.getImportoSpese())
+ nuovaTranche.getImportoSpese().doubleValue());
nuoviDatifin.setImportoProvvigioni(NumberUtils.checkNull(oldDatifin.getImportoProvvigioni())
+ nuovaTranche.getImportoProvvigioni().doubleValue());
nuoviDatifin.setImportoRichiesto(oldDatifin.getImportoRichiesto().doubleValue()
+ nuovaTranche.getImportoMovimento().doubleValue());
double importoImpostaSostNuovaTranche = nuovoMovimento.getImportoMovimento().doubleValue()
* nuovaTranche.getPercentualeImpostaSostitutiva().doubleValue() / 100;
nuoviDatifin.setImportoImpostaSostitutiva(oldDatifin.getImportoImpostaSostitutiva().doubleValue()
+ importoImpostaSostNuovaTranche);
double percImpostaTotale = (nuoviDatifin.getImportoImpostaSostitutiva() / nuoviDatifin
.getImportoFinanziato()) * 100;
nuoviDatifin.setPercentualeImpostaSostitutiva(RoundUtils.round5Cifre(percImpostaTotale));
nuoviDatifin.setImportoAssicurazioneIncendio(oldDatifin.getImportoAssicurazioneIncendio().doubleValue()
+ nuovaTranche.getImportoAssicurazioneCasa().doubleValue());
} else {
nuoviDatifin.setImportoErogato(oldDatifin.getImportoErogato());
nuoviDatifin.setImportoLiquidato(oldDatifin.getImportoErogato());
nuoviDatifin.setImportoSpese(oldDatifin.getImportoSpese());
nuoviDatifin.setImportoProvvigioni(oldDatifin.getImportoProvvigioni());
nuoviDatifin.setImportoRichiesto(oldDatifin.getImportoRichiesto());
nuoviDatifin.setImportoImpostaSostitutiva(oldDatifin.getImportoImpostaSostitutiva());
nuoviDatifin.setPercentualeImpostaSostitutiva(oldDatifin.getPercentualeImpostaSostitutiva());
}
nuoviDatifin.setImportoInteressi(nuovoFin.getTotaliPam().getQuotaInteressi());
nuoviDatifin.setImportoMontante(nuovoFin.getTotaliPam().getQuotaMontante());
// aggiorno i dati IAS
nuoviDatifin.setImportoFinanziatoIas(nuovoFin.getImportoFinanziatoIas());
nuoviDatifin.setTassoIas(nuovoFin.getTassoIas() * 100);
nuoviDatifin.setTaeg(RoundUtils.round3Cifre(NumberUtils.checkNull(nuovoFin.getTaeg())));
nuoviDatifin.setTaegLordo(RoundUtils.round3Cifre(NumberUtils.checkNull(nuovoFin.getTaegLordo())));
} catch (IllegalAccessException e) {
e.printStackTrace();
throw new RuntimeException(e);
} catch (InvocationTargetException e) {