Search in sources :

Example 6 with ApplicationException

use of it.cnr.jada.comp.ApplicationException in project sigla-main by consiglionazionaledellericerche.

the class ElaboraFileSpesometroAction method doElaboraFile.

public Forward doElaboraFile(ActionContext context) throws ComponentException, PersistencyException, IntrospectionException {
    try {
        fillModel(context);
        ElaboraFileSpesometroBP bp = (ElaboraFileSpesometroBP) context.getBusinessProcess();
        bp.setFile(null);
        VSpesometroNewBulk dett = (VSpesometroNewBulk) bp.getModel();
        if (dett.getNome_file() == null || dett.getNome_file().length() != 22) {
            throw new ApplicationException("Indicare un nome di file valido!");
        }
        if (dett.getDa_data() == null || dett.getA_data() == null) {
            throw new ApplicationException("Indicare il periodo di estrazione!");
        }
        if (dett.getA_data().before(dett.getDa_data()))
            throw new ApplicationException("Periodo di estrazione non valido!");
        GregorianCalendar dataDa = new GregorianCalendar();
        dataDa.setTime(new java.util.Date(dett.getDa_data().getTime()));
        int anno = dataDa.get(GregorianCalendar.YEAR);
        dataDa.setTime(new java.util.Date(dett.getA_data().getTime()));
        int anno_a = dataDa.get(GregorianCalendar.YEAR);
        if (CNRUserContext.getEsercizio(context.getUserContext()).intValue() != anno || CNRUserContext.getEsercizio(context.getUserContext()).intValue() != anno_a)
            throw new ApplicationException("Periodo di estrazione non coerente con esercizio di scrivania!");
        if (dett.getTipo() == null)
            throw new ApplicationException("Indicare il tipo!");
        try {
            bp.doElaboraFile(context, dett);
        } catch (Exception e) {
            return handleException(context, e);
        }
        bp.setMessage("Elaborazione completata.");
        return context.findDefaultForward();
    } catch (Exception e) {
        return handleException(context, e);
    }
}
Also used : VSpesometroNewBulk(it.cnr.contab.docamm00.docs.bulk.VSpesometroNewBulk) ApplicationException(it.cnr.jada.comp.ApplicationException) ElaboraFileSpesometroBP(it.cnr.contab.docamm00.bp.ElaboraFileSpesometroBP) GregorianCalendar(java.util.GregorianCalendar) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) FillException(it.cnr.jada.bulk.FillException) ComponentException(it.cnr.jada.comp.ComponentException) IntrospectionException(it.cnr.jada.persistency.IntrospectionException)

Example 7 with ApplicationException

use of it.cnr.jada.comp.ApplicationException in project sigla-main by consiglionazionaledellericerche.

the class ObbligazioneResComponent method calcolaPercentualeImputazioneObbligazione.

private ObbligazioneBulk calcolaPercentualeImputazioneObbligazione(UserContext aUC, ObbligazioneBulk obbligazione, String tipoErrore, StringBuffer errControllo) throws ComponentException {
    try {
        BigDecimal percentuale = new BigDecimal(100);
        BigDecimal totaleScad = new BigDecimal(0);
        BigDecimal diffScad = new BigDecimal(0);
        Obbligazione_scad_voceBulk osv;
        Obbligazione_scadenzarioBulk os;
        Obbligazione_scad_voceBulk key = new Obbligazione_scad_voceBulk();
        boolean cdsModObblResImporto = isCdsModObblResImporto(aUC, obbligazione.getCd_cds());
        // recupero le percentuali di imputazione finanziaria per le linee di attivita da pdg
        // 100 - percentuali specificate x linee att non da PDG
        PrimaryKeyHashtable prcImputazioneFinanziariaTable = getOldRipartizioneCdrVoceLinea(aUC, obbligazione);
        if (obbligazione.getFl_calcolo_automatico().booleanValue()) {
            if (obbligazione.getIm_obbligazione() == null || obbligazione.getIm_obbligazione().compareTo(Utility.ZERO) <= 0)
                throw new ApplicationException("Non è possibile effettuare il calcolo automatico su una obbligazione con importo nullo.");
            for (Enumeration e = prcImputazioneFinanziariaTable.keys(); e.hasMoreElements(); ) {
                key = (Obbligazione_scad_voceBulk) e.nextElement();
                totaleScad = (BigDecimal) prcImputazioneFinanziariaTable.get(key);
                percentuale = totaleScad.multiply(new BigDecimal(100)).divide(obbligazione.getIm_obbligazione(), 100, BigDecimal.ROUND_HALF_UP);
                for (Iterator s = obbligazione.getObbligazione_scadenzarioColl().iterator(); s.hasNext(); ) {
                    os = (Obbligazione_scadenzarioBulk) s.next();
                    for (Iterator d = os.getObbligazione_scad_voceColl().iterator(); d.hasNext(); ) {
                        osv = (Obbligazione_scad_voceBulk) d.next();
                        // totale per Cdr e per scadenza
                        if (key.getCd_centro_responsabilita().equals(osv.getCd_centro_responsabilita()) && key.getCd_linea_attivita().equals(osv.getCd_linea_attivita()) && key.getCd_voce().equals(osv.getCd_voce())) {
                            osv.setToBeUpdated();
                            osv.setIm_voce(osv.getObbligazione_scadenzario().getIm_scadenza().multiply(percentuale).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP));
                            break;
                        }
                    }
                }
            }
        }
        boolean trovato = false;
        // verifico che nella nuova Obbligazione non ci siano linee o voci nuove rispetto alla precedente
        for (Iterator s = obbligazione.getObbligazione_scadenzarioColl().iterator(); s.hasNext(); ) {
            os = (Obbligazione_scadenzarioBulk) s.next();
            for (Iterator d = os.getObbligazione_scad_voceColl().iterator(); d.hasNext(); ) {
                osv = (Obbligazione_scad_voceBulk) d.next();
                trovato = false;
                for (Enumeration e = prcImputazioneFinanziariaTable.keys(); e.hasMoreElements(); ) {
                    key = (Obbligazione_scad_voceBulk) e.nextElement();
                    if (key.getCd_centro_responsabilita().equals(osv.getCd_centro_responsabilita()) && key.getCd_linea_attivita().equals(osv.getCd_linea_attivita()) && key.getCd_voce().equals(osv.getCd_voce())) {
                        trovato = true;
                        break;
                    }
                }
                if (!trovato)
                    throw new ApplicationException("Non è possibile aggiungere nuove linee di attività/voci (" + osv.getCd_linea_attivita() + "/" + osv.getCd_voce() + ") ai residui propri.");
            }
        }
        // verifico che nella nuova Obbligazione alle linee/voci siano stati assegnati gli stessi importi
        for (Enumeration e = prcImputazioneFinanziariaTable.keys(); e.hasMoreElements(); ) {
            key = (Obbligazione_scad_voceBulk) e.nextElement();
            totaleScad = new BigDecimal(0);
            for (Iterator s = obbligazione.getObbligazione_scadenzarioColl().iterator(); s.hasNext(); ) {
                os = (Obbligazione_scadenzarioBulk) s.next();
                for (Iterator d = os.getObbligazione_scad_voceColl().iterator(); d.hasNext(); ) {
                    osv = (Obbligazione_scad_voceBulk) d.next();
                    // totale per Cdr e per scadenza
                    if (key.getCd_centro_responsabilita().equals(osv.getCd_centro_responsabilita()) && key.getCd_linea_attivita().equals(osv.getCd_linea_attivita()) && key.getCd_voce().equals(osv.getCd_voce())) {
                        totaleScad = totaleScad.add(Utility.nvl(osv.getIm_voce()));
                    }
                }
            }
            if (totaleScad.compareTo((BigDecimal) prcImputazioneFinanziariaTable.get(key)) != 0) {
                // se modifico l'importo del residuo devo controllare che non sia bloccata la creazione/modifica del residuo se attiva la gestione del limite sui residui sia sul CDS che sulla voce e per la natura e tipo
                // finanziamento indicato in CONFIGURAZIONE_CNR
                WorkpackageBulk latt = ((WorkpackageHome) getHome(aUC, WorkpackageBulk.class)).searchGAECompleta(aUC, CNRUserContext.getEsercizio(aUC), key.getCd_centro_responsabilita(), key.getCd_linea_attivita());
                if (!UtenteBulk.isAbilitatoSbloccoImpegni(aUC))
                    Utility.createSaldoComponentSession().checkBloccoImpegniNatfin(aUC, latt, obbligazione.getElemento_voce(), obbligazione.isObbligazioneResiduo() ? ObbligazioneBulk.TIPO_RESIDUO_PROPRIO : ObbligazioneBulk.TIPO_RESIDUO_IMPROPRIO);
                // se aumento l'importo del residuo devo controllare che il progetto non sia scaduto
                if (totaleScad.compareTo((BigDecimal) prcImputazioneFinanziariaTable.get(key)) > 0 && Utility.createParametriEnteComponentSession().isProgettoPianoEconomicoEnabled(aUC, CNRUserContext.getEsercizio(aUC))) {
                    ProgettoBulk progetto = latt.getProgetto();
                    Optional.ofNullable(progetto.getOtherField()).filter(el -> el.isStatoApprovato() || el.isStatoChiuso()).orElseThrow(() -> new ApplicationException("Attenzione! Aumento importo GAE " + latt.getCd_linea_attivita() + " non consentito. " + "Il progetto associato " + progetto.getCd_progetto() + " non risulta in stato Approvato o Chiuso."));
                    if (progetto.isDatePianoEconomicoRequired()) {
                        // Negli impegni controllare la più piccola data tra data inizio progetto e data stipula contratto definitivo
                        ProgettoHome progettoHome = (ProgettoHome) getHome(aUC, ProgettoBulk.class);
                        java.util.Collection<ContrattoBulk> contratti = progettoHome.findContratti(progetto.getPg_progetto());
                        Optional<ContrattoBulk> optContratto = contratti.stream().filter(el -> el.isAttivo() || el.isAttivo_e_Passivo()).min((p1, p2) -> p1.getDt_stipula().compareTo(p2.getDt_stipula())).filter(el -> el.getDt_stipula().before(progetto.getOtherField().getDtInizio()));
                        if (optContratto.isPresent())
                            optContratto.filter(ctr -> ctr.getDt_stipula().after(obbligazione.getDt_registrazione())).ifPresent(ctr -> {
                                throw new ApplicationRuntimeException("Attenzione! Aumento importo GAE " + latt.getCd_linea_attivita() + " non consentito. " + "La data stipula (" + new java.text.SimpleDateFormat("dd/MM/yyyy").format(ctr.getDt_stipula()) + ") del primo contratto " + ctr.getEsercizio() + "/" + ctr.getStato() + "/" + ctr.getPg_contratto() + " associato al progetto " + progetto.getCd_progetto() + " è successiva " + "rispetto alla data di registrazione dell'obbligazione (" + new java.text.SimpleDateFormat("dd/MM/yyyy").format(obbligazione.getDt_registrazione()) + ").");
                            });
                        else
                            Optional.ofNullable(progetto.getOtherField().getDtInizio()).filter(dt -> !dt.after(obbligazione.getDt_registrazione())).orElseThrow(() -> new ApplicationException("Attenzione! Aumento importo GAE " + latt.getCd_linea_attivita() + " non consentito. " + "La data inizio (" + new java.text.SimpleDateFormat("dd/MM/yyyy").format(progetto.getOtherField().getDtInizio()) + ") del progetto " + progetto.getCd_progetto() + " associato è successiva " + "rispetto alla data di registrazione dell'obbligazione (" + new java.text.SimpleDateFormat("dd/MM/yyyy").format(obbligazione.getDt_registrazione()) + ")."));
                    }
                    LocalDate localDateFineProgetto = Optional.ofNullable(progetto.getOtherField().getDtProroga()).orElse(Optional.ofNullable(progetto.getOtherField().getDtFine()).orElse(DateUtils.firstDateOfTheYear(3000))).toLocalDateTime().toLocalDate();
                    int ggProroga = Optional.ofNullable(obbligazione.getElemento_voce()).flatMap(el -> {
                        if (obbligazione.isCompetenza())
                            return Optional.ofNullable(el.getGg_deroga_obbl_comp_prg_scad());
                        else
                            return Optional.ofNullable(el.getGg_deroga_obbl_res_prg_scad());
                    }).filter(el -> el.compareTo(0) > 0).orElse(0);
                    localDateFineProgetto = localDateFineProgetto.plusDays(ggProroga);
                    if (localDateFineProgetto.isBefore(EJBCommonServices.getServerDate().toLocalDateTime().toLocalDate()))
                        throw new ApplicationMessageFormatException("Attenzione! Aumento importo GAE {0} non consentito. " + "La data fine/proroga del progetto {1} {2} ({3}) è precedente rispetto alla data odierna.", latt.getCd_linea_attivita(), progetto.getCd_progetto(), (ggProroga > 0 ? ", aumentata di " + ggProroga + " giorni," : ""), localDateFineProgetto.format(DateTimeFormatter.ofPattern("dd/MM/yyyy")));
                }
                if (!obbligazione.getFl_calcolo_automatico().booleanValue()) {
                    String errore = "L'importo (" + new it.cnr.contab.util.EuroFormat().format(totaleScad) + ") assegnato alla GAE " + key.getCd_linea_attivita() + " e alla voce " + obbligazione.getElemento_voce().getCd_elemento_voce() + " è " + new String(totaleScad.compareTo((BigDecimal) prcImputazioneFinanziariaTable.get(key)) == 1 ? "maggiore" : "minore") + " di " + new it.cnr.contab.util.EuroFormat().format(totaleScad.subtract((BigDecimal) prcImputazioneFinanziariaTable.get(key)).abs()) + " rispetto al valore originario dell'impegno residuo proprio (" + new it.cnr.contab.util.EuroFormat().format((BigDecimal) prcImputazioneFinanziariaTable.get(key)) + ")";
                    // un movimento di modifica altrimenti è errore bloccante
                    if (totaleScad.subtract((BigDecimal) prcImputazioneFinanziariaTable.get(key)).compareTo(Utility.ZERO) < 0) {
                        // oppure nessun errore
                        if (tipoErrore.equals(TIPO_ERRORE_CONTROLLO)) {
                            errControllo.append(errore);
                            return obbligazione;
                        }
                    } else if (totaleScad.subtract((BigDecimal) prcImputazioneFinanziariaTable.get(key)).compareTo(Utility.ZERO) > 0) {
                        // oppure nessun errore
                        if (cdsModObblResImporto) {
                            if (tipoErrore.equals(TIPO_ERRORE_CONTROLLO)) {
                                errControllo.append(errore);
                                return obbligazione;
                            }
                        } else
                            throw new ApplicationException(errore);
                    } else
                        throw new ApplicationException(errore);
                } else // }
                {
                    diffScad = totaleScad.subtract((BigDecimal) prcImputazioneFinanziariaTable.get(key));
                    for (Iterator s = obbligazione.getObbligazione_scadenzarioColl().iterator(); s.hasNext() && diffScad.compareTo(Utility.ZERO) != 0; ) {
                        os = (Obbligazione_scadenzarioBulk) s.next();
                        if (os.getIm_associato_doc_amm().compareTo(Utility.ZERO) == 0) {
                            for (Iterator d = os.getObbligazione_scad_voceColl().iterator(); d.hasNext() && diffScad.compareTo(Utility.ZERO) != 0; ) {
                                osv = (Obbligazione_scad_voceBulk) d.next();
                                // totale per Cdr e per scadenza
                                if (key.getCd_centro_responsabilita().equals(osv.getCd_centro_responsabilita()) && key.getCd_linea_attivita().equals(osv.getCd_linea_attivita()) && key.getCd_voce().equals(osv.getCd_voce())) {
                                    if (osv.getIm_voce().subtract(diffScad).compareTo(Utility.ZERO) == 1) {
                                        osv.setToBeUpdated();
                                        osv.setIm_voce(osv.getIm_voce().subtract(diffScad));
                                        diffScad = Utility.ZERO;
                                    } else {
                                        osv.setToBeUpdated();
                                        osv.setIm_voce(Utility.ZERO);
                                        diffScad = diffScad.subtract(osv.getIm_voce());
                                    }
                                }
                            }
                        }
                    }
                    if (diffScad.compareTo(Utility.ZERO) != 0)
                        throw new ApplicationException("Si è verificato un errore durante la ripartizione dell'importo assegnato alla GAE " + key.getCd_linea_attivita() + " e alla voce " + obbligazione.getElemento_voce().getCd_elemento_voce() + ". Procedere con l'imputazione manuale.");
                }
            }
        }
        return obbligazione;
    } catch (Exception ex) {
        throw handleException(ex);
    }
}
Also used : UserContext(it.cnr.jada.UserContext) OggettoBulk(it.cnr.jada.bulk.OggettoBulk) Enumeration(java.util.Enumeration) PrimaryKeyHashtable(it.cnr.jada.bulk.PrimaryKeyHashtable) ApplicationRuntimeException(it.cnr.jada.comp.ApplicationRuntimeException) Parametri_cdsBulk(it.cnr.contab.config00.bulk.Parametri_cdsBulk) ProgettoHome(it.cnr.contab.progettiric00.core.bulk.ProgettoHome) Utility(it.cnr.contab.util.Utility) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) Configurazione_cnrBulk(it.cnr.contab.config00.bulk.Configurazione_cnrBulk) BigDecimal(java.math.BigDecimal) Calendar(java.util.Calendar) Obbligazione_modificaBulk(it.cnr.contab.doccont00.core.bulk.Obbligazione_modificaBulk) Obbligazione_scad_voceBulk(it.cnr.contab.doccont00.core.bulk.Obbligazione_scad_voceBulk) DateUtils(it.cnr.jada.util.DateUtils) Obbligazione_mod_voceBulk(it.cnr.contab.doccont00.core.bulk.Obbligazione_mod_voceBulk) CNRUserContext(it.cnr.contab.utenze00.bp.CNRUserContext) WorkpackageHome(it.cnr.contab.config00.latt.bulk.WorkpackageHome) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) GregorianCalendar(java.util.GregorianCalendar) Iterator(java.util.Iterator) UtenteBulk(it.cnr.contab.utenze00.bulk.UtenteBulk) ContrattoBulk(it.cnr.contab.config00.contratto.bulk.ContrattoBulk) BulkList(it.cnr.jada.bulk.BulkList) EJBCommonServices(it.cnr.jada.util.ejb.EJBCommonServices) Elemento_voceBulk(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk) ProgettoBulk(it.cnr.contab.progettiric00.core.bulk.ProgettoBulk) ObbligazioneBulk(it.cnr.contab.doccont00.core.bulk.ObbligazioneBulk) LocalDate(java.time.LocalDate) DateTimeFormatter(java.time.format.DateTimeFormatter) WorkpackageBulk(it.cnr.contab.config00.latt.bulk.WorkpackageBulk) Optional(java.util.Optional) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) Obbligazione_scadenzarioBulk(it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk) ComponentException(it.cnr.jada.comp.ComponentException) Obbligazione_scad_voceBulk(it.cnr.contab.doccont00.core.bulk.Obbligazione_scad_voceBulk) ProgettoBulk(it.cnr.contab.progettiric00.core.bulk.ProgettoBulk) WorkpackageHome(it.cnr.contab.config00.latt.bulk.WorkpackageHome) LocalDate(java.time.LocalDate) Iterator(java.util.Iterator) UserContext(it.cnr.jada.UserContext) CNRUserContext(it.cnr.contab.utenze00.bp.CNRUserContext) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) WorkpackageBulk(it.cnr.contab.config00.latt.bulk.WorkpackageBulk) Enumeration(java.util.Enumeration) ContrattoBulk(it.cnr.contab.config00.contratto.bulk.ContrattoBulk) BigDecimal(java.math.BigDecimal) ApplicationRuntimeException(it.cnr.jada.comp.ApplicationRuntimeException) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) ComponentException(it.cnr.jada.comp.ComponentException) ApplicationException(it.cnr.jada.comp.ApplicationException) ProgettoHome(it.cnr.contab.progettiric00.core.bulk.ProgettoHome) ApplicationRuntimeException(it.cnr.jada.comp.ApplicationRuntimeException) PrimaryKeyHashtable(it.cnr.jada.bulk.PrimaryKeyHashtable) Obbligazione_scadenzarioBulk(it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk)

Example 8 with ApplicationException

use of it.cnr.jada.comp.ApplicationException in project sigla-main by consiglionazionaledellericerche.

the class ReversaleAutomaticaComponent method listaAccertamentiTerzo.

public ReversaleAutomaticaWizardBulk listaAccertamentiTerzo(UserContext aUC, ReversaleAutomaticaWizardBulk reversale) throws ComponentException {
    try {
        Collection result = ((ReversaleAutomaticaWizardHome) getHome(aUC, reversale.getClass())).findAccertamenti(reversale);
        reversale.setAccertamentiColl(result);
        int size = reversale.getAccertamentiColl().size();
        if (size == 0)
            throw new ApplicationException("La ricerca degli Impegni non ha fornito alcun risultato.");
        return reversale;
    } catch (PersistencyException e) {
        throw handleException(reversale, e);
    } catch (it.cnr.jada.persistency.IntrospectionException e) {
        throw handleException(reversale, e);
    }
}
Also used : ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException)

Example 9 with ApplicationException

use of it.cnr.jada.comp.ApplicationException in project sigla-main by consiglionazionaledellericerche.

the class ReversaleAutomaticaComponent method findBancaOptions.

public List findBancaOptions(UserContext userContext, ReversaleAutomaticaWizardBulk reversale) throws PersistencyException, it.cnr.jada.persistency.IntrospectionException, ComponentException {
    if (reversale.getReversale_terzo() != null) {
        if (reversale.getModalita_pagamentoOptions() != null && reversale.getModalita_pagamento().getCd_modalita_pag() == null)
            reversale.setModalita_pagamento((Modalita_pagamentoBulk) reversale.getModalita_pagamentoOptions().get(0));
        SQLBuilder sql = getHome(userContext, BancaBulk.class).createSQLBuilder();
        sql.addClause(FindClause.AND, "cd_terzo", SQLBuilder.EQUALS, reversale.getReversale_terzo().getCd_terzo());
        sql.addSQLClause(FindClause.AND, "BANCA.CD_TERZO_DELEGATO", SQLBuilder.ISNULL, null);
        sql.addSQLClause(FindClause.AND, "BANCA.FL_CANCELLATO", SQLBuilder.EQUALS, "N");
        sql.addOrderBy("FL_CC_CDS DESC");
        if (reversale.getModalita_pagamento() != null && reversale.getModalita_pagamento().getCd_modalita_pag() != null) {
            SQLBuilder sql2 = getHome(userContext, Modalita_pagamentoBulk.class).createSQLBuilder();
            sql2.setHeader("SELECT DISTINCT TI_PAGAMENTO ");
            sql2.addTableToHeader("rif_modalita_pagamento");
            sql2.addSQLClause(FindClause.AND, "modalita_pagamento.cd_terzo", SQLBuilder.EQUALS, reversale.getReversale_terzo().getCd_terzo());
            sql2.addSQLClause(FindClause.AND, "modalita_pagamento.cd_modalita_pag", SQLBuilder.EQUALS, reversale.getModalita_pagamento().getCd_modalita_pag());
            sql2.addSQLJoin("modalita_pagamento.cd_modalita_pag", "rif_modalita_pagamento.cd_modalita_pag");
            sql2.addSQLClause(FindClause.AND, "MODALITA_PAGAMENTO.CD_TERZO_DELEGATO", SQLBuilder.ISNULL, null);
            sql.addSQLClause(FindClause.AND, "TI_PAGAMENTO", SQLBuilder.EQUALS, sql2);
        }
        List result = getHome(userContext, BancaBulk.class).fetchAll(sql);
        if (result.size() == 0)
            throw new ApplicationException("Non esistono coordinate bancarie per il terzo " + reversale.getReversale_terzo().getCd_terzo());
        return result;
    } else
        return null;
}
Also used : Modalita_pagamentoBulk(it.cnr.contab.anagraf00.core.bulk.Modalita_pagamentoBulk) SQLBuilder(it.cnr.jada.persistency.sql.SQLBuilder) ApplicationException(it.cnr.jada.comp.ApplicationException) BancaBulk(it.cnr.contab.anagraf00.core.bulk.BancaBulk)

Example 10 with ApplicationException

use of it.cnr.jada.comp.ApplicationException in project sigla-main by consiglionazionaledellericerche.

the class SaldoComponent method aggiornaSaldiAnniSuccessivi.

public void aggiornaSaldiAnniSuccessivi(UserContext userContext, String cd_cdr, String cd_linea_attivita, IVoceBilancioBulk voce, Integer esercizio_res, BigDecimal importo, Voce_f_saldi_cdr_lineaBulk saldoOld) throws ComponentException {
    Voce_f_saldi_cdr_lineaBulk saldoNew;
    try {
        Ass_evold_evnewHome ass_evold_evnewHome = (Ass_evold_evnewHome) getHome(userContext, Ass_evold_evnewBulk.class);
        CdrHome cdrHome = (CdrHome) getHome(userContext, CdrBulk.class);
        CdrBulk cdr = (CdrBulk) cdrHome.findByPrimaryKey(new CdrBulk(cd_cdr));
        getHomeCache(userContext).fetchAll(userContext, cdrHome);
        if (((Parametri_cdsHome) getHome(userContext, Parametri_cdsBulk.class)).isRibaltato(userContext, cdr.getCd_cds())) {
            // RECUPERO L'ELEMENTO DELL'ANNO IN CORSO
            for (Iterator esercizi = ((EsercizioHome) getHome(userContext, EsercizioBulk.class)).findEserciziSuccessivi(new EsercizioBulk(CNRUserContext.getCd_cds(userContext), CNRUserContext.getEsercizio(userContext))).iterator(); esercizi.hasNext(); ) {
                EsercizioBulk esercizio = (EsercizioBulk) esercizi.next();
                String codiceVoce = voce.getCd_voce(), codiceVoceForSaldoNew = null;
                // recupero la voce di ribaltamento
                Elemento_voceBulk elemento_voce = null;
                if (voce instanceof Voce_fBulk) {
                    if (!((Parametri_cnrHome) getHome(userContext, Parametri_cnrBulk.class)).isNuovoPdg(esercizio.getEsercizio())) {
                        voce = (Voce_fBulk) getHome(userContext, Voce_fBulk.class).findByPrimaryKey(new Voce_fBulk(voce.getCd_voce(), esercizio.getEsercizio(), saldoOld.getTi_appartenenza(), saldoOld.getTi_gestione()));
                        getHomeCache(userContext).fetchAll(userContext);
                        if (voce == null)
                            throw new ApplicationException("La voce: " + codiceVoce + " non è presente nell'esercizio: " + esercizio.getEsercizio());
                        saldoNew = findAndLock(userContext, esercizio.getEsercizio(), esercizio_res, cd_cdr, cd_linea_attivita, voce);
                        codiceVoceForSaldoNew = voce.getCd_voce();
                        elemento_voce = (Elemento_voceBulk) getHome(userContext, Elemento_voceBulk.class).findByPrimaryKey(new Elemento_voceBulk(voce.getCd_elemento_voce(), esercizio.getEsercizio(), voce.getTi_appartenenza(), voce.getTi_gestione()));
                    } else {
                        // recupero la voce di ribaltamento
                        // Voce_fBulk voceOld = (Voce_fBulk)getHome(userContext,Voce_fBulk.class).findByPrimaryKey(
                        // new Voce_fBulk(voce.getCd_voce(),CNRUserContext.getEsercizio(userContext),saldoOld.getTi_appartenenza(),saldoOld.getTi_gestione())
                        // );
                        // 
                        // getHomeCache(userContext).fetchAll(userContext);
                        // 
                        // if (voceOld == null)
                        // throw new ApplicationException("La voce: "+ voce.getCd_voce() +" non è presente nell'esercizio: "+CNRUserContext.getEsercizio(userContext));
                        Elemento_voceBulk elementoVoceOld = (Elemento_voceBulk) getHome(userContext, Elemento_voceBulk.class).findByPrimaryKey(new Elemento_voceBulk(saldoOld.getCd_voce(), CNRUserContext.getEsercizio(userContext), saldoOld.getTi_appartenenza(), saldoOld.getTi_gestione()));
                        if (elementoVoceOld == null)
                            throw new ApplicationException("Elemento voce non trovato per la Voce: " + saldoOld.getCd_voce() + " nell'esercizio: " + CNRUserContext.getEsercizio(userContext));
                        // cerco la voce del nuovo anno
                        List listVociNew = ass_evold_evnewHome.findAssElementoVoceNewList(elementoVoceOld);
                        if (!listVociNew.isEmpty()) {
                            if (listVociNew.size() > 1)
                                throw new ApplicationException("Trovate nella tabella di associazione Vecchie/Nuove Voci più elementi voce nel nuovo anno per la Voce: " + elementoVoceOld.getCd_voce() + " nell'esercizio: " + CNRUserContext.getEsercizio(userContext));
                            elemento_voce = (Elemento_voceBulk) listVociNew.get(0);
                        } else {
                            elemento_voce = (Elemento_voceBulk) getHome(userContext, Elemento_voceBulk.class).findByPrimaryKey(new Elemento_voceBulk(elementoVoceOld.getCd_elemento_voce(), esercizio.getEsercizio(), elementoVoceOld.getTi_appartenenza(), elementoVoceOld.getTi_gestione()));
                        }
                        if (elemento_voce == null || elemento_voce.getEsercizio().compareTo(esercizio.getEsercizio()) != 0)
                            throw new ApplicationException("Elemento voce non trovato o associato ad una voce di anno differente rispetto a quello di ribaltamento per la Voce: " + saldoOld.getCd_voce() + " nell'esercizio: " + CNRUserContext.getEsercizio(userContext));
                        saldoNew = findAndLock(userContext, esercizio.getEsercizio(), esercizio_res, cd_cdr, cd_linea_attivita, elemento_voce);
                        codiceVoceForSaldoNew = elemento_voce.getCd_voce();
                    }
                } else {
                    // recupero la voce di ribaltamento
                    Elemento_voceBulk elementoVoceOld = (Elemento_voceBulk) getHome(userContext, Elemento_voceBulk.class).findByPrimaryKey(new Elemento_voceBulk(voce.getCd_elemento_voce(), CNRUserContext.getEsercizio(userContext), voce.getTi_appartenenza(), voce.getTi_gestione()));
                    if (elementoVoceOld == null)
                        throw new ApplicationException("Elemento voce non trovato per la Voce: " + voce.getCd_voce() + " nell'esercizio: " + CNRUserContext.getEsercizio(userContext));
                    getHomeCache(userContext).fetchAll(userContext);
                    // cerco la voce del nuovo anno
                    List listVociNew = ass_evold_evnewHome.findAssElementoVoceNewList(elementoVoceOld);
                    if (!listVociNew.isEmpty()) {
                        if (listVociNew.size() > 1)
                            throw new ApplicationException("Trovate nella tabella di associazione Vecchie/Nuove Voci più elementi voce nel nuovo anno per la Voce: " + elementoVoceOld.getCd_voce() + " nell'esercizio: " + CNRUserContext.getEsercizio(userContext));
                        elemento_voce = (Elemento_voceBulk) listVociNew.get(0);
                    } else {
                        elemento_voce = (Elemento_voceBulk) getHome(userContext, Elemento_voceBulk.class).findByPrimaryKey(new Elemento_voceBulk(elementoVoceOld.getCd_elemento_voce(), esercizio.getEsercizio(), elementoVoceOld.getTi_appartenenza(), elementoVoceOld.getTi_gestione()));
                    }
                    if (elemento_voce == null || elemento_voce.getEsercizio().compareTo(esercizio.getEsercizio()) != 0)
                        throw new ApplicationException("Elemento voce non trovato o associato ad una voce di anno differente rispetto a quello di ribaltamento per la Voce: " + elementoVoceOld.getCd_voce() + " nell'esercizio: " + CNRUserContext.getEsercizio(userContext));
                    saldoNew = findAndLock(userContext, esercizio.getEsercizio(), esercizio_res, cd_cdr, cd_linea_attivita, elemento_voce);
                    codiceVoceForSaldoNew = elemento_voce.getCd_voce();
                }
                getHomeCache(userContext).fetchAll(userContext);
                WorkpackageBulk workpackage = (WorkpackageBulk) getHome(userContext, WorkpackageBulk.class).findByPrimaryKey(new WorkpackageBulk(cd_cdr, cd_linea_attivita));
                // Obbligatorio cofog sulle GAE
                Parametri_cnrBulk par = (Parametri_cnrBulk) getHome(userContext, Parametri_cnrBulk.class).findByPrimaryKey(new Parametri_cnrBulk(esercizio.getEsercizio()));
                if (par != null && par.getLivello_pdg_cofog() != 0)
                    if ((workpackage.getTi_gestione().compareTo(CostantiTi_gestione.TI_GESTIONE_SPESE) == 0) && workpackage.getCd_cofog() == null)
                        throw new ApplicationException("Non è possibile utilizzare GAE di spesa in cui non è indicata la classificazione Cofog.");
                getHomeCache(userContext).fetchAll(userContext);
                if (saldoNew == null) {
                    if (elemento_voce == null)
                        throw new ApplicationException("Elemento voce non trovato per la Voce: " + voce.getCd_voce() + " nell'esercizio: " + esercizio.getEsercizio());
                    saldoNew = new Voce_f_saldi_cdr_lineaBulk(esercizio.getEsercizio(), esercizio_res, cd_cdr, cd_linea_attivita, voce.getTi_appartenenza(), voce.getTi_gestione(), codiceVoceForSaldoNew);
                    saldoNew.setCd_elemento_voce(elemento_voce.getCd_elemento_voce());
                    saldoNew.inizializzaSommeAZero();
                    saldoNew.setToBeCreated();
                    insertBulk(userContext, saldoNew);
                }
                if (saldoNew != null) {
                    saldoNew.setIm_stanz_res_improprio(saldoNew.getIm_stanz_res_improprio().subtract(importo));
                    // calcolo i vincoli
                    Pdg_vincoloHome home = (Pdg_vincoloHome) getHome(userContext, Pdg_vincoloBulk.class);
                    List<Pdg_vincoloBulk> listVincoli = home.cercaDettagliVincolati(saldoNew);
                    BigDecimal impVincolo = listVincoli.stream().map(e -> e.getIm_vincolo()).reduce((x, y) -> x.add(y)).orElse(BigDecimal.ZERO);
                    BigDecimal diff = saldoNew.getDispAdImpResiduoImproprio().subtract(impVincolo);
                    if (diff.compareTo(Utility.ZERO) < 0) {
                        if (voce.getTi_gestione().equalsIgnoreCase(Voce_f_saldi_cdr_lineaBulk.TIPO_GESTIONE_SPESA)) {
                            if (!((elemento_voce.getFl_partita_giro() != null && elemento_voce.getFl_partita_giro().booleanValue()) || (elemento_voce.getFl_limite_ass_obblig() != null && !elemento_voce.getFl_limite_ass_obblig().booleanValue() && workpackage.getFl_limite_ass_obblig() != null && !workpackage.getFl_limite_ass_obblig().booleanValue()))) {
                                StringBuilder messaggio = new StringBuilder("Impossibile effettuare l'operazione !\n" + "Nell'esercizio " + esercizio.getEsercizio() + " e per il CdR " + cd_cdr + ", " + " Voce " + voce.getCd_voce() + " e GAE " + cd_linea_attivita + " lo stanziamento Residuo Improprio " + " diventerebbe negativo (" + new it.cnr.contab.util.EuroFormat().format(diff.abs()) + ")");
                                if (impVincolo.compareTo(BigDecimal.ZERO) > 0)
                                    messaggio.append(" in conseguenza della presenza di vincoli di spesa per un importo di " + new it.cnr.contab.util.EuroFormat().format(impVincolo.abs()));
                                throw new ApplicationException(messaggio.toString());
                            }
                        }
                    }
                    saldoNew.setToBeUpdated();
                    updateBulk(userContext, saldoNew);
                }
            }
        }
    } catch (PersistencyException e) {
        throw new ComponentException(e);
    } catch (IntrospectionException e) {
        throw new ComponentException(e);
    }
}
Also used : V_classificazione_vociBulk(it.cnr.contab.config00.pdcfin.cla.bulk.V_classificazione_vociBulk) Pdg_variazione_riga_gestBulk(it.cnr.contab.pdg01.bulk.Pdg_variazione_riga_gestBulk) EsercizioBulk(it.cnr.contab.config00.esercizio.bulk.EsercizioBulk) Voce_piano_economico_prgBulk(it.cnr.contab.progettiric00.tabrif.bulk.Voce_piano_economico_prgBulk) BigDecimal(java.math.BigDecimal) Liquidazione_iva_variazioniBulk(it.cnr.contab.gestiva00.core.bulk.Liquidazione_iva_variazioniBulk) Var_stanz_res_rigaBulk(it.cnr.contab.varstanz00.bulk.Var_stanz_res_rigaBulk) CostantiTi_gestione(it.cnr.contab.config00.latt.bulk.CostantiTi_gestione) it.cnr.contab.progettiric00.core.bulk(it.cnr.contab.progettiric00.core.bulk) ObjectNotFoundException(it.cnr.jada.persistency.ObjectNotFoundException) Ass_var_stanz_res_cdrBulk(it.cnr.contab.varstanz00.bulk.Ass_var_stanz_res_cdrBulk) Pdg_variazioneBulk(it.cnr.contab.pdg00.bulk.Pdg_variazioneBulk) PersistentHome(it.cnr.jada.persistency.sql.PersistentHome) CdrHome(it.cnr.contab.config00.sto.bulk.CdrHome) Classificazione_vociBulk(it.cnr.contab.config00.pdcfin.cla.bulk.Classificazione_vociBulk) Timestamp(java.sql.Timestamp) it.cnr.contab.config00.bulk(it.cnr.contab.config00.bulk) SQLBuilder(it.cnr.jada.persistency.sql.SQLBuilder) Tipo_unita_organizzativaHome(it.cnr.contab.config00.sto.bulk.Tipo_unita_organizzativaHome) Pdg_modulo_speseBulk(it.cnr.contab.prevent01.bulk.Pdg_modulo_speseBulk) Collectors(java.util.stream.Collectors) Ass_pdg_variazione_cdrHome(it.cnr.contab.pdg00.cdip.bulk.Ass_pdg_variazione_cdrHome) Serializable(java.io.Serializable) RemoteException(java.rmi.RemoteException) Ass_var_stanz_res_cdrHome(it.cnr.contab.varstanz00.bulk.Ass_var_stanz_res_cdrHome) EJBException(javax.ejb.EJBException) DetailedRuntimeException(it.cnr.jada.DetailedRuntimeException) Stream(java.util.stream.Stream) Var_stanz_resBulk(it.cnr.contab.varstanz00.bulk.Var_stanz_resBulk) WorkpackageBulk(it.cnr.contab.config00.latt.bulk.WorkpackageBulk) Voce_piano_economico_prgHome(it.cnr.contab.progettiric00.tabrif.bulk.Voce_piano_economico_prgHome) UserContext(it.cnr.jada.UserContext) java.util(java.util) OggettoBulk(it.cnr.jada.bulk.OggettoBulk) Unita_organizzativaBulk(it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk) ApplicationRuntimeException(it.cnr.jada.comp.ApplicationRuntimeException) Utility(it.cnr.contab.util.Utility) it.cnr.contab.prevent00.bulk(it.cnr.contab.prevent00.bulk) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) Pdg_variazioneHome(it.cnr.contab.pdg00.bulk.Pdg_variazioneHome) Pdg_modulo_costiBulk(it.cnr.contab.prevent01.bulk.Pdg_modulo_costiBulk) SQLException(java.sql.SQLException) it.cnr.contab.config00.pdcfin.bulk(it.cnr.contab.config00.pdcfin.bulk) V_classificazione_vociHome(it.cnr.contab.config00.pdcfin.cla.bulk.V_classificazione_vociHome) Var_stanz_res_rigaHome(it.cnr.contab.varstanz00.bulk.Var_stanz_res_rigaHome) Tipo_variazioneBulk(it.cnr.contab.pdg01.bulk.Tipo_variazioneBulk) FindClause(it.cnr.jada.persistency.sql.FindClause) CNRUserContext(it.cnr.contab.utenze00.bp.CNRUserContext) Configurazione_cnrComponentSession(it.cnr.contab.config00.ejb.Configurazione_cnrComponentSession) WorkpackageHome(it.cnr.contab.config00.latt.bulk.WorkpackageHome) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) ContrattoBulk(it.cnr.contab.config00.contratto.bulk.ContrattoBulk) Var_stanz_resHome(it.cnr.contab.varstanz00.bulk.Var_stanz_resHome) CdrBulk(it.cnr.contab.config00.sto.bulk.CdrBulk) BulkList(it.cnr.jada.bulk.BulkList) Pdg_variazione_riga_gestHome(it.cnr.contab.pdg01.bulk.Pdg_variazione_riga_gestHome) Numerazione_doc_contBulk(it.cnr.contab.doccont00.core.bulk.Numerazione_doc_contBulk) ObbligazioneBulk(it.cnr.contab.doccont00.core.bulk.ObbligazioneBulk) EsercizioHome(it.cnr.contab.config00.esercizio.bulk.EsercizioHome) ComponentException(it.cnr.jada.comp.ComponentException) Ass_pdg_variazione_cdrBulk(it.cnr.contab.pdg00.cdip.bulk.Ass_pdg_variazione_cdrBulk) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) CdrBulk(it.cnr.contab.config00.sto.bulk.CdrBulk) EsercizioBulk(it.cnr.contab.config00.esercizio.bulk.EsercizioBulk) PersistencyException(it.cnr.jada.persistency.PersistencyException) BulkList(it.cnr.jada.bulk.BulkList) WorkpackageBulk(it.cnr.contab.config00.latt.bulk.WorkpackageBulk) CdrHome(it.cnr.contab.config00.sto.bulk.CdrHome) BigDecimal(java.math.BigDecimal) ApplicationException(it.cnr.jada.comp.ApplicationException) ComponentException(it.cnr.jada.comp.ComponentException)

Aggregations

ApplicationException (it.cnr.jada.comp.ApplicationException)623 PersistencyException (it.cnr.jada.persistency.PersistencyException)301 ComponentException (it.cnr.jada.comp.ComponentException)286 RemoteException (java.rmi.RemoteException)185 IntrospectionException (it.cnr.jada.persistency.IntrospectionException)158 BigDecimal (java.math.BigDecimal)141 SQLException (java.sql.SQLException)132 SQLBuilder (it.cnr.jada.persistency.sql.SQLBuilder)126 EJBException (javax.ejb.EJBException)113 CNRUserContext (it.cnr.contab.utenze00.bp.CNRUserContext)87 UserContext (it.cnr.jada.UserContext)82 BulkList (it.cnr.jada.bulk.BulkList)81 java.util (java.util)77 Iterator (java.util.Iterator)75 DetailedRuntimeException (it.cnr.jada.DetailedRuntimeException)74 OggettoBulk (it.cnr.jada.bulk.OggettoBulk)73 ValidationException (it.cnr.jada.bulk.ValidationException)71 ApplicationRuntimeException (it.cnr.jada.comp.ApplicationRuntimeException)68 Timestamp (java.sql.Timestamp)64 List (java.util.List)63