public static Double calcolaImportoRata(Finanziamento finanziamento, int numeroRateNonSoloInteressi)
throws DataMissingException,CalculationErrorException,IncorrectDataException{
CalcolatoreRataImpl.log.debug("finanziamento.getImportoRichiesto(): "
+ finanziamento.getImportoRichiesto());
SpesaTotale spesaTotale = finanziamento.getSpesaTotale();
//if (spesaTotale == null) {
// throw new CalculationErrorException(messages.getMessage("generatorePdA.calcolaImportoRata.speseTotaliNonCalcolate"));
//}
Double tassoPeriodale1 = finanziamento.getTassoPeriodale();
if (tassoPeriodale1 == null)
throw new DataMissingException(messages.getMessage("generatorePdA.calcolaImportoRata.tassoPeriodaleNonValorizzato"));
Double tassoPeriodale = tassoPeriodale1;
Double importoRichiesto = finanziamento.getImportoRichiesto();
Double importoRata = 0d;
// CALCOLO SU LEGACY
// ldc_ImpRata = (( ldc_ImpRichiesto + ( ldc_ImpRichiesto *
// lstr_TempCalcDtFin.adc_PercRichiesto ) + &
// lstr_TempCalcDtFin.adc_ImpSpese ) * astr_Costi.adc_TassoPeriodale * (
// 1 + astr_Costi.adc_TassoPeriodale ) ^ li_NrRate ) / &
//
// ( (( 1 + astr_Costi.adc_TassoPeriodale ) ^ li_NrRate ) * ( 1 -
// lstr_TempCalcDtFin.adc_PercFinanziato +
// lstr_TempCalcDtFin.adc_PercInteressi - &
// lstr_TempCalcDtFin.adc_PercMontante * li_NrRate *
// astr_Costi.adc_TassoPeriodale - lstr_TempCalcDtFin.adc_PercRata *
// astr_Costi.adc_TassoPeriodale - &
// lstr_TempCalcDtFin.adc_PercInteressi * li_NrRate *
// astr_Costi.adc_TassoPeriodale ) - ( 1 -
// lstr_TempCalcDtFin.adc_PercFinanziato +
// lstr_TempCalcDtFin.adc_PercInteressi ))
Double percentualeFinanziato =0d;
Double percentualeInteressi =0d;
Double percentualeMontante =0d;
Double percentualeRata =0d;
Double percentualeRichiesto =0d;
Double importoSpesa =0d;
if(spesaTotale!=null){
percentualeFinanziato = spesaTotale.getPercentualeFinanziato()==null ? 0d : spesaTotale.getPercentualeFinanziato();
percentualeInteressi = spesaTotale.getPercentualeInteressi()==null ? 0d : spesaTotale.getPercentualeInteressi();
percentualeMontante = spesaTotale.getPercentualeMontante()==null ? 0d : spesaTotale.getPercentualeMontante();
percentualeRata = spesaTotale.getPercentualeRata()==null ? 0d : spesaTotale.getPercentualeRata();
percentualeRichiesto = spesaTotale.getPercentualeRichiesto()==null ? 0d : spesaTotale.getPercentualeRichiesto();
importoSpesa = spesaTotale.getImporto()==null ? 0d : spesaTotale.getImporto();
}
try {
double dividendoCalcoloImportoRata = CalcolaImporti.getDividendoCalcoloImportoRata(
tassoPeriodale, importoRichiesto, percentualeRichiesto,
importoSpesa, numeroRateNonSoloInteressi);
double divisoreCalcoloImportoRata = CalcolaImporti.getDivisoreCalcoloImportoRata(
tassoPeriodale, percentualeFinanziato,
percentualeInteressi, percentualeMontante, percentualeRata,
numeroRateNonSoloInteressi);
importoRata = dividendoCalcoloImportoRata
/ divisoreCalcoloImportoRata;
CalcolatoreRataImpl.log.debug("importoRichiesto:" + importoRichiesto);
if(spesaTotale!=null) CalcolatoreRataImpl.log.debug("percentualeRichiesto():"
+ spesaTotale.getPercentualeRichiesto());
if(spesaTotale!=null)CalcolatoreRataImpl.log.debug("importoSpesa:" + spesaTotale.getImporto());
CalcolatoreRataImpl.log.debug("tassoPeriodale:" + tassoPeriodale);
CalcolatoreRataImpl.log.debug("numeroRateNonSoloInteressi:"
+ numeroRateNonSoloInteressi);
if(spesaTotale!=null)CalcolatoreRataImpl.log.debug("percentualeFinanziato():"
+ spesaTotale.getPercentualeFinanziato());
if(spesaTotale!=null)CalcolatoreRataImpl.log.debug("percentualeInteressi():"
+ spesaTotale.getPercentualeInteressi());
if(spesaTotale!=null)CalcolatoreRataImpl.log.debug("percentualeMontante():"
+ spesaTotale.getPercentualeMontante());
CalcolatoreRataImpl.log.debug("calcoloImportRata : ((" + importoRichiesto + " + ("
+ importoRichiesto + " * " + percentualeRichiesto + ") + "
+ importoSpesa + ") * " + tassoPeriodale
+ " * Math.pow( 1 + " + tassoPeriodale + ", "
+ numeroRateNonSoloInteressi + ") / ((Math.pow(1 + "