// Recupero i dati finanziari (e pam) validi alla data della tranche.
GruppoDatiFinanziari gdf = getDatiFinanziariAllaData(mutuo.getNumeroMutuo(), nuovoMovimento.getDataMovimento());
// Traduco i dati di gestione pratica in finanziamento per il
// generatorePam
Finanziamento fin = GestionePraticaUtility.getFinanziamentoProSal(mutuo, gdf, new ArrayList<PianoAmmortamento>(
gdf.getPianoAmmortamento()), nuovoMovimento);
if (nuovoMovimento instanceof MovRimbTrad) {
// Se sono nel caso di rimborso tradizionali e costanti la data
// riferimento deve essere
// la data valuta e non la data movimento (per i graduati in un
// altro punto correggo)
MovRimbTrad movTrad = (MovRimbTrad) nuovoMovimento;
fin.setDataRiferimento(movTrad.getDataValuta());
}
List<RataPiano> ratePiano = getRateStartup(mutuo.getNumeroMutuo());
for (RataPiano rp : ratePiano) {
if (rp.getSoloInteressiBoolean()) {
fin.setNumeroRateSoloInteressi(rp.getTotaleRate());
}
}
// carico su il periodo di indicizzazione
ParametroIndicizzo parmIndic = getParametroIndicizzazione(gdf.getCodiceTipoCalcoloIndicizzazione(),
gdf.getCodiceModalitaCalcoloIndicizzazione());
fin.setPeriodicitaIndicizzazione(parmIndic != null ? NumberUtils.checkNull(parmIndic.getPeriodicita()) : 0);
if ("COST".equals(mutuo.getCodiceProdotto())) {
// Se sono un mutuo a rata costante allora vado a caricarmi le spese
// di incasso
// per capire su quale base devo essere calcolate e addebitate
Segnalatore segn = getSegnalatore(mutuo.getNumeroMutuo());
TestataTabellaFinanziaria ttf = getTestataTabellaFinanziaria(segn.getNumeroTabellaFinanziaria());
Spesa spesa = new Spesa();
try {
spesa.setBaseSpesa(ttf.getBaseSpeseIncasso());
spesa.setImportoFisso(ttf.getImportoFissoSpeseIncasso());
} catch (Exception e) {
spesa.setBaseSpesa("F");
spesa.setImportoFisso(0.0);
}
spesa.setCodiceSpesa(CostantiSpese.SPESE_INCASSO.value());
fin.getSpese().add(spesa);
Spesa spGest = new Spesa();
try {
spGest.setBaseSpesa(ttf.getBaseCommissioniGestione());
spGest.setImportoFisso(ttf.getImportoFissoCommissioniGestione());
} catch (Exception e) {
spGest.setBaseSpesa("F");
spGest.setImportoFisso(0.0);
}
spGest.setCodiceSpesa(CostantiSpese.COMMISSIONI_DI_GESTIONE.value());
fin.getSpese().add(spGest);
}
it.pdor.generatorePdA.domain.Movimento movimentoPda = GestionePraticaUtility
.movimentoToMovimentoPdA(nuovoMovimento);
if (TipiPiano.GRADUATO.value().equals(gdf.getCodiceTipoRata())) {
// carico i dati rimborsi grad
DatiRimborsoGraduati drg = getDatiRimborsoGraduati(mutuo.getNumeroMutuo());
fin.setDatiRimborsoGraduati(GestionePraticaUtility.datiRimborsoGraduatoToRimborsoGraduatoPdA(drg, mutuo));
// List<MovimentoRimborsoGraduato> listaRimborsi =
// getRimborsiGraduato(mutuo.getNumeroMutuo());
Segnalatore segnalatore = getSegnalatore(mutuo.getNumeroMutuo());
ModalitaRimborso mr = getModalitaRimborso(drg.getCodiceModalitaRimborso(), mutuo.getCodiceProdotto(),
segnalatore.getNumeroSoggetto());
// Li traduco negli oggetti per il generatorePdA
fin.setModalitaRimborso(GestionePraticaUtility.modalitaRimborsoToModalitaRimborsoPdA(mr));
List<PercentualeRicalcoloGraduato> listaPercRicGrad = getPercentualiRicalcoloGraduato(tipoFormaGiuridica,
mr);
fin.setPercentualiRicalcoloGraduati(GestionePraticaUtility.percRicGradToRicRimbGradPdA(listaPercRicGrad));
// List<MovimentoRimborsoGraduato> listaRimbGrad =
// getRimborsiGraduato(mutuo.getNumeroMutuo());
List<MovimentoRimborsoGraduato> listaRimbGrad = getRimborsiGraduato(mutuo.getNumeroMutuo(), mutuo
.getDatiFinanziariAttuali().getNrDatiFinanziari());
fin.setMovimentiRimborso(GestionePraticaUtility.traduciListaMovRimbGradInMovRimbGradPdA(listaRimbGrad));
//BARBARA Aggiunto per calcolo dietimi
Date dataPrimaInd = new Date(fin.getDataPrimaIndicizzazione().getTime());
DateUtility.setMeseGiorno(dataPrimaInd, parmIndic.getMesePrimoPeriodo(), 1);
dataPrimaInd = DateUtility.getUltimoDelMese(dataPrimaInd);
fin.setDataPrimaIndicizzazione(dataPrimaInd);
}
// Chiamo il generatore di piani ammortamento...
Finanziamento nuovoFin = generatorePdAFacade.ricalcolaPianoAmmortamento(fin, movimentoPda);
nuovoMovimento.setDataRataAddebitoDietimi(movimentoPda.getDataRataAddDietimi());
nuovoMovimento.setImportoDietimi(RoundUtils.round2Cifre(movimentoPda.getImportoDietimi()));
nuovoMovimento.setDataRataCalcoloDietimi(movimentoPda.getDataRataCalcoloDietimi());
nuovoMovimento.setNumeroGiorniDietimi(movimentoPda.getNumeroGiorniDietimi());
nuovoMovimento.setTassoDietimi(RoundUtils.round5Cifre(movimentoPda.getTassoCalcoloDietimi()));
if (nuovoMovimento instanceof MovRimbTrad) {
((MovRimbTrad) nuovoMovimento).setImportoDietimiPf(((MovimentoRimborsoTrad) movimentoPda)
.getImportoDietimiPf());
} else if (nuovoMovimento instanceof MovimentoRimborsoGraduato) {
((MovimentoRimborsoGraduato) nuovoMovimento)
.setImportoDietimiPf(((it.pdor.generatorePdA.domain.MovimentoRimborsoGraduato) movimentoPda)
.getImportoDietimiPf());
}
// ------------
// Recupero il nuovo piano tenendo conto che le rate con posizione > 2 o
// = 0 non sono ricalcolate...
List<PianoAmmortamento> nuovoPam = new ArrayList<PianoAmmortamento>(0);
for (Rata r : nuovoFin.getPam()) {
PianoAmmortamento pa = GestionePraticaUtility.rataToRataPam(r);
pa.getRataId().setProgressivoRata(r.getProgressivoRata());
pa.setNumeroMutuo(mutuo.getNumeroMutuo());
nuovoPam.add(pa);
}