Search in sources :

Example 1 with Progetto_rimodulazioneBulk

use of it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazioneBulk in project sigla-main by consiglionazionaledellericerche.

the class SaldoComponent method getMessaggioSfondamentoPianoEconomico.

// Controllo che restituisce errore.
// Se la variazione passa a definitivo controllo che gli importi inseriti in variazione non superino la disponibilità residua.
// Se la variazione passa ad approvato controllo solo che il piano economico non sia sfondato sul voci del piano economico movimentate dalla variazione
private String getMessaggioSfondamentoPianoEconomico(UserContext userContext, OggettoBulk variazione, boolean locked) throws ComponentException {
    StringJoiner messaggio = new StringJoiner("\n\n");
    boolean isVariazioneCompetenza = Optional.ofNullable(variazione).map(Pdg_variazioneBulk.class::isInstance).orElse(Boolean.FALSE);
    boolean isVariazioneResidua = Optional.ofNullable(variazione).map(Var_stanz_resBulk.class::isInstance).orElse(Boolean.FALSE);
    if (!isVariazioneCompetenza && !isVariazioneResidua)
        throw new ApplicationException("Errore nella call del metodo getMessaggioSfondamentoPianoEconomico. Contattare il CED.");
    try {
        Configurazione_cnrComponentSession configSession = (Configurazione_cnrComponentSession) Utility.createConfigurazioneCnrComponentSession();
        String cdNaturaReimpiego = configSession.getVal01(userContext, new Integer(0), null, Configurazione_cnrBulk.PK_GESTIONE_PROGETTI, Configurazione_cnrBulk.SK_NATURA_REIMPIEGO);
        BigDecimal annoFrom = configSession.getIm01(userContext, new Integer(0), null, Configurazione_cnrBulk.PK_GESTIONE_PROGETTI, Configurazione_cnrBulk.SK_PROGETTO_PIANO_ECONOMICO);
        Integer esercizioVariazione = Optional.ofNullable(isVariazioneCompetenza ? Optional.of(variazione).map(Pdg_variazioneBulk.class::cast).map(Pdg_variazioneBulk::getEsercizio).orElse(null) : Optional.of(variazione).map(Var_stanz_resBulk.class::cast).map(Var_stanz_resBulk::getEsercizio_residuo).orElse(null)).orElseThrow(() -> new ApplicationException("Esercizio Variazione non individuata."));
        if (Optional.ofNullable(annoFrom).map(BigDecimal::intValue).filter(el -> el.compareTo(esercizioVariazione) <= 0).isPresent()) {
            List<CtrlDispPianoEco> listCtrlDispPianoEcoEtr = new ArrayList<CtrlDispPianoEco>();
            Pdg_variazioneHome detHome = (Pdg_variazioneHome) getHome(userContext, Pdg_variazioneBulk.class);
            Var_stanz_resHome varResHome = (Var_stanz_resHome) getHome(userContext, Var_stanz_resBulk.class);
            Progetto_piano_economicoHome ppeHome = (Progetto_piano_economicoHome) getHome(userContext, Progetto_piano_economicoBulk.class);
            Optional<Progetto_rimodulazioneBulk> optProgettoRimodulazioneVariazione = isVariazioneCompetenza ? Optional.of(variazione).map(Pdg_variazioneBulk.class::cast).map(Pdg_variazioneBulk::getProgettoRimodulazione) : Optional.of(variazione).map(Var_stanz_resBulk.class::cast).map(Var_stanz_resBulk::getProgettoRimodulazione);
            ProgettoBulk progettoRimodulato = null;
            if (optProgettoRimodulazioneVariazione.isPresent()) {
                Progetto_rimodulazioneHome prgHome = (Progetto_rimodulazioneHome) getHome(userContext, Progetto_rimodulazioneBulk.class);
                Progetto_rimodulazioneBulk rimodulazione = prgHome.rebuildRimodulazione(userContext, optProgettoRimodulazioneVariazione.get());
                progettoRimodulato = (ProgettoBulk) prgHome.getProgettoRimodulato(rimodulazione).clone();
            }
            if (isVariazioneCompetenza) {
                for (java.util.Iterator dett = detHome.findDettagliEntrataVariazioneGestionale((Pdg_variazioneBulk) variazione).iterator(); dett.hasNext(); ) {
                    Pdg_variazione_riga_gestBulk rigaVar = (Pdg_variazione_riga_gestBulk) dett.next();
                    WorkpackageBulk latt = ((WorkpackageHome) getHome(userContext, WorkpackageBulk.class)).searchGAECompleta(userContext, CNRUserContext.getEsercizio(userContext), rigaVar.getLinea_attivita().getCd_centro_responsabilita(), rigaVar.getLinea_attivita().getCd_linea_attivita());
                    ProgettoBulk progetto = latt.getProgetto();
                    if (Optional.ofNullable(progettoRimodulato).filter(prgRim -> !prgRim.getPg_progetto().equals(progetto.getPg_progetto())).isPresent())
                        messaggio.add("Progetto " + progetto.getCd_progetto() + ": " + "movimentazione non possibile in quanto la variazione è di tipo rimodulazione di altro progetto (" + progettoRimodulato.getCd_progetto() + ").");
                    BigDecimal imVariazioneFin = Utility.nvl(rigaVar.getIm_entrata());
                    // recupero il record se presente altrimenti ne creo uno nuovo
                    CtrlDispPianoEco dispPianoEco = listCtrlDispPianoEcoEtr.stream().filter(el -> el.getProgetto().getPg_progetto().equals(progetto.getPg_progetto())).findFirst().orElse(new CtrlDispPianoEco(progetto, null));
                    dispPianoEco.setImpFinanziato(dispPianoEco.getImpFinanziato().add(imVariazioneFin));
                    if (!listCtrlDispPianoEcoEtr.contains(dispPianoEco))
                        listCtrlDispPianoEcoEtr.add(dispPianoEco);
                }
                for (CtrlDispPianoEco ctrlDispPianoEco : listCtrlDispPianoEcoEtr) {
                    ProgettoBulk progetto = ctrlDispPianoEco.getProgetto();
                    BigDecimal totFinanziato;
                    List<Progetto_piano_economicoBulk> pianoEconomicoList = null;
                    if (Optional.ofNullable(progettoRimodulato).isPresent())
                        pianoEconomicoList = progettoRimodulato.getAllDetailsProgettoPianoEconomico();
                    else
                        pianoEconomicoList = (List<Progetto_piano_economicoBulk>) ppeHome.findProgettoPianoEconomicoList(progetto.getPg_progetto());
                    // Il controllo puntuale sul piano economico deve partire se:
                    // 1) sul progetto esiste un piano economico per l'anno della variazione.
                    // 2) l'anno della variazione è gestita (<=annoFrom)
                    // 3) l'anno della variazione rientra nel periodo di validità del progetto, ovvero esiste almeno un dettaglio per l'anno della variazione stessa
                    // In caso contrario viene controllato solo l'importo complessivo del progetto
                    boolean ctrlFinanziamentoAnnuale = progetto.isPianoEconomicoRequired() && (Optional.ofNullable(progetto).flatMap(prg -> Optional.ofNullable(prg.getOtherField())).filter(of -> of.getAnnoInizio() <= esercizioVariazione).filter(of -> of.getAnnoFine() >= esercizioVariazione).isPresent() || Optional.ofNullable(pianoEconomicoList).orElse(new ArrayList<>()).stream().filter(el -> el.getEsercizio_piano().equals(esercizioVariazione)).findAny().isPresent());
                    if (ctrlFinanziamentoAnnuale) {
                        totFinanziato = pianoEconomicoList.stream().filter(el -> el.getEsercizio_piano().equals(esercizioVariazione)).map(Progetto_piano_economicoBulk::getIm_spesa_finanziato).reduce((x, y) -> x.add(y)).orElse(BigDecimal.ZERO);
                    } else {
                        totFinanziato = Optional.ofNullable(progetto.getOtherField()).map(Progetto_other_fieldBulk::getImFinanziato).orElse(BigDecimal.ZERO);
                    }
                    // Controllo che la quota finanziata sia almeno pari alle entrate del progetto
                    BigDecimal assestatoEtrPrg = this.getStanziamentoAssestatoProgetto(userContext, progetto, Elemento_voceHome.GESTIONE_ENTRATE, (ctrlFinanziamentoAnnuale ? esercizioVariazione : null), null, null);
                    if (totFinanziato.compareTo(assestatoEtrPrg.add(ctrlDispPianoEco.getImpFinanziato())) < 0)
                        messaggio.add("Progetto " + progetto.getCd_progetto() + ": " + (ctrlFinanziamentoAnnuale ? "per l'esercizio " + esercizioVariazione + " " : "") + "l'assestato entrate " + (ctrlFinanziamentoAnnuale ? "" : "totale ") + "(" + new it.cnr.contab.util.EuroFormat().format(assestatoEtrPrg.add(ctrlDispPianoEco.getImpFinanziato())) + ") non può essere superiore alla quota finanziata (" + new it.cnr.contab.util.EuroFormat().format(totFinanziato) + ").");
                    if (progetto.getOtherField().getTipoFinanziamento().getFlAssociaContratto() && !progetto.getOtherField().getFlControlliDisabled()) {
                        // Recupero la lista dei contratti attivi collegati al progetto
                        ProgettoHome progettoHome = (ProgettoHome) getHome(userContext, ProgettoBulk.class);
                        java.util.Collection<ContrattoBulk> contrattiAssociati = progettoHome.findContratti(progetto.getPg_progetto());
                        BigDecimal impContrattiAttivi = contrattiAssociati.stream().filter(el -> el.isAttivo() || el.isAttivo_e_Passivo()).filter(el -> !el.getDt_stipula().after(((Pdg_variazioneBulk) variazione).getDt_chiusura())).map(ContrattoBulk::getIm_contratto_attivo).reduce((x, y) -> x.add(y)).orElse(BigDecimal.ZERO);
                        if (impContrattiAttivi.compareTo(assestatoEtrPrg.add(ctrlDispPianoEco.getImpFinanziato())) < 0)
                            messaggio.add("Progetto " + progetto.getCd_progetto() + ": " + (ctrlFinanziamentoAnnuale ? "per l'esercizio " + esercizioVariazione + " " : "") + "l'assestato entrate " + (ctrlFinanziamentoAnnuale ? "" : "totale ") + "(" + new it.cnr.contab.util.EuroFormat().format(assestatoEtrPrg.add(ctrlDispPianoEco.getImpFinanziato())) + ") non può essere superiore alla somma dei contratti associati al progetto (" + new it.cnr.contab.util.EuroFormat().format(impContrattiAttivi) + ") stipulati in data precedente rispetto alla data di chiusura della variazione (" + new java.text.SimpleDateFormat("dd/MM/yyyy").format(((Pdg_variazioneBulk) variazione).getDt_chiusura()) + ").");
                    }
                }
            }
            List<CtrlDispPianoEco> listCtrlDispPianoEco = new ArrayList<CtrlDispPianoEco>();
            if (isVariazioneCompetenza) {
                for (java.util.Iterator dett = detHome.findDettagliSpesaVariazioneGestionale((Pdg_variazioneBulk) variazione).iterator(); dett.hasNext(); ) {
                    Pdg_variazione_riga_gestBulk rigaVar = (Pdg_variazione_riga_gestBulk) dett.next();
                    WorkpackageBulk latt = ((WorkpackageHome) getHome(userContext, WorkpackageBulk.class)).searchGAECompleta(userContext, CNRUserContext.getEsercizio(userContext), rigaVar.getLinea_attivita().getCd_centro_responsabilita(), rigaVar.getLinea_attivita().getCd_linea_attivita());
                    ProgettoBulk progetto = latt.getProgetto();
                    if (Optional.ofNullable(progettoRimodulato).filter(prgRim -> !prgRim.getPg_progetto().equals(progetto.getPg_progetto())).isPresent())
                        messaggio.add("Progetto " + progetto.getCd_progetto() + ": " + "movimentazione non possibile in quanto la variazione è di tipo rimodulazione di altro progetto (" + progettoRimodulato.getCd_progetto() + ").");
                    // la variazione non è di tipo Maggiori Entrate/Spese nell'ambito del CDS
                    if (Optional.ofNullable(progetto.getOtherField().getAnnoFine()).filter(annoFine -> annoFine.compareTo(esercizioVariazione) >= 0).isPresent() || !Tipo_variazioneBulk.VARIAZIONE_POSITIVA_STESSO_ISTITUTO.equals(((Pdg_variazioneBulk) variazione).getTipologia())) {
                        boolean isNaturaReimpiego = Optional.ofNullable(cdNaturaReimpiego).map(el -> el.equals(latt.getCd_natura())).orElse(Boolean.FALSE);
                        BigDecimal imSpeseInterne = Utility.nvl(rigaVar.getIm_spese_gest_decentrata_int()).compareTo(BigDecimal.ZERO) != 0 ? rigaVar.getIm_spese_gest_decentrata_int() : Utility.nvl(rigaVar.getIm_spese_gest_accentrata_int());
                        BigDecimal imSpeseEsterne = Utility.nvl(rigaVar.getIm_spese_gest_decentrata_est()).compareTo(BigDecimal.ZERO) != 0 ? rigaVar.getIm_spese_gest_decentrata_est() : Utility.nvl(rigaVar.getIm_spese_gest_accentrata_est());
                        BigDecimal imVariazioneFin = BigDecimal.ZERO;
                        BigDecimal imVariazioneCofin = imSpeseInterne;
                        if (isNaturaReimpiego)
                            imVariazioneCofin = imVariazioneCofin.add(imSpeseEsterne);
                        else
                            imVariazioneFin = imSpeseEsterne;
                        List<Progetto_piano_economicoBulk> pianoEconomicoList = null;
                        if (Optional.ofNullable(progettoRimodulato).isPresent())
                            pianoEconomicoList = progettoRimodulato.getAllDetailsProgettoPianoEconomico().stream().filter(ppe -> {
                                return ppe.getVociBilancioAssociate().stream().filter(ppeVoc -> ppeVoc.getEsercizio_voce().equals(rigaVar.getElemento_voce().getEsercizio())).filter(ppeVoc -> ppeVoc.getTi_appartenenza().equals(rigaVar.getElemento_voce().getTi_appartenenza())).filter(ppeVoc -> ppeVoc.getTi_gestione().equals(rigaVar.getElemento_voce().getTi_gestione())).filter(ppeVoc -> ppeVoc.getCd_elemento_voce().equals(rigaVar.getElemento_voce().getCd_elemento_voce())).findFirst().isPresent();
                            }).collect(Collectors.toList());
                        else
                            pianoEconomicoList = (List<Progetto_piano_economicoBulk>) ppeHome.findProgettoPianoEconomicoList(esercizioVariazione, progetto.getPg_progetto(), rigaVar.getElemento_voce());
                        // Il controllo puntuale sul piano economico deve partire se:
                        // 1) sul progetto esiste un piano economico per l'anno della variazione.
                        // 2) l'anno della variazione è gestita (<=annoFrom)
                        // 3) l'anno della variazione rientra nel periodo di validità del progetto, ovvero esiste almeno un dettaglio per l'anno della variazione stessa
                        // In caso contrario viene controllato solo l'importo complessivo del progetto
                        boolean ctrlFinanziamentoAnnuale = progetto.isPianoEconomicoRequired() && (Optional.ofNullable(progetto).flatMap(prg -> Optional.ofNullable(prg.getOtherField())).filter(of -> of.getAnnoInizio() <= esercizioVariazione).filter(of -> of.getAnnoFine() >= esercizioVariazione).isPresent() || Optional.ofNullable(pianoEconomicoList).orElse(new ArrayList<>()).stream().filter(el -> el.getEsercizio_piano().equals(esercizioVariazione)).findAny().isPresent());
                        if (ctrlFinanziamentoAnnuale) {
                            if (pianoEconomicoList == null || pianoEconomicoList.isEmpty()) {
                                // messaggio che non esce per rimodulazione progetto in quanto controllo effettuato in fase di approvaziomne ultima variazione
                                if (!Optional.ofNullable(progettoRimodulato).isPresent())
                                    messaggio.add("Non risulta essere stato imputato alcun valore nel piano economico del progetto " + progetto.getCd_progetto() + " per la Voce " + rigaVar.getCd_elemento_voce() + ".");
                            } else if (pianoEconomicoList.size() > 1)
                                messaggio.add("La Voce " + rigaVar.getCd_elemento_voce() + " risulta associata a più voci di piano economico del progetto " + progetto.getCd_progetto() + ".");
                            else {
                                Progetto_piano_economicoBulk progettoPianoEconomico = pianoEconomicoList.get(0);
                                if (progettoPianoEconomico.getFl_ctrl_disp() && (progettoPianoEconomico.getEsercizio_piano().equals(0) || progettoPianoEconomico.getEsercizio_piano().equals(rigaVar.getEsercizio()))) {
                                    // recupero il record se presente altrimenti ne creo uno nuovo
                                    CtrlDispPianoEco dispPianoEco = listCtrlDispPianoEco.stream().filter(el -> el.getProgetto().getPg_progetto().equals(progetto.getPg_progetto())).filter(el -> el.getProgettoPianoEconomico().getPg_progetto().equals(progetto.getPg_progetto())).filter(el -> el.getProgettoPianoEconomico().getCd_unita_organizzativa().equals(progettoPianoEconomico.getCd_unita_organizzativa())).filter(el -> el.getProgettoPianoEconomico().getCd_voce_piano().equals(progettoPianoEconomico.getCd_voce_piano())).findFirst().orElse(new CtrlDispPianoEco(progetto, progettoPianoEconomico));
                                    dispPianoEco.setImpFinanziato(dispPianoEco.getImpFinanziato().add(imVariazioneFin));
                                    dispPianoEco.setImpCofinanziato(dispPianoEco.getImpCofinanziato().add(imVariazioneCofin));
                                    if (!listCtrlDispPianoEco.contains(dispPianoEco))
                                        listCtrlDispPianoEco.add(dispPianoEco);
                                }
                            }
                        } else {
                            // recupero il record se presente altrimenti ne creo uno nuovo
                            CtrlDispPianoEco dispPianoEco = listCtrlDispPianoEco.stream().filter(el -> el.getProgetto().getPg_progetto().equals(progetto.getPg_progetto())).filter(el -> !Optional.ofNullable(el.getProgettoPianoEconomico()).isPresent()).findFirst().orElse(new CtrlDispPianoEco(progetto, null));
                            dispPianoEco.setImpFinanziato(dispPianoEco.getImpFinanziato().add(imVariazioneFin));
                            dispPianoEco.setImpCofinanziato(dispPianoEco.getImpCofinanziato().add(imVariazioneCofin));
                            if (!listCtrlDispPianoEco.contains(dispPianoEco))
                                listCtrlDispPianoEco.add(dispPianoEco);
                        }
                    }
                }
            } else {
                for (java.util.Iterator dett = varResHome.findAllVariazioniRiga((Var_stanz_resBulk) variazione).iterator(); dett.hasNext(); ) {
                    Var_stanz_res_rigaBulk rigaVar = (Var_stanz_res_rigaBulk) dett.next();
                    WorkpackageBulk latt = ((WorkpackageHome) getHome(userContext, WorkpackageBulk.class)).searchGAECompleta(userContext, CNRUserContext.getEsercizio(userContext), rigaVar.getLinea_di_attivita().getCd_centro_responsabilita(), rigaVar.getLinea_di_attivita().getCd_linea_attivita());
                    ProgettoBulk progetto = latt.getProgetto();
                    if (Optional.ofNullable(progettoRimodulato).filter(prgRim -> !prgRim.getPg_progetto().equals(progetto.getPg_progetto())).isPresent())
                        messaggio.add("Progetto " + progetto.getCd_progetto() + ": " + "movimentazione non possibile in quanto la variazione è di tipo rimodulazione di altro progetto (" + progettoRimodulato.getCd_progetto() + ").");
                    boolean isNaturaReimpiego = Optional.ofNullable(cdNaturaReimpiego).map(el -> el.equals(latt.getCd_natura())).orElse(Boolean.FALSE);
                    BigDecimal imVariazioneFin = BigDecimal.ZERO;
                    BigDecimal imVariazioneCofin = BigDecimal.ZERO;
                    if (Optional.ofNullable(latt.getNatura()).map(NaturaBulk::isFonteInterna).orElse(Boolean.FALSE) || isNaturaReimpiego)
                        imVariazioneCofin = Utility.nvl(rigaVar.getIm_variazione());
                    else if (Optional.ofNullable(latt.getNatura()).map(NaturaBulk::isFonteEsterna).orElse(Boolean.FALSE))
                        imVariazioneFin = Utility.nvl(rigaVar.getIm_variazione());
                    List<Progetto_piano_economicoBulk> pianoEconomicoList = null;
                    if (Optional.ofNullable(progettoRimodulato).isPresent())
                        pianoEconomicoList = progettoRimodulato.getAllDetailsProgettoPianoEconomico().stream().filter(ppe -> {
                            return ppe.getVociBilancioAssociate().stream().filter(ppeVoc -> ppeVoc.getEsercizio_voce().equals(rigaVar.getEsercizio_res())).filter(ppeVoc -> ppeVoc.getTi_appartenenza().equals(rigaVar.getElemento_voce().getTi_appartenenza())).filter(ppeVoc -> ppeVoc.getTi_gestione().equals(rigaVar.getElemento_voce().getTi_gestione())).filter(ppeVoc -> ppeVoc.getCd_elemento_voce().equals(rigaVar.getElemento_voce().getCd_elemento_voce())).findFirst().isPresent();
                        }).collect(Collectors.toList());
                    else
                        pianoEconomicoList = (List<Progetto_piano_economicoBulk>) ppeHome.findProgettoPianoEconomicoList(esercizioVariazione, progetto.getPg_progetto(), rigaVar.getElemento_voce());
                    // Il controllo puntuale sul piano economico deve partire se:
                    // 1) sul progetto esiste un piano economico per l'anno della variazione.
                    // 2) l'anno della variazione è gestita (<=annoFrom)
                    // 3) l'anno della variazione rientra nel periodo di validità del progetto, ovvero esiste almeno un dettaglio per l'anno della variazione stessa
                    // In caso contrario viene controllato solo l'importo complessivo del progetto
                    boolean ctrlFinanziamentoAnnuale = progetto.isPianoEconomicoRequired() && (Optional.ofNullable(progetto).flatMap(prg -> Optional.ofNullable(prg.getOtherField())).filter(of -> of.getAnnoInizio() <= esercizioVariazione).filter(of -> of.getAnnoFine() >= esercizioVariazione).isPresent() || Optional.ofNullable(pianoEconomicoList).orElse(new ArrayList<>()).stream().filter(el -> el.getEsercizio_piano().equals(esercizioVariazione)).findAny().isPresent());
                    if (ctrlFinanziamentoAnnuale) {
                        if (pianoEconomicoList == null || pianoEconomicoList.isEmpty()) {
                            // messaggio che non esce per rimodulazione progetto in quanto controllo effettuato in fase di approvaziomne ultima variazione
                            if (!Optional.ofNullable(progettoRimodulato).isPresent())
                                messaggio.add("Non risulta essere stato imputato alcun valore nel piano economico del progetto " + progetto.getCd_progetto() + " per la Voce " + rigaVar.getCd_elemento_voce() + ".");
                        } else if (pianoEconomicoList.size() > 1)
                            messaggio.add("La Voce " + rigaVar.getCd_elemento_voce() + " risulta associata a più voci di piano economico del progetto " + progetto.getCd_progetto() + ".");
                        else {
                            Progetto_piano_economicoBulk progettoPianoEconomico = pianoEconomicoList.get(0);
                            if (progettoPianoEconomico.getFl_ctrl_disp() && (progettoPianoEconomico.getEsercizio_piano().equals(0) || progettoPianoEconomico.getEsercizio_piano().equals(esercizioVariazione))) {
                                // recupero il record se presente altrimenti ne creo uno nuovo
                                CtrlDispPianoEco dispPianoEco = listCtrlDispPianoEco.stream().filter(el -> el.getProgetto().getPg_progetto().equals(progetto.getPg_progetto())).filter(el -> el.getProgettoPianoEconomico().getPg_progetto().equals(progetto.getPg_progetto())).filter(el -> el.getProgettoPianoEconomico().getCd_unita_organizzativa().equals(progettoPianoEconomico.getCd_unita_organizzativa())).filter(el -> el.getProgettoPianoEconomico().getCd_voce_piano().equals(progettoPianoEconomico.getCd_voce_piano())).findFirst().orElse(new CtrlDispPianoEco(progetto, progettoPianoEconomico));
                                dispPianoEco.setImpFinanziato(dispPianoEco.getImpFinanziato().add(imVariazioneFin));
                                dispPianoEco.setImpCofinanziato(dispPianoEco.getImpCofinanziato().add(imVariazioneCofin));
                                if (!listCtrlDispPianoEco.contains(dispPianoEco))
                                    listCtrlDispPianoEco.add(dispPianoEco);
                            }
                        }
                    } else {
                        // recupero il record se presente altrimenti ne creo uno nuovo
                        CtrlDispPianoEco dispPianoEco = listCtrlDispPianoEco.stream().filter(el -> el.getProgetto().getPg_progetto().equals(progetto.getPg_progetto())).filter(el -> !Optional.ofNullable(el.getProgettoPianoEconomico()).isPresent()).findFirst().orElse(new CtrlDispPianoEco(progetto, null));
                        dispPianoEco.setImpFinanziato(dispPianoEco.getImpFinanziato().add(imVariazioneFin));
                        dispPianoEco.setImpCofinanziato(dispPianoEco.getImpCofinanziato().add(imVariazioneCofin));
                        if (!listCtrlDispPianoEco.contains(dispPianoEco))
                            listCtrlDispPianoEco.add(dispPianoEco);
                    }
                }
            }
            for (CtrlDispPianoEco ctrlDispPianoEco : listCtrlDispPianoEco) {
                Progetto_piano_economicoBulk ppe = ctrlDispPianoEco.getProgettoPianoEconomico();
                if (Optional.ofNullable(ppe).isPresent()) {
                    try {
                        if (locked) {
                            Progetto_piano_economicoBulk bulkToFind = new Progetto_piano_economicoBulk();
                            bulkToFind.setVoce_piano_economico(ppe.getVoce_piano_economico());
                            bulkToFind.setPg_progetto(ppe.getPg_progetto());
                            bulkToFind.setEsercizio_piano(ppe.getEsercizio_piano());
                            try {
                                bulkToFind = (Progetto_piano_economicoBulk) ppeHome.findAndLock(bulkToFind);
                            } catch (ObjectNotFoundException ex) {
                            }
                        }
                        if (Optional.ofNullable(progettoRimodulato).isPresent()) {
                            // Controllo quota FINANZIATA
                            BigDecimal imRimodulatoFin = progettoRimodulato.getAllDetailsProgettoPianoEconomico().stream().filter(ppeRim -> ppeRim.getEsercizio_piano().equals(ppe.getEsercizio_piano())).filter(ppeRim -> ppeRim.getCd_voce_piano().equals(ppe.getCd_voce_piano())).filter(ppeRim -> ppeRim.getCd_unita_organizzativa().equals(ppe.getCd_unita_organizzativa())).map(Progetto_piano_economicoBulk::getIm_spesa_finanziato).reduce((x, y) -> x.add(y)).orElse(BigDecimal.ZERO);
                            BigDecimal imStanziatoFin = progettoRimodulato.getAllDetailsProgettoPianoEconomico().stream().filter(ppeRim -> ppeRim.getEsercizio_piano().equals(ppe.getEsercizio_piano())).filter(ppeRim -> ppeRim.getCd_voce_piano().equals(ppe.getCd_voce_piano())).filter(ppeRim -> ppeRim.getCd_unita_organizzativa().equals(ppe.getCd_unita_organizzativa())).filter(ppeRim -> Optional.ofNullable(ppeRim.getVociBilancioAssociate()).isPresent()).flatMap(ppeRim -> ppeRim.getVociBilancioAssociate().stream()).filter(ppeRim -> Optional.ofNullable(ppeRim.getSaldoSpesa()).isPresent()).map(Ass_progetto_piaeco_voceBulk::getSaldoSpesa).map(el -> el.getAssestatoFinanziamento()).reduce((x, y) -> x.add(y)).orElse(BigDecimal.ZERO);
                            // lo stanziato a quadrare con il rimodulato
                            if (imStanziatoFin.compareTo(imRimodulatoFin) > 0) {
                                if (ctrlDispPianoEco.getImpFinanziato().compareTo(BigDecimal.ZERO) > 0)
                                    messaggio.add("La variazione della quota finanziata stanziata del piano economico " + ppe.getCd_voce_piano() + " (" + new it.cnr.contab.util.EuroFormat().format(ctrlDispPianoEco.getImpFinanziato()) + ") risulta essere positiva laddove la variazione richiesta dalla rimodulazione del progetto " + ctrlDispPianoEco.getProgetto().getCd_progetto() + " deve essere solo negativa.");
                                // Es. se imRimodulato=1000 e imStanziato=2000 la variazione negativa non deve essere superiore a -1000
                                if (imRimodulatoFin.subtract(imStanziatoFin).subtract(ctrlDispPianoEco.getImpFinanziato()).compareTo(BigDecimal.ZERO) > 0)
                                    messaggio.add("La variazione della quota finanziata stanziata del piano economico " + ppe.getCd_voce_piano() + " (" + new it.cnr.contab.util.EuroFormat().format(ctrlDispPianoEco.getImpFinanziato()) + ") risulta essere superiore alla variazione richiesta dalla rimodulazione del progetto " + ctrlDispPianoEco.getProgetto().getCd_progetto() + " (" + new it.cnr.contab.util.EuroFormat().format(imRimodulatoFin.subtract(imStanziatoFin)) + ").");
                            } else {
                                // La variazione non deve superare la disponibilità residua data dalla differenza tra imRimodulato e imStanziato
                                if (imRimodulatoFin.subtract(imStanziatoFin).subtract(ctrlDispPianoEco.getImpFinanziato()).compareTo(BigDecimal.ZERO) < 0)
                                    messaggio.add("La disponibilità rimodulata della quota finanziata del piano economico " + ppe.getCd_voce_piano() + " associato al progetto " + ctrlDispPianoEco.getProgetto().getCd_progetto() + (ppe.getEsercizio_piano().equals(0) ? "" : " per l'esercizio " + ppe.getEsercizio_piano()) + " (" + new it.cnr.contab.util.EuroFormat().format(imRimodulatoFin.subtract(imStanziatoFin)) + ")" + " non è sufficiente a coprire la variazione (" + new it.cnr.contab.util.EuroFormat().format(ctrlDispPianoEco.getImpFinanziato()) + ").");
                            }
                            // Controllo quota COFINANZIATA
                            BigDecimal imRimodulatoCofin = progettoRimodulato.getAllDetailsProgettoPianoEconomico().stream().filter(ppeRim -> ppeRim.getEsercizio_piano().equals(ppe.getEsercizio_piano())).filter(ppeRim -> ppeRim.getCd_voce_piano().equals(ppe.getCd_voce_piano())).filter(ppeRim -> ppeRim.getCd_unita_organizzativa().equals(ppe.getCd_unita_organizzativa())).map(Progetto_piano_economicoBulk::getIm_spesa_cofinanziato).reduce((x, y) -> x.add(y)).orElse(BigDecimal.ZERO);
                            BigDecimal imStanziatoCofin = progettoRimodulato.getAllDetailsProgettoPianoEconomico().stream().filter(ppeRim -> ppeRim.getEsercizio_piano().equals(ppe.getEsercizio_piano())).filter(ppeRim -> ppeRim.getCd_voce_piano().equals(ppe.getCd_voce_piano())).filter(ppeRim -> ppeRim.getCd_unita_organizzativa().equals(ppe.getCd_unita_organizzativa())).filter(ppeRim -> Optional.ofNullable(ppeRim.getVociBilancioAssociate()).isPresent()).flatMap(ppeRim -> ppeRim.getVociBilancioAssociate().stream()).filter(ppeRim -> Optional.ofNullable(ppeRim.getSaldoSpesa()).isPresent()).map(Ass_progetto_piaeco_voceBulk::getSaldoSpesa).map(el -> el.getAssestatoCofinanziamento()).reduce((x, y) -> x.add(y)).orElse(BigDecimal.ZERO);
                            // Se l'importo stanziato è superiore a quello rimodulato, l'importo della variazione deve essere negativa al fine di riportare lo stanziato a quadrare con il rimodulato
                            if (imStanziatoCofin.compareTo(imRimodulatoCofin) > 0) {
                                if (ctrlDispPianoEco.getImpCofinanziato().compareTo(BigDecimal.ZERO) > 0)
                                    messaggio.add("La variazione della quota cofinanziata stanziata del piano economico " + ppe.getCd_voce_piano() + " (" + new it.cnr.contab.util.EuroFormat().format(ctrlDispPianoEco.getImpCofinanziato()) + ") risulta essere positiva laddove la variazione richiesta dalla rimodulazione del progetto " + ctrlDispPianoEco.getProgetto().getCd_progetto() + " deve essere solo negativa.");
                                // Es. se imRimodulato=1000 e imStanziato=2000 la variazione negativa non deve essere superiore a -1000
                                if (imRimodulatoCofin.subtract(imStanziatoCofin).subtract(ctrlDispPianoEco.getImpCofinanziato()).compareTo(BigDecimal.ZERO) > 0)
                                    messaggio.add("La variazione della quota cofinanziata stanziata del piano economico " + ppe.getCd_voce_piano() + " (" + new it.cnr.contab.util.EuroFormat().format(ctrlDispPianoEco.getImpCofinanziato()) + ") risulta essere superiore alla variazione richiesta dalla rimodulazione del progetto " + ctrlDispPianoEco.getProgetto().getCd_progetto() + " (" + new it.cnr.contab.util.EuroFormat().format(imRimodulatoCofin.subtract(imStanziatoCofin)) + ").");
                            } else {
                                // La variazione non deve superare la disponibilità residua data dalla differenza tra imRimodulato e imStanzato
                                if (imRimodulatoCofin.subtract(imStanziatoCofin).subtract(ctrlDispPianoEco.getImpCofinanziato()).compareTo(BigDecimal.ZERO) < 0)
                                    messaggio.add("La disponibilità rimodulata della quota cofinanziata del piano economico " + ppe.getCd_voce_piano() + " associato al progetto " + ctrlDispPianoEco.getProgetto().getCd_progetto() + (ppe.getEsercizio_piano().equals(0) ? "" : " per l'esercizio " + ppe.getEsercizio_piano()) + " (" + new it.cnr.contab.util.EuroFormat().format(imRimodulatoCofin.subtract(imStanziatoCofin)) + ")" + " non è sufficiente a coprire la variazione (" + new it.cnr.contab.util.EuroFormat().format(ctrlDispPianoEco.getImpCofinanziato()) + ").");
                            }
                        } else {
                            V_saldi_piano_econom_progettoBulk saldo = ((V_saldi_piano_econom_progettoHome) getHome(userContext, V_saldi_piano_econom_progettoBulk.class)).cercaSaldoPianoEconomico(ppe, "S");
                            BigDecimal dispResiduaFin = Optional.ofNullable(saldo).map(V_saldi_piano_econom_progettoBulk::getDispResiduaFinanziamento).orElse(BigDecimal.ZERO).subtract(ctrlDispPianoEco.getImpFinanziato());
                            if (dispResiduaFin.compareTo(BigDecimal.ZERO) < 0)
                                messaggio.add("La disponibilità quota finanziata del piano economico " + ppe.getCd_voce_piano() + " associato al progetto " + ctrlDispPianoEco.getProgetto().getCd_progetto() + (ppe.getEsercizio_piano().equals(0) ? "" : " per l'esercizio " + ppe.getEsercizio_piano()) + " (" + new it.cnr.contab.util.EuroFormat().format(Optional.ofNullable(saldo).map(V_saldi_piano_econom_progettoBulk::getDispResiduaFinanziamento).orElse(BigDecimal.ZERO)) + ")" + " non è sufficiente a coprire la variazione (" + new it.cnr.contab.util.EuroFormat().format(ctrlDispPianoEco.getImpFinanziato()) + ").");
                            BigDecimal dispResiduaCofin = Optional.ofNullable(saldo).map(V_saldi_piano_econom_progettoBulk::getDispResiduaCofinanziamento).orElse(BigDecimal.ZERO).subtract(ctrlDispPianoEco.getImpCofinanziato());
                            if (dispResiduaCofin.compareTo(BigDecimal.ZERO) < 0)
                                messaggio.add("La disponibilità quota cofinanziata del piano economico " + ppe.getCd_voce_piano() + " associato al progetto " + ctrlDispPianoEco.getProgetto().getCd_progetto() + (ppe.getEsercizio_piano().equals(0) ? "" : " per l'esercizio " + ppe.getEsercizio_piano()) + " (" + new it.cnr.contab.util.EuroFormat().format(saldo.getDispResiduaCofinanziamento()) + ")" + " non è sufficiente a coprire la variazione (" + new it.cnr.contab.util.EuroFormat().format(ctrlDispPianoEco.getImpCofinanziato()) + ").");
                        }
                    } catch (Exception ex) {
                        throw new RuntimeException(ex);
                    }
                } else {
                    ProgettoBulk prg = ctrlDispPianoEco.getProgetto();
                    {
                        BigDecimal totFinanziato = BigDecimal.ZERO;
                        if (Optional.ofNullable(progettoRimodulato).isPresent())
                            totFinanziato = progettoRimodulato.getImFinanziato();
                        else
                            totFinanziato = prg.getImFinanziato();
                        BigDecimal assestatoSpePrgFes = this.getStanziamentoAssestatoProgetto(userContext, prg, Elemento_voceHome.GESTIONE_SPESE, null, null, Progetto_other_fieldHome.TI_IMPORTO_FINANZIATO);
                        if (totFinanziato.compareTo(assestatoSpePrgFes.add(ctrlDispPianoEco.getImpFinanziato())) < 0)
                            messaggio.add("Progetto " + prg.getCd_progetto() + ": l'assestato totale spese 'fonti esterne' (" + new it.cnr.contab.util.EuroFormat().format(assestatoSpePrgFes.add(ctrlDispPianoEco.getImpFinanziato())) + ") non può essere superiore alla quota finanziata (" + new it.cnr.contab.util.EuroFormat().format(totFinanziato) + ").");
                    }
                    {
                        BigDecimal totCofinanziato = BigDecimal.ZERO;
                        if (Optional.ofNullable(progettoRimodulato).isPresent())
                            totCofinanziato = progettoRimodulato.getImCofinanziato();
                        else
                            totCofinanziato = prg.getImCofinanziato();
                        BigDecimal assestatoSpePrgReimpiego = this.getStanziamentoAssestatoProgetto(userContext, prg, Elemento_voceHome.GESTIONE_SPESE, null, null, Progetto_other_fieldHome.TI_IMPORTO_COFINANZIATO);
                        if (totCofinanziato.compareTo(assestatoSpePrgReimpiego.add(ctrlDispPianoEco.getImpCofinanziato())) < 0)
                            messaggio.add("Progetto " + prg.getCd_progetto() + ": l'assestato totale spese 'fonti interne' e 'natura reimpiego' (" + new it.cnr.contab.util.EuroFormat().format(assestatoSpePrgReimpiego.add(ctrlDispPianoEco.getImpCofinanziato())) + ") non può essere superiore alla quota cofinanziata (" + new it.cnr.contab.util.EuroFormat().format(totCofinanziato) + ").");
                    }
                }
            }
        }
    } catch (PersistencyException e) {
        throw new ComponentException(e);
    } catch (RemoteException e) {
        throw new ComponentException(e);
    } catch (EJBException e) {
        throw new ComponentException(e);
    }
    return messaggio.toString();
}
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) WorkpackageHome(it.cnr.contab.config00.latt.bulk.WorkpackageHome) Pdg_variazioneBulk(it.cnr.contab.pdg00.bulk.Pdg_variazioneBulk) Pdg_variazione_riga_gestBulk(it.cnr.contab.pdg01.bulk.Pdg_variazione_riga_gestBulk) PersistencyException(it.cnr.jada.persistency.PersistencyException) BulkList(it.cnr.jada.bulk.BulkList) UserContext(it.cnr.jada.UserContext) CNRUserContext(it.cnr.contab.utenze00.bp.CNRUserContext) Configurazione_cnrComponentSession(it.cnr.contab.config00.ejb.Configurazione_cnrComponentSession) ContrattoBulk(it.cnr.contab.config00.contratto.bulk.ContrattoBulk) Var_stanz_resBulk(it.cnr.contab.varstanz00.bulk.Var_stanz_resBulk) java.util(java.util) ComponentException(it.cnr.jada.comp.ComponentException) EJBException(javax.ejb.EJBException) DetailedRuntimeException(it.cnr.jada.DetailedRuntimeException) ApplicationRuntimeException(it.cnr.jada.comp.ApplicationRuntimeException) Var_stanz_res_rigaBulk(it.cnr.contab.varstanz00.bulk.Var_stanz_res_rigaBulk) WorkpackageBulk(it.cnr.contab.config00.latt.bulk.WorkpackageBulk) BigDecimal(java.math.BigDecimal) ObjectNotFoundException(it.cnr.jada.persistency.ObjectNotFoundException) RemoteException(java.rmi.RemoteException) EJBException(javax.ejb.EJBException) DetailedRuntimeException(it.cnr.jada.DetailedRuntimeException) ApplicationRuntimeException(it.cnr.jada.comp.ApplicationRuntimeException) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) SQLException(java.sql.SQLException) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) ComponentException(it.cnr.jada.comp.ComponentException) ApplicationException(it.cnr.jada.comp.ApplicationException) ObjectNotFoundException(it.cnr.jada.persistency.ObjectNotFoundException) Var_stanz_resHome(it.cnr.contab.varstanz00.bulk.Var_stanz_resHome) RemoteException(java.rmi.RemoteException) Pdg_variazioneHome(it.cnr.contab.pdg00.bulk.Pdg_variazioneHome)

Example 2 with Progetto_rimodulazioneBulk

use of it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazioneBulk in project sigla-main by consiglionazionaledellericerche.

the class CRUDPdgVariazioneGestionaleComponent method approva.

public Pdg_variazioneBulk approva(UserContext userContext, Pdg_variazioneBulk varPdg) throws ComponentException {
    try {
        varPdg.setStato(Pdg_variazioneBulk.STATO_APPROVATA);
        varPdg.setDt_approvazione(DateUtils.dataContabile(EJBCommonServices.getServerDate(), CNRUserContext.getEsercizio(userContext)));
        varPdg.setToBeUpdated();
        varPdg = (Pdg_variazioneBulk) super.modificaConBulk(userContext, varPdg);
        gestioneVistoDipartimenti(userContext, varPdg);
        Pdg_variazioneHome testataHome = (Pdg_variazioneHome) getHome(userContext, Pdg_variazioneBulk.class);
        ribaltaCostiPdGArea(userContext, varPdg);
        /*
			 * Ricarico il BULK con i dati presenti sul DB che, nel frattempo, potrebbero essere
			 * aumentati a causa di procedure DB lanciate da comandi precedenti (es. ribaltaCostiPdGArea)
			 */
        varPdg = (Pdg_variazioneBulk) testataHome.findByPrimaryKey(varPdg);
        varPdg.setAssociazioneCDR(new it.cnr.jada.bulk.BulkList(testataHome.findAssociazioneCDR(varPdg)));
        for (Iterator righe = testataHome.findDettagliVariazioneGestionale(varPdg).iterator(); righe.hasNext(); ) {
            Pdg_variazione_riga_gestBulk varRiga = (Pdg_variazione_riga_gestBulk) righe.next();
            if (!varRiga.isDettaglioScaricato())
                aggiornaSaldiCdrLinea(userContext, varRiga);
        }
        if (varPdg.isVariazioneRimodulazioneProgetto()) {
            try {
                Progetto_rimodulazioneHome prgHome = (Progetto_rimodulazioneHome) getHome(userContext, Progetto_rimodulazioneBulk.class);
                Progetto_rimodulazioneBulk rimodulazione = prgHome.rebuildRimodulazione(userContext, varPdg.getProgettoRimodulazione());
                prgHome.validaPassaggioStatoApprovato(userContext, rimodulazione, varPdg);
                Utility.createRimodulaProgettoRicercaComponentSession().approva(userContext, rimodulazione, varPdg);
            } catch (RimodulazioneNonApprovataException e) {
                log.info("Approvazione Variazione di Rimodulazione " + varPdg.getEsercizio() + "\\" + varPdg.getPg_variazione_pdg() + " che non genera " + "approvazione della rimodulazione associata.");
            } catch (ComponentException e) {
                throw new ApplicationMessageFormatException("Anomalia in fase di approvazione Rimodulazione Progetto.<br>{0}", Optional.ofNullable(e.getDetail()).map(el -> el.getMessage()).orElse(e.getMessage()));
            }
        }
        /*
			 * Spedisco i messaggi di avvertimento a tutti i CDR interessati alla Variazione 
			 */
        UtenteHome utenteHome = (UtenteHome) getHome(userContext, UtenteBulk.class);
        if (!varPdg.isVariazioneInternaIstituto()) {
            for (java.util.Iterator j = varPdg.getAssociazioneCDR().iterator(); j.hasNext(); ) {
                Ass_pdg_variazione_cdrBulk ass_var = (Ass_pdg_variazione_cdrBulk) j.next();
                for (java.util.Iterator i = utenteHome.findUtenteByCDRIncludeFirstLevel(ass_var.getCd_centro_responsabilita()).iterator(); i.hasNext(); ) {
                    UtenteBulk utente = (UtenteBulk) i.next();
                    MessaggioBulk messaggio = generaMessaggio(userContext, utente, varPdg, Pdg_variazioneBulk.STATO_APPROVATA);
                    super.creaConBulk(userContext, messaggio);
                }
            }
        }
        generaVariazioneBilancio(userContext, varPdg);
        if (!varPdg.isVariazioneInternaIstituto()) {
            String soggetto = "E' stata approvata la Variazione al Pdg n° " + varPdg.getPg_variazione_pdg();
            generaEMAIL(userContext, varPdg, soggetto, soggetto + " del " + varPdg.getEsercizio() + "<BR>", null, "APP");
        }
    } catch (IntrospectionException | PersistencyException | EJBException | RemoteException e) {
        throw new ComponentException(e);
    }
    return varPdg;
}
Also used : Tipo_variazioneHome(it.cnr.contab.pdg01.bulk.Tipo_variazioneHome) Pdg_variazione_riga_gestBulk(it.cnr.contab.pdg01.bulk.Pdg_variazione_riga_gestBulk) Parametri_cdsBulk(it.cnr.contab.config00.bulk.Parametri_cdsBulk) LoggerFactory(org.slf4j.LoggerFactory) SendMail(it.cnr.jada.util.SendMail) PdGVariazioniComponent(it.cnr.contab.pdg00.comp.PdGVariazioniComponent) Config(it.cnr.jada.util.Config) BigDecimal(java.math.BigDecimal) RimodulazioneNonApprovataException(it.cnr.contab.progettiric00.comp.RimodulazioneNonApprovataException) CostantiTi_gestione(it.cnr.contab.config00.latt.bulk.CostantiTi_gestione) Voce_f_saldi_cdr_lineaBulk(it.cnr.contab.prevent00.bulk.Voce_f_saldi_cdr_lineaBulk) it.cnr.contab.config00.sto.bulk(it.cnr.contab.config00.sto.bulk) Configurazione_cnrHome(it.cnr.contab.config00.bulk.Configurazione_cnrHome) Pdg_variazioneBulk(it.cnr.contab.pdg00.bulk.Pdg_variazioneBulk) MessaggioHome(it.cnr.contab.messaggio00.bulk.MessaggioHome) V_assestatoHome(it.cnr.contab.prevent00.bulk.V_assestatoHome) UtenteBulk(it.cnr.contab.utenze00.bulk.UtenteBulk) AddressException(javax.mail.internet.AddressException) Classificazione_vociBulk(it.cnr.contab.config00.pdcfin.cla.bulk.Classificazione_vociBulk) Timestamp(java.sql.Timestamp) MessaggioBulk(it.cnr.contab.messaggio00.bulk.MessaggioBulk) EJBCommonServices(it.cnr.jada.util.ejb.EJBCommonServices) Parametri_cnrBulk(it.cnr.contab.config00.bulk.Parametri_cnrBulk) Ass_pdg_variazione_cdrHome(it.cnr.contab.pdg00.cdip.bulk.Ass_pdg_variazione_cdrHome) Collectors(java.util.stream.Collectors) Progetto_rimodulazioneHome(it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazioneHome) RemoteException(java.rmi.RemoteException) EJBException(javax.ejb.EJBException) DetailedRuntimeException(it.cnr.jada.DetailedRuntimeException) List(java.util.List) WorkpackageBulk(it.cnr.contab.config00.latt.bulk.WorkpackageBulk) Optional(java.util.Optional) SaldoComponentSession(it.cnr.contab.doccont00.ejb.SaldoComponentSession) UserContext(it.cnr.jada.UserContext) it.cnr.jada.persistency.sql(it.cnr.jada.persistency.sql) OggettoBulk(it.cnr.jada.bulk.OggettoBulk) ApplicationRuntimeException(it.cnr.jada.comp.ApplicationRuntimeException) OptionRequestException(it.cnr.jada.comp.OptionRequestException) ProgettoHome(it.cnr.contab.progettiric00.core.bulk.ProgettoHome) Utility(it.cnr.contab.util.Utility) SimpleDateFormat(java.text.SimpleDateFormat) ICancellatoLogicamente(it.cnr.contab.util.ICancellatoLogicamente) Utente_indirizzi_mailBulk(it.cnr.contab.utenze00.bulk.Utente_indirizzi_mailBulk) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) Pdg_variazioneHome(it.cnr.contab.pdg00.bulk.Pdg_variazioneHome) ArrayList(java.util.ArrayList) Configurazione_cnrBulk(it.cnr.contab.config00.bulk.Configurazione_cnrBulk) InternetAddress(javax.mail.internet.InternetAddress) SQLException(java.sql.SQLException) it.cnr.contab.config00.pdcfin.bulk(it.cnr.contab.config00.pdcfin.bulk) Tipo_variazioneBulk(it.cnr.contab.pdg01.bulk.Tipo_variazioneBulk) UtenteHome(it.cnr.contab.utenze00.bulk.UtenteHome) CRUDComponentSession(it.cnr.jada.ejb.CRUDComponentSession) DateUtils(it.cnr.jada.util.DateUtils) 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) Logger(org.slf4j.Logger) Iterator(java.util.Iterator) Pdg_variazione_riga_gestHome(it.cnr.contab.pdg01.bulk.Pdg_variazione_riga_gestHome) V_assestatoBulk(it.cnr.contab.prevent00.bulk.V_assestatoBulk) ProgettoBulk(it.cnr.contab.progettiric00.core.bulk.ProgettoBulk) ObbligazioneBulk(it.cnr.contab.doccont00.core.bulk.ObbligazioneBulk) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) Pdg_esercizioBulk(it.cnr.contab.prevent01.bulk.Pdg_esercizioBulk) Utente_indirizzi_mailHome(it.cnr.contab.utenze00.bulk.Utente_indirizzi_mailHome) Progetto_rimodulazioneBulk(it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazioneBulk) ComponentException(it.cnr.jada.comp.ComponentException) Ass_pdg_variazione_cdrBulk(it.cnr.contab.pdg00.cdip.bulk.Ass_pdg_variazione_cdrBulk) StatoProgettoRimodulazione(it.cnr.contab.progettiric00.enumeration.StatoProgettoRimodulazione) UtenteBulk(it.cnr.contab.utenze00.bulk.UtenteBulk) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) Progetto_rimodulazioneBulk(it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazioneBulk) MessaggioBulk(it.cnr.contab.messaggio00.bulk.MessaggioBulk) Pdg_variazioneBulk(it.cnr.contab.pdg00.bulk.Pdg_variazioneBulk) Ass_pdg_variazione_cdrBulk(it.cnr.contab.pdg00.cdip.bulk.Ass_pdg_variazione_cdrBulk) Pdg_variazione_riga_gestBulk(it.cnr.contab.pdg01.bulk.Pdg_variazione_riga_gestBulk) Progetto_rimodulazioneHome(it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazioneHome) UtenteHome(it.cnr.contab.utenze00.bulk.UtenteHome) Iterator(java.util.Iterator) PersistencyException(it.cnr.jada.persistency.PersistencyException) RimodulazioneNonApprovataException(it.cnr.contab.progettiric00.comp.RimodulazioneNonApprovataException) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) Iterator(java.util.Iterator) ComponentException(it.cnr.jada.comp.ComponentException) it.cnr.contab.config00.sto.bulk(it.cnr.contab.config00.sto.bulk) it.cnr.contab.config00.pdcfin.bulk(it.cnr.contab.config00.pdcfin.bulk) EJBException(javax.ejb.EJBException) RemoteException(java.rmi.RemoteException) Pdg_variazioneHome(it.cnr.contab.pdg00.bulk.Pdg_variazioneHome)

Example 3 with Progetto_rimodulazioneBulk

use of it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazioneBulk in project sigla-main by consiglionazionaledellericerche.

the class RimodulaProgettoRicercaComponent method modificaConBulk.

@Override
public OggettoBulk modificaConBulk(UserContext usercontext, OggettoBulk oggettobulk) throws ComponentException {
    // Individuo le righe di variazione da creare/aggiornare
    Progetto_rimodulazioneBulk progettoRimodulazione = (Progetto_rimodulazioneBulk) oggettobulk;
    progettoRimodulazione.setImVarFinanziato(progettoRimodulazione.getImFinanziatoRimodulato().subtract(progettoRimodulazione.getProgetto().getImFinanziato()));
    progettoRimodulazione.setImVarCofinanziato(progettoRimodulazione.getImCofinanziatoRimodulato().subtract(progettoRimodulazione.getProgetto().getImCofinanziato()));
    if (progettoRimodulazione.isRimodulatoDtInizio()) {
        progettoRimodulazione.setDtInizioOld(progettoRimodulazione.getProgetto().getOtherField().getDtInizio());
        progettoRimodulazione.setDtInizio(progettoRimodulazione.getDtInizioRimodulato());
    } else {
        progettoRimodulazione.setDtInizioOld(null);
        progettoRimodulazione.setDtInizio(null);
    }
    if (progettoRimodulazione.isRimodulatoDtFine()) {
        progettoRimodulazione.setDtFineOld(progettoRimodulazione.getProgetto().getOtherField().getDtFine());
        progettoRimodulazione.setDtFine(progettoRimodulazione.getDtFineRimodulato());
    } else {
        progettoRimodulazione.setDtFineOld(null);
        progettoRimodulazione.setDtFine(null);
    }
    if (progettoRimodulazione.isRimodulatoDtProroga()) {
        progettoRimodulazione.setDtProrogaOld(progettoRimodulazione.getProgetto().getOtherField().getDtProroga());
        progettoRimodulazione.setDtProroga(progettoRimodulazione.getDtProrogaRimodulato());
    } else {
        progettoRimodulazione.setDtProrogaOld(null);
        progettoRimodulazione.setDtProroga(null);
    }
    Progetto_rimodulazioneHome rimodHome = (Progetto_rimodulazioneHome) getHome(usercontext, Progetto_rimodulazioneBulk.class);
    List<Progetto_rimodulazione_ppeBulk> listRim = rimodHome.getDettagliRimodulazioneAggiornato(usercontext, progettoRimodulazione);
    // Aggiorno o aggiungo i dettagli presenti
    listRim.stream().forEach(newDett -> {
        Progetto_rimodulazione_ppeBulk detail = progettoRimodulazione.getDettagliRimodulazione().stream().filter(dett -> Optional.ofNullable(dett.getCd_unita_organizzativa()).orElse("").equals(Optional.ofNullable(newDett.getCd_unita_organizzativa()).orElse(""))).filter(dett -> Optional.ofNullable(dett.getCd_voce_piano()).orElse("").equals(Optional.ofNullable(newDett.getCd_voce_piano()).orElse(""))).filter(dett -> Optional.ofNullable(dett.getEsercizio_piano()).orElse(0).equals(Optional.ofNullable(newDett.getEsercizio_piano()).orElse(0))).findFirst().orElseGet(() -> {
            newDett.setToBeCreated();
            progettoRimodulazione.addToDettagliRimodulazione(newDett);
            return newDett;
        });
        detail.setImVarEntrata(BigDecimal.ZERO);
        detail.setImVarSpesaFinanziato(newDett.getImVarSpesaFinanziato());
        detail.setImVarSpesaCofinanziato(newDett.getImVarSpesaCofinanziato());
        if (progettoRimodulazione.isStatoProvvisorio()) {
            detail.setImStoassSpesaFinanziato(newDett.getImStoassSpesaFinanziato());
            detail.setImStoassSpesaCofinanziato(newDett.getImStoassSpesaCofinanziato());
        }
        detail.setToBeUpdated();
    });
    // Rimuovo i dettagli non presenti nella lista
    List<Progetto_rimodulazione_ppeBulk> bulkToDelete = progettoRimodulazione.getDettagliRimodulazione().stream().filter(rim -> !listRim.stream().filter(newDett -> newDett.getCd_unita_organizzativa().equals(rim.getCd_unita_organizzativa())).filter(newDett -> newDett.getCd_voce_piano().equals(rim.getCd_voce_piano())).filter(newDett -> newDett.getEsercizio_piano().equals(rim.getEsercizio_piano())).findFirst().isPresent()).collect(Collectors.toList());
    bulkToDelete.stream().forEach(el -> {
        el.setToBeDeleted();
        progettoRimodulazione.removeFromDettagliRimodulazione(progettoRimodulazione.getDettagliRimodulazione().indexOf(el));
    });
    List<Progetto_rimodulazione_voceBulk> listRimVoce = rimodHome.getDettagliRimodulazioneVoceAggiornato(usercontext, progettoRimodulazione);
    // Aggiorno o aggiungo le voci presenti
    listRimVoce.stream().forEach(newDettVoce -> {
        Progetto_rimodulazione_voceBulk detail = progettoRimodulazione.getDettagliVoceRimodulazione().stream().filter(el -> el.getCd_unita_organizzativa().equals(newDettVoce.getCd_unita_organizzativa())).filter(el -> el.getCd_voce_piano().equals(newDettVoce.getCd_voce_piano())).filter(el -> el.getEsercizio_piano().equals(newDettVoce.getEsercizio_piano())).filter(el -> el.getEsercizio_voce().equals(newDettVoce.getEsercizio_voce())).filter(el -> el.getTi_appartenenza().equals(newDettVoce.getTi_appartenenza())).filter(el -> el.getTi_gestione().equals(newDettVoce.getTi_gestione())).filter(el -> el.getCd_elemento_voce().equals(newDettVoce.getCd_elemento_voce())).findFirst().orElseGet(() -> {
            newDettVoce.setPg_variazione(progettoRimodulazione.getDettagliVoceRimodulazione().stream().mapToInt(Progetto_rimodulazione_voceBulk::getPg_variazione).max().orElse(0) + 1);
            newDettVoce.setToBeCreated();
            progettoRimodulazione.addToDettagliVoceRimodulazione(newDettVoce);
            return newDettVoce;
        });
        detail.setTi_operazione(newDettVoce.getTi_operazione());
        detail.setImVarSpesaFinanziato(newDettVoce.getImVarSpesaFinanziato());
        detail.setImVarSpesaCofinanziato(newDettVoce.getImVarSpesaCofinanziato());
        detail.setToBeUpdated();
    });
    // Rimuovo i dettagli voce non presenti nella lista
    List<Progetto_rimodulazione_voceBulk> bulkVoceToDelete = progettoRimodulazione.getDettagliVoceRimodulazione().stream().filter(rim -> !listRimVoce.stream().filter(rimVoce -> rimVoce.getCd_unita_organizzativa().equals(rim.getCd_unita_organizzativa())).filter(rimVoce -> rimVoce.getCd_voce_piano().equals(rim.getCd_voce_piano())).filter(rimVoce -> rimVoce.getEsercizio_piano().equals(rim.getEsercizio_piano())).filter(rimVoce -> rimVoce.getEsercizio_voce().equals(rim.getEsercizio_voce())).filter(rimVoce -> rimVoce.getTi_appartenenza().equals(rim.getTi_appartenenza())).filter(rimVoce -> rimVoce.getTi_gestione().equals(rim.getTi_gestione())).filter(rimVoce -> rimVoce.getCd_elemento_voce().equals(rim.getCd_elemento_voce())).findFirst().isPresent()).collect(Collectors.toList());
    bulkVoceToDelete.stream().forEach(el -> {
        el.setToBeDeleted();
        progettoRimodulazione.removeFromDettagliVoceRimodulazione(progettoRimodulazione.getDettagliVoceRimodulazione().indexOf(el));
    });
    if (progettoRimodulazione.getDettagliRimodulazione().isEmpty() && progettoRimodulazione.getDettagliVoceRimodulazione().isEmpty() && !progettoRimodulazione.isRimodulatoImportoFinanziato() && !progettoRimodulazione.isRimodulatoImportoCofinanziato() && (!progettoRimodulazione.getProgetto().isDatePianoEconomicoRequired() || (!progettoRimodulazione.isRimodulatoDtInizio() && !progettoRimodulazione.isRimodulatoDtFine() && !progettoRimodulazione.isRimodulatoDtProroga())))
        throw new ApplicationException("Salvataggio non consentito. Non risulta alcuna variazione sul piano economico.");
    return super.modificaConBulk(usercontext, oggettobulk);
}
Also used : Voce_piano_economico_prgBulk(it.cnr.contab.progettiric00.tabrif.bulk.Voce_piano_economico_prgBulk) GsonBuilder(com.google.gson.GsonBuilder) BigDecimal(java.math.BigDecimal) PrintService(it.cnr.contab.reports.service.PrintService) Pdg_variazioneBulk(it.cnr.contab.pdg00.bulk.Pdg_variazioneBulk) AllegatoProgettoRimodulazioneType(it.cnr.contab.progettiric00.enumeration.AllegatoProgettoRimodulazioneType) Ass_progetto_piaeco_voceBulk(it.cnr.contab.progettiric00.core.bulk.Ass_progetto_piaeco_voceBulk) SQLBuilder(it.cnr.jada.persistency.sql.SQLBuilder) Tipo_unita_organizzativaHome(it.cnr.contab.config00.sto.bulk.Tipo_unita_organizzativaHome) V_doc_passivo_obbligazione_wizardBulk(it.cnr.contab.doccont00.core.bulk.V_doc_passivo_obbligazione_wizardBulk) EJBCommonServices(it.cnr.jada.util.ejb.EJBCommonServices) Collectors(java.util.stream.Collectors) Parametri_cnrBulk(it.cnr.contab.config00.bulk.Parametri_cnrBulk) Elemento_voceBulk(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk) Progetto_rimodulazioneHome(it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazioneHome) Stream(java.util.stream.Stream) Var_stanz_resBulk(it.cnr.contab.varstanz00.bulk.Var_stanz_resBulk) Query(it.cnr.jada.persistency.sql.Query) SpringUtil(it.cnr.contab.service.SpringUtil) Voce_piano_economico_prgHome(it.cnr.contab.progettiric00.tabrif.bulk.Voce_piano_economico_prgHome) UserContext(it.cnr.jada.UserContext) java.util(java.util) Progetto_rimodulazione_variazioneBulk(it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazione_variazioneBulk) AllegatoProgettoRimodulazioneBulk(it.cnr.contab.progettiric00.core.bulk.AllegatoProgettoRimodulazioneBulk) ApplicationRuntimeException(it.cnr.jada.comp.ApplicationRuntimeException) ProgettoHome(it.cnr.contab.progettiric00.core.bulk.ProgettoHome) SimpleDateFormat(java.text.SimpleDateFormat) Utility(it.cnr.contab.util.Utility) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) Pdg_variazioneHome(it.cnr.contab.pdg00.bulk.Pdg_variazioneHome) SimpleFindClause(it.cnr.jada.persistency.sql.SimpleFindClause) StoreService(it.cnr.si.spring.storage.StoreService) Elemento_voceHome(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceHome) FindClause(it.cnr.jada.persistency.sql.FindClause) Progetto_rimodulazione_ppeBulk(it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazione_ppeBulk) Progetto_piano_economicoBulk(it.cnr.contab.progettiric00.core.bulk.Progetto_piano_economicoBulk) CNRUserContext(it.cnr.contab.utenze00.bp.CNRUserContext) Parametri_enteBulk(it.cnr.contab.config00.bulk.Parametri_enteBulk) Progetto_rimodulazione_voceBulk(it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazione_voceBulk) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) Var_stanz_resHome(it.cnr.contab.varstanz00.bulk.Var_stanz_resHome) Print_spoolerBulk(it.cnr.contab.reports.bulk.Print_spoolerBulk) IOException(java.io.IOException) Report(it.cnr.contab.reports.bulk.Report) Unita_organizzativa_enteBulk(it.cnr.contab.config00.sto.bulk.Unita_organizzativa_enteBulk) ProgettoBulk(it.cnr.contab.progettiric00.core.bulk.ProgettoBulk) it.cnr.jada.bulk(it.cnr.jada.bulk) Progetto_rimodulazioneBulk(it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazioneBulk) Parametri_cnrHome(it.cnr.contab.config00.bulk.Parametri_cnrHome) ComponentException(it.cnr.jada.comp.ComponentException) StatoProgettoRimodulazione(it.cnr.contab.progettiric00.enumeration.StatoProgettoRimodulazione) CompoundFindClause(it.cnr.jada.persistency.sql.CompoundFindClause) Progetto_rimodulazione_ppeBulk(it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazione_ppeBulk) ApplicationException(it.cnr.jada.comp.ApplicationException) Progetto_rimodulazioneHome(it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazioneHome) Progetto_rimodulazioneBulk(it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazioneBulk) Progetto_rimodulazione_voceBulk(it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazione_voceBulk)

Example 4 with Progetto_rimodulazioneBulk

use of it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazioneBulk in project sigla-main by consiglionazionaledellericerche.

the class RimodulaProgettoRicercaComponent method validaCreaModificaConBulk.

@Override
protected void validaCreaModificaConBulk(UserContext usercontext, OggettoBulk oggettobulk) throws ComponentException {
    super.validaCreaModificaConBulk(usercontext, oggettobulk);
    Optional<Progetto_rimodulazioneBulk> optProgettoRimodulato = Optional.ofNullable(oggettobulk).filter(Progetto_rimodulazioneBulk.class::isInstance).map(Progetto_rimodulazioneBulk.class::cast);
    Optional<ProgettoBulk> optProgetto = optProgettoRimodulato.map(Progetto_rimodulazioneBulk::getProgetto);
    if (optProgetto.get().isPianoEconomicoRequired() && !optProgettoRimodulato.get().isStatoProvvisorio()) {
        if (!optProgettoRimodulato.map(Progetto_rimodulazioneBulk::getImTotaleRimodulato).filter(el -> el.compareTo(BigDecimal.ZERO) > 0).isPresent())
            throw new ApplicationException("Operazione non possibile! Indicare almeno un importo rimodulato positivo tra quello finanziato e cofinanziato!");
        if (!optProgettoRimodulato.map(Progetto_rimodulazioneBulk::getImFinanziatoRimodulatoDaRipartire).filter(el -> el.compareTo(BigDecimal.ZERO) == 0).isPresent())
            throw new ApplicationException("Operazione non possibile! E' obbligatorio ripartire correttamente nel piano economico tutto l'importo finanziato rimodulato del progetto!");
        if (!optProgettoRimodulato.map(Progetto_rimodulazioneBulk::getImCofinanziatoRimodulatoDaRipartire).filter(el -> el.compareTo(BigDecimal.ZERO) == 0).isPresent())
            throw new ApplicationException("Operazione non possibile! E' obbligatorio ripartire correttamente nel piano economico tutto l'importo cofinanziato rimodulato del progetto!");
    }
}
Also used : ApplicationException(it.cnr.jada.comp.ApplicationException) ProgettoBulk(it.cnr.contab.progettiric00.core.bulk.ProgettoBulk) Progetto_rimodulazioneBulk(it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazioneBulk)

Example 5 with Progetto_rimodulazioneBulk

use of it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazioneBulk in project sigla-main by consiglionazionaledellericerche.

the class RimodulaProgettoRicercaComponent method riportaProvvisorio.

public Progetto_rimodulazioneBulk riportaProvvisorio(UserContext userContext, Progetto_rimodulazioneBulk rimodulazione) throws ComponentException {
    Optional.of(rimodulazione).filter(el -> el.isStatoDefinitivo()).orElseThrow(() -> new ApplicationException("Operazione non possibile! Lo stato provvisorio può essere riassegnato solo a rimodulazioni in stato definitivo!"));
    rimodulazione.setStato(StatoProgettoRimodulazione.STATO_PROVVISORIO.value());
    rimodulazione.setDtStatoDefinitivo(null);
    rimodulazione.setToBeUpdated();
    rimodulazione = (Progetto_rimodulazioneBulk) super.modificaConBulk(userContext, rimodulazione);
    rimodulazione.getArchivioAllegati().stream().filter(AllegatoProgettoRimodulazioneBulk.class::isInstance).map(AllegatoProgettoRimodulazioneBulk.class::cast).filter(AllegatoProgettoRimodulazioneBulk::isStampaAutomatica).forEach(el -> {
        SpringUtil.getBean("storeService", StoreService.class).delete(el.getStorageKey());
    });
    return rimodulazione;
}
Also used : Voce_piano_economico_prgBulk(it.cnr.contab.progettiric00.tabrif.bulk.Voce_piano_economico_prgBulk) GsonBuilder(com.google.gson.GsonBuilder) BigDecimal(java.math.BigDecimal) PrintService(it.cnr.contab.reports.service.PrintService) Pdg_variazioneBulk(it.cnr.contab.pdg00.bulk.Pdg_variazioneBulk) AllegatoProgettoRimodulazioneType(it.cnr.contab.progettiric00.enumeration.AllegatoProgettoRimodulazioneType) Ass_progetto_piaeco_voceBulk(it.cnr.contab.progettiric00.core.bulk.Ass_progetto_piaeco_voceBulk) SQLBuilder(it.cnr.jada.persistency.sql.SQLBuilder) Tipo_unita_organizzativaHome(it.cnr.contab.config00.sto.bulk.Tipo_unita_organizzativaHome) V_doc_passivo_obbligazione_wizardBulk(it.cnr.contab.doccont00.core.bulk.V_doc_passivo_obbligazione_wizardBulk) EJBCommonServices(it.cnr.jada.util.ejb.EJBCommonServices) Collectors(java.util.stream.Collectors) Parametri_cnrBulk(it.cnr.contab.config00.bulk.Parametri_cnrBulk) Elemento_voceBulk(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk) Progetto_rimodulazioneHome(it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazioneHome) Stream(java.util.stream.Stream) Var_stanz_resBulk(it.cnr.contab.varstanz00.bulk.Var_stanz_resBulk) Query(it.cnr.jada.persistency.sql.Query) SpringUtil(it.cnr.contab.service.SpringUtil) Voce_piano_economico_prgHome(it.cnr.contab.progettiric00.tabrif.bulk.Voce_piano_economico_prgHome) UserContext(it.cnr.jada.UserContext) java.util(java.util) Progetto_rimodulazione_variazioneBulk(it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazione_variazioneBulk) AllegatoProgettoRimodulazioneBulk(it.cnr.contab.progettiric00.core.bulk.AllegatoProgettoRimodulazioneBulk) ApplicationRuntimeException(it.cnr.jada.comp.ApplicationRuntimeException) ProgettoHome(it.cnr.contab.progettiric00.core.bulk.ProgettoHome) SimpleDateFormat(java.text.SimpleDateFormat) Utility(it.cnr.contab.util.Utility) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) Pdg_variazioneHome(it.cnr.contab.pdg00.bulk.Pdg_variazioneHome) SimpleFindClause(it.cnr.jada.persistency.sql.SimpleFindClause) StoreService(it.cnr.si.spring.storage.StoreService) Elemento_voceHome(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceHome) FindClause(it.cnr.jada.persistency.sql.FindClause) Progetto_rimodulazione_ppeBulk(it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazione_ppeBulk) Progetto_piano_economicoBulk(it.cnr.contab.progettiric00.core.bulk.Progetto_piano_economicoBulk) CNRUserContext(it.cnr.contab.utenze00.bp.CNRUserContext) Parametri_enteBulk(it.cnr.contab.config00.bulk.Parametri_enteBulk) Progetto_rimodulazione_voceBulk(it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazione_voceBulk) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) Var_stanz_resHome(it.cnr.contab.varstanz00.bulk.Var_stanz_resHome) Print_spoolerBulk(it.cnr.contab.reports.bulk.Print_spoolerBulk) IOException(java.io.IOException) Report(it.cnr.contab.reports.bulk.Report) Unita_organizzativa_enteBulk(it.cnr.contab.config00.sto.bulk.Unita_organizzativa_enteBulk) ProgettoBulk(it.cnr.contab.progettiric00.core.bulk.ProgettoBulk) it.cnr.jada.bulk(it.cnr.jada.bulk) Progetto_rimodulazioneBulk(it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazioneBulk) Parametri_cnrHome(it.cnr.contab.config00.bulk.Parametri_cnrHome) ComponentException(it.cnr.jada.comp.ComponentException) StatoProgettoRimodulazione(it.cnr.contab.progettiric00.enumeration.StatoProgettoRimodulazione) CompoundFindClause(it.cnr.jada.persistency.sql.CompoundFindClause) ApplicationException(it.cnr.jada.comp.ApplicationException) AllegatoProgettoRimodulazioneBulk(it.cnr.contab.progettiric00.core.bulk.AllegatoProgettoRimodulazioneBulk) StoreService(it.cnr.si.spring.storage.StoreService)

Aggregations

Progetto_rimodulazioneBulk (it.cnr.contab.progettiric00.core.bulk.Progetto_rimodulazioneBulk)45 ComponentException (it.cnr.jada.comp.ComponentException)25 ApplicationException (it.cnr.jada.comp.ApplicationException)19 ApplicationRuntimeException (it.cnr.jada.comp.ApplicationRuntimeException)18 PersistencyException (it.cnr.jada.persistency.PersistencyException)18 RemoteException (java.rmi.RemoteException)18 ProgettoBulk (it.cnr.contab.progettiric00.core.bulk.ProgettoBulk)16 IntrospectionException (it.cnr.jada.persistency.IntrospectionException)16 BigDecimal (java.math.BigDecimal)16 Pdg_variazioneBulk (it.cnr.contab.pdg00.bulk.Pdg_variazioneBulk)13 CNRUserContext (it.cnr.contab.utenze00.bp.CNRUserContext)13 Utility (it.cnr.contab.util.Utility)12 Var_stanz_resBulk (it.cnr.contab.varstanz00.bulk.Var_stanz_resBulk)12 UserContext (it.cnr.jada.UserContext)12 SQLBuilder (it.cnr.jada.persistency.sql.SQLBuilder)12 Collectors (java.util.stream.Collectors)12 Elemento_voceBulk (it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk)11 Pdg_variazioneHome (it.cnr.contab.pdg00.bulk.Pdg_variazioneHome)11 RimodulaProgettiRicercaBP (it.cnr.contab.progettiric00.bp.RimodulaProgettiRicercaBP)11 Voce_piano_economico_prgBulk (it.cnr.contab.progettiric00.tabrif.bulk.Voce_piano_economico_prgBulk)11