}
public void testRicalcolaPamGraduato() {
Finanziamento fin = new FinanziamentoGraduatoRicalcolaFake();
Finanziamento finpam = new FinanziamentoGraduatoPAMRicalcolaFake();
try {
//valorizzazione del pam
finpam = generatorePdAService.calcolaPAM(finpam);
fin.setPam(finpam.getPam());
fin.setTotaliPam(finpam.getTotaliPam());
fin.setImportoFinanziato(finpam.getImportoFinanziato());
fin.setTipoCalcolo("P");
fin.setDataScadenzaPrimaRata(sdf.parse("09/05/2006"));
///ricalcolo del graduato quando passa da 40 a 50
fin = generatorePdAService.ricalcolaPAMGraduati(fin);
fin.setDataDecorrenzaMutuo(sdf.parse("09/02/2006"));
//aggiungo rimborso al 18/10
MovimentoRimborsoGraduato mov = new MovimentoRimborsoGraduato();
mov.setProgressivoMovimento(1);
mov.setImportoMovimento(20000d);
mov.setDataMovimento(sdf.parse("18/10/2007"));
mov.setDataRegistrazione(sdf.parse("18/10/2007"));
mov.setDataValuta(sdf.parse("18/10/2007"));
if(fin.getMovimentiRimborso()==null)fin.setMovimentiRimborso(new ArrayList<MovimentoRimborsoGraduato>());
fin.getMovimentiRimborso().add(mov);
fin.setDataRiferimento( sdf.parse("30/10/2007") );
//la rata del 09/11 � di poco dopo il versamento per cui � gi� in banca, quindi non pu� essere variata,
//saranno poi i dietimi che mettono a posto le cose andando a ridurre la rata successiva
for(Rata rata :fin.getPam()){
if(sdf.parse("1/12/2007").after(rata.getDtScadRata())){
rata.setCodicePosizioneRata(2);
}else{
rata.setCodicePosizioneRata(1);
}
}
fin.setTipoCalcolo("E");
fin.setProgressivoMovimento(1);
fin = generatorePdAService.ricalcolaPAMGraduati(fin);
//fine aggiungo rimborso al 18/10
//ricalcolo il piano al 30 aprile, non c'� stato il rimborso ma si supera la terza data utile del rimborso
fin.setDataRiferimento( sdf.parse("30/04/2008") );
fin = generatorePdAService.ricalcolaPAMGraduati(fin);
//
loggamiIlPiano(fin);
//assertEquals("Totale Montante:",371203.60,MathUtils.round( fin.getTotaliPam().getQuotaMontante(),2));
//assertEquals("Totale Importo Rata:",241203.60,MathUtils.round( fin.getTotaliPam().getImportoRate(),2));
assertEquals("Totale Quota Capitale:",30413.00,MathUtils.round( fin.getTotaliPam().getQuotaCapitale(),2));
assertEquals("Totale Quota Interessi:",7233.55,MathUtils.round( fin.getTotaliPam().getQuotaInteressi(),2));
//assertEquals("Totale Quota Erogato:",129675.00,MathUtils.round( fin.getImportoErogato() ,2));
assertEquals("Ultima rata:", 1.00,MathUtils.round( fin.getPam().get(fin.getPam().size()-1).getImpRata(),2));
assertEquals("Quota Capitale ultima rata:",1.00,MathUtils.round( fin.getPam().get(fin.getPam().size()-1).getQuotaCapitale(),2));
assertEquals("Quota Interessi ultima rata:",0.00,MathUtils.round( fin.getPam().get(fin.getPam().size()-1).getQuotaInteressi(),2));
assertEquals("Quota Spese ultima rata:",0.00,MathUtils.round( fin.getPam().get(fin.getPam().size()-1).getQuotaSpese(),2));
//assertEquals("Arrotondamento:",0.00,MathUtils.round( fin.getImportoArrotondamento() ,2));
} catch (Exception e) {
fail("Eccezione " + e.getMessage());
}