Salve gente, sto scrivendo del codice per il calcolo delle rate per un dato tipo di pagamento.
Ad esempio se il pagamento è del tipo 40% subito, 30% a 30 giorni e 30% a 60 giorni.
La procedura scritta fino ad ora calcola correttamente il tipo di pagamento se non sono presenti rate.
Quindi mi servirebbe aiuto per il calcolo delle rate.
Di segiuto è presente una parte del codice:
Nel ramo else devo inserire il calcolo: qualcuno ha qualche dritta da darmi?codice:// importo dell'imposta NumericLTBL imposta = this.getTotaleImposta(); // numero di rate da generare NumericLTBL numeroRate = pag.getNumeroScadenze(); // importi delle rate NumericLTBL[] importoRata = new NumericLTBL[pag.getNumeroScadenze().intValue()]; // date scadenze DateLTBL[] dataScadenza = new DateLTBL[pag.getNumeroScadenze().intValue()]; // somma rate NumericLTBL totaleRate = (NumericLTBL) Factory.createObject(NumericLTBL.class, this.getApplication()); // Vettore contenente le rate per il pagamento selezionato Vector rate = pag.getCondizionePagamentoRate(); // Se non sono presenti rate per il pagamento if(rate == null || rate.size() == 0){ // calcolo importi delle rate for (int i = 0 ; i<importoRata.length; i++) { // inizializzo importo rata importoRata[i] = new NumericLTBL(this.getTotaleFattura().getCName(), this.getTotaleFattura().getAName()); // Calcolo importo if (i==0) { // Prima rata solo di iva if (pag.getDistribuzioneIva().getFormatted().equals("S")) { importoRata[i].setFormatted(imposta.getFormatted()); // altre rate rata.sub(importoRata[i]); rata.div(numeroRate); } else // Tutta l'iva sulla prima rata if (pag.getDistribuzioneIva().getFormatted().equals("T")) { importoRata[i].setFormatted(imposta.getFormatted()); // altre rate rata.sub(importoRata[i]); rata.div(numeroRate); importoRata[i].add(rata); } else { // Rate Standard imponibile+imposta rata.div(numeroRate); importoRata[i].setFormatted(rata.getFormatted()); } } else { // Rate successive alla prima importoRata[i].setFormatted(rata.getFormatted()); } // Se sono all'ultima rata if(i == (importoRata.length-1)){ // Estratto il totale della fattura e gli sottraggo la somma delle rate precedenti importoRata[i].set(this.getTotaleFattura().get()); importoRata[i].sub(totaleRate); } else{ // Somma delle rate totaleRate.add(importoRata[i]); } // inizializzo data scadenza dataScadenza[i] = new DateLTBL(); if (i==0) { // anno solare o commerciale if (pag.getUsoMeseCommerciale().getFormatted().equals("N")) data.addDays(pag.getPartenzaRate().intValue()); else data.addDaysCommercial(pag.getPartenzaRate().intValue()); dataScadenza[i].set(data.get()); } else { if (pag.getUsoMeseCommerciale().getFormatted().equals("N")) data.addDays(pag.getIntervalloScadenze().intValue()); else data.addDaysCommercial(pag.getIntervalloScadenze().intValue()); dataScadenza[i].set(data.get()); } // controllo se spostare a fine mese if (pag.getTipoScadenzaPagamento().getFormatted().equals("F")) dataScadenza[i].goToEndOfMonth(); // controllo se spostare alla quindicina successiva if (pag.getTipoScadenzaPagamento().getFormatted().equals("Q")) // anno solare o commerciale dataScadenza[i].goTo15OfMonth(); // Controllo periodi di esclusione 1 DateLTBL escludiDa = new DateLTBL(); DateLTBL escludiAa = new DateLTBL(); DateLTBL toData = new DateLTBL(); String anno = new String(new Integer(dataScadenza[i].getYY()).toString()); escludiDa.setFormatted(pag.getDaGiorno1().getFormatted() + "/" + pag.getDaMese1().getFormatted() + "/" + anno); escludiAa.setFormatted(pag.getAGiorno1().getFormatted() + "/" + pag.getAMese1().getFormatted() + "/" + anno); toData.setFormatted(pag.getToGiorno1().getFormatted() + "/" + pag.getToMese1().getFormatted() + "/" + anno); if (dataScadenza[i].isAfter(escludiDa) && dataScadenza[i].isBefore(escludiAa)) dataScadenza[i].set(toData.get()); // Controllo periodi di esclusione 2 String anno2 = new String(new Integer(dataScadenza[i].getYY()+1).toString()); escludiDa.setFormatted(pag.getDaGiorno2().getFormatted() + "/" + pag.getDaMese2().getFormatted() + "/" + anno); escludiAa.setFormatted(pag.getAGiorno2().getFormatted() + "/" + pag.getAMese2().getFormatted() + "/" + anno2); toData.setFormatted(pag.getToGiorno2().getFormatted() + "/" + pag.getToMese2().getFormatted() + "/" + anno2); if (dataScadenza[i].isAfter(escludiDa) && dataScadenza[i].isBefore(escludiAa)) dataScadenza[i].set(toData.get()); // Controllo esistenza Scadenza Scadenza scadenza = (Scadenza) Factory.createObject(Scadenza.class, this.getApplication()); if (this.getTipoDocumento().getFormatted().equals("F")) { scadenza.elementAt(SQLHelpler.compressKey(new String[]{"CLI", this.getCodiceCliente().get(), this.getNumeroFattura().getFormatted(), this.getDataFattura().get(), dataScadenza[i].get()})); } else { scadenza.elementAt(SQLHelpler.compressKey(new String[]{"CLI", this.getCodiceCliente().get(), "RF/" + this.getNumeroRicevutaFiscale().get(), this.getDataRicevutaFiscale().get(), dataScadenza[i].get()})); } // Per Trovato incremento il fatturato e il da pagare if (scadenza.ERROR_NO_ENTRY.equals("0")) { // Se fattura if (!this.getTipoFattura().getFormatted().equals("3")) { scadenzaDocumento.getImporto().add(importoRata[i]); // se Nota di Credito } else { scadenzaDocumento.getImporto().sub(importoRata[i]); } // Per non trovato lo creo } else { scadenzaDocumento.setIsNewObj(true); scadenzaDocumento.getImporto().setFormatted("0"); // Se fattura if (!this.getTipoFattura().getFormatted().equals("3")) { scadenzaDocumento.getImporto().add(importoRata[i]); // se Nota di Credito } else { scadenzaDocumento.getImporto().sub(importoRata[i]); } scadenzaDocumento.getDataScadenza().set(dataScadenza[i].get()); } scadenzaDocumento.getNumeroDocumento().setFormatted(this.getNumeroDocumento().getFormatted()); scadenzaDocumento.getCodicePagamento().setFormatted(this.getPagamento().getFormatted()); scadenzaDocumento.save(); } } // Se sono presenti rate per il pagamento selezionato else{
Grazie mille

Rispondi quotando