Search in sources :

Example 16 with ComponentException

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

the class ElaboraFileIntraAction method doConfermaElaborazione.

public Forward doConfermaElaborazione(ActionContext context) throws ComponentException, PersistencyException, IntrospectionException {
    try {
        fillModel(context);
        ElaboraFileIntraBP bp = (ElaboraFileIntraBP) context.getBusinessProcess();
        if (bp.getModel() instanceof VIntrastatBulk) {
            VIntrastatBulk dett = (VIntrastatBulk) bp.getModel();
            try {
                bp.confermaElaborazione(context, dett);
            } catch (Exception e) {
                return handleException(context, e);
            }
            bp.setMessage("Elaborazione confermata.");
            return context.findDefaultForward();
        }
    } catch (Exception e) {
        return handleException(context, e);
    }
    return context.findDefaultForward();
}
Also used : VIntrastatBulk(it.cnr.contab.docamm00.docs.bulk.VIntrastatBulk) ElaboraFileIntraBP(it.cnr.contab.docamm00.bp.ElaboraFileIntraBP) BusinessProcessException(it.cnr.jada.action.BusinessProcessException) PersistencyException(it.cnr.jada.persistency.PersistencyException) ComponentException(it.cnr.jada.comp.ComponentException) IntrospectionException(it.cnr.jada.persistency.IntrospectionException)

Example 17 with ComponentException

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

the class ElaboraFileIntraAction method doElaboraFile.

public Forward doElaboraFile(ActionContext context) throws ComponentException, PersistencyException, IntrospectionException {
    try {
        fillModel(context);
        ElaboraFileIntraBP bp = (ElaboraFileIntraBP) context.getBusinessProcess();
        if (bp.getModel() instanceof VIntrastatBulk) {
            VIntrastatBulk dett = (VIntrastatBulk) bp.getModel();
            if (dett.getMese() == null)
                return handleException(context, new it.cnr.jada.bulk.ValidationException("Attenzione: specificare il Mese"));
            try {
                bp.doElaboraFile(context, dett, Boolean.FALSE);
            } catch (Exception e) {
                return handleException(context, e);
            }
        } else {
            VIntra12Bulk dett = (VIntra12Bulk) bp.getModel();
            if (dett.getMese() == null)
                return handleException(context, new it.cnr.jada.bulk.ValidationException("Attenzione: specificare il Mese"));
            try {
                bp.doElaboraFile(context, dett);
            } catch (Exception e) {
                return handleException(context, e);
            }
        }
        bp.setMessage("Elaborazione completata.");
        return context.findDefaultForward();
    } catch (it.cnr.jada.bulk.FillException e) {
        return handleException(context, e);
    }
}
Also used : VIntrastatBulk(it.cnr.contab.docamm00.docs.bulk.VIntrastatBulk) ElaboraFileIntraBP(it.cnr.contab.docamm00.bp.ElaboraFileIntraBP) BusinessProcessException(it.cnr.jada.action.BusinessProcessException) PersistencyException(it.cnr.jada.persistency.PersistencyException) ComponentException(it.cnr.jada.comp.ComponentException) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) VIntra12Bulk(it.cnr.contab.docamm00.docs.bulk.VIntra12Bulk)

Example 18 with ComponentException

use of it.cnr.jada.comp.ComponentException 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 19 with ComponentException

use of it.cnr.jada.comp.ComponentException 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 20 with ComponentException

use of it.cnr.jada.comp.ComponentException 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

ComponentException (it.cnr.jada.comp.ComponentException)1112 PersistencyException (it.cnr.jada.persistency.PersistencyException)670 ApplicationException (it.cnr.jada.comp.ApplicationException)504 RemoteException (java.rmi.RemoteException)491 IntrospectionException (it.cnr.jada.persistency.IntrospectionException)341 EJBException (javax.ejb.EJBException)255 SQLException (java.sql.SQLException)248 SQLBuilder (it.cnr.jada.persistency.sql.SQLBuilder)202 BigDecimal (java.math.BigDecimal)201 DetailedRuntimeException (it.cnr.jada.DetailedRuntimeException)195 UserContext (it.cnr.jada.UserContext)175 CNRUserContext (it.cnr.contab.utenze00.bp.CNRUserContext)158 List (java.util.List)153 Unita_organizzativaBulk (it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk)151 Iterator (java.util.Iterator)143 BulkList (it.cnr.jada.bulk.BulkList)142 BusinessProcessException (it.cnr.jada.action.BusinessProcessException)131 ApplicationRuntimeException (it.cnr.jada.comp.ApplicationRuntimeException)129 ApplicationMessageFormatException (it.cnr.contab.util.ApplicationMessageFormatException)124 OggettoBulk (it.cnr.jada.bulk.OggettoBulk)117