Search in sources :

Example 1 with Parametri_cdsBulk

use of it.cnr.contab.config00.bulk.Parametri_cdsBulk in project sigla-main by consiglionazionaledellericerche.

the class ObbligazioneComponent method checkDispObbligazioniAccertamenti.

private void checkDispObbligazioniAccertamenti(UserContext userContext, ObbligazioneBulk obbligazione) throws ComponentException {
    BigDecimal importo = Utility.ZERO;
    Obbligazione_scad_voceBulk scad_voceDB;
    Parametri_cdsBulk parametri_cds = null;
    try {
        parametri_cds = (Parametri_cdsBulk) getHome(userContext, Parametri_cdsBulk.class).findByPrimaryKey(new Parametri_cdsBulk(CNRUserContext.getCd_cds(userContext), CNRUserContext.getEsercizio(userContext)));
    } catch (PersistencyException e) {
        throw new ComponentException(e);
    }
    String messaggio = "";
    if (parametri_cds != null && (parametri_cds.getBlocco_impegni_cdr_gae().equals(Parametri_cdsBulk.BLOCCO_IMPEGNI_ERROR) || parametri_cds.getBlocco_impegni_cdr_gae().equals(Parametri_cdsBulk.BLOCCO_IMPEGNI_WARNING))) {
        try {
            SQLBroker broker = getHome(userContext, Obbligazione_scad_voceBulk.class).createBroker(((ObbligazioneHome) getHome(userContext, ObbligazioneBulk.class)).findObbligazione_scad_voceDistinctList(obbligazione));
            while (broker.next()) {
                String cd_voce = (String) broker.fetchPropertyValue("cd_voce", String.class);
                String cd_centro_responsabilita = (String) broker.fetchPropertyValue("cd_centro_responsabilita", String.class);
                String cd_linea_attivita = (String) broker.fetchPropertyValue("cd_linea_attivita", String.class);
                if ((!obbligazione.isCheckDisponibilitaCdrGAEEseguito() || parametri_cds != null && parametri_cds.getBlocco_impegni_cdr_gae().equals(Parametri_cdsBulk.BLOCCO_IMPEGNI_ERROR))) {
                    Voce_fBulk voce = new Voce_fBulk(cd_voce, obbligazione.getEsercizio(), obbligazione.getTi_appartenenza(), obbligazione.getTi_gestione());
                    try {
                        String mess = createSaldoComponentSession().checkDispObbligazioniAccertamenti(userContext, cd_centro_responsabilita, cd_linea_attivita, voce, obbligazione.getEsercizio_originale(), (obbligazione.isObbligazioneResiduo() || obbligazione.isObbligazioneResiduoImproprio()) ? Voce_f_saldi_cdr_lineaBulk.TIPO_RESIDUO_IMPROPRIO : Voce_f_saldi_cdr_lineaBulk.TIPO_COMPETENZA, parametri_cds.getBlocco_impegni_cdr_gae());
                        if (parametri_cds != null && mess != null && parametri_cds.getBlocco_impegni_cdr_gae().equals(Parametri_cdsBulk.BLOCCO_IMPEGNI_ERROR))
                            throw new ApplicationException(mess);
                        if (mess != null)
                            messaggio = messaggio + (messaggio.equals("") ? "" : "<BR>") + mess;
                    } catch (RemoteException e) {
                        throw new ComponentException(e);
                    }
                }
            }
        } catch (IntrospectionException e) {
            throw new ComponentException(e);
        } catch (PersistencyException e) {
            throw new ComponentException(e);
        }
    }
    if (!messaggio.equals("")) {
        if (parametri_cds != null && parametri_cds.getBlocco_impegni_cdr_gae().equals(Parametri_cdsBulk.BLOCCO_IMPEGNI_WARNING))
            throw handleException(new CheckDisponibilitaCdrGAEFailed(messaggio));
    }
}
Also used : ApplicationException(it.cnr.jada.comp.ApplicationException) SQLBroker(it.cnr.jada.persistency.sql.SQLBroker) ComponentException(it.cnr.jada.comp.ComponentException) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) Parametri_cdsBulk(it.cnr.contab.config00.bulk.Parametri_cdsBulk) PersistencyException(it.cnr.jada.persistency.PersistencyException) RemoteException(java.rmi.RemoteException) BigDecimal(java.math.BigDecimal) Voce_fBulk(it.cnr.contab.config00.pdcfin.bulk.Voce_fBulk)

Example 2 with Parametri_cdsBulk

use of it.cnr.contab.config00.bulk.Parametri_cdsBulk in project sigla-main by consiglionazionaledellericerche.

the class ObbligazioneComponent method verificaObbligazione.

/**
 *  Tutti controlli superati - anno di creazione obbligazione < anno competenza dell'obbligazione
 *    PreCondition:
 *      testata dell'obbligazione verificata (controllato nel metodo verificaTestataObbligazione).
 *      sum(scadenzario.importo) = obbligazione.importo
 *      sum(scad_voce.importo)  = scadenzario.importo
 *		 dettagli d'imputazione finanziaria specificati
 *      almeno una scadenza definita
 *      verfiche per spese per costi altrui superate (metodo verificaFl_spese_costi_altrui)
 *      L'anno di competenza dell'obbligazione è superiore all'anno di creazione dell'obbligazione
 *    PostCondition:
 *      Il sistema può proseguire con la creazione/modifica dell'obbligazione, ma non verranno aggiornati i saldi
 *      dei capitoli di spesa CdS.
 *
 *  Tutti controlli superati - anno di creazione obbligazione = anno competenza
 *    PreCondition:
 *      testata dell'obbligazione verificata (controllato nel metodo verificaTestataObbligazione).
 *      sum(scadenzario.import) = obbligazione.import.
 *      sum(scad_voce.importo)  = scadenzario.importo
 *		 dettagli d'imputazione finanziaria specificati
 *      almeno una scadenza definita
 *      verfiche per spese per costi altrui superate (metodo verificaFl_spese_costi_altrui)
 *      L'anno di competenza dell'obbligazione è uguale all'anno di creazione dell'obbligazione
 *    PostCondition:
 *      Il sistema può proseguire con la creazione/modifica dell'obbligazione e dovrà effettuare l'aggiornamento
 *      dei saldi dei capitoli di spesa CdS. (Questo processo viene eseguito dal metodo 'aggiornaCapitoloSaldoObbligazione').
 *
 *  sum(scadenzario.importo) not = obbligazione.importo
 *    PreCondition:
 *      La somma degli importi delle scadenze dell'obbligazione non è uguale all'importo dell'obbligazione in elaborazione.
 *    PostCondition:
 *      Il metodo utilizza un Throw Exception per comunicare che il salvataggio dell'obbligazione non è consentito
 *      se l'importo non è uguale alla somma degli importi delle scadenze dell'obbligazione.
 *
 *  sum(scad_voce.importo) not = scadenzario.importo
 *    PreCondition:
 *      L'utente ha selezionato l'imputazione manuale degli importi dei dettagli delle scadenze e la somma degli importi
 *      dei dettagli di una scadenza dell'obbligazione non è uguale all'importo della scadenza
 *    PostCondition:
 *      Il metodo utilizza un Throw Exception per comunicare che il salvataggio dell'obbligazione non è consentito
 *      se l'importo della scadenza non è uguale alla somma degli importi dei dettagli della scadenza dell'obbligazione.
 *
 *  dettagli d'imputazione finanziaria non specificati al livello di obbligazione
 *    PreCondition:
 *      I dettagli d'imputazione finanziaria (capitolo di spesa, linea d'attività) non sono stati specificati
 *      al livello di obbligazione
 *    PostCondition:
 *      Il sistema segnala l'impossibilità di craere/aggiornare l'obbligazione fino a quando l'imputazione finanziaria non viene completata
 *
 *  scadenze non definite
 *    PreCondition:
 *      Non sono state definite scadenze per l'obbligazione
 *    PostCondition:
 *      Il metodo utilizza un Throw Exception per comunicare che il salvataggio dell'obbligazione non è consentito
 *      se non viene definita almento una scadenza
 *
 *  spese per costi altrui
 *    PreCondition:
 *      L'utente ha specificato di voler emettere un'obbligazione non di tipo spese per costi altrui
 *      ma ha selezionato linee di attività appartenenti a cdr che non sipendono dall'uo di scrivania
 *      (questo controllo viene effettuato dal metodo 'verificaFl_spese_costi_altrui')
 *    PostCondition:
 *      Il metodo utilizza un Throw Exception per comunicare che il salvataggio dell'obbligazione non è consentito
 *
 * @param aUC lo user context
 * @param obbligazione l'istanza di  <code>ObbligazioneBulk</code> da verificare
 */
public void verificaObbligazione(UserContext aUC, ObbligazioneBulk obbligazione) throws ComponentException {
    Obbligazione_scadenzarioBulk os;
    Obbligazione_scad_voceBulk osv;
    BigDecimal totalObbligazione = new BigDecimal(0);
    BigDecimal totalScadenza;
    verificaTestataObbligazione(aUC, obbligazione);
    // non e' stata fatta l'imputazione finanziaria
    if (obbligazione.getLineeAttivitaSelezionateColl().size() == 0 && obbligazione.getNuoveLineeAttivitaColl().size() == 0)
        throw handleException(new it.cnr.jada.comp.ApplicationException("E' necessario effettuare l'imputazione finanziaria"));
    // non ci sono scadenze
    if (obbligazione.getObbligazione_scadenzarioColl().isEmpty())
        throw handleException(new it.cnr.jada.comp.ApplicationException("E' necessario creare almeno una scadenza"));
    for (Iterator i = obbligazione.getObbligazione_scadenzarioColl().iterator(); i.hasNext(); ) {
        os = (Obbligazione_scadenzarioBulk) i.next();
        totalObbligazione = totalObbligazione.add(os.getIm_scadenza());
        totalScadenza = new BigDecimal(0);
        for (Iterator j = os.getObbligazione_scad_voceColl().iterator(); j.hasNext(); ) {
            osv = (Obbligazione_scad_voceBulk) j.next();
            if (osv.getIm_voce() == null)
                throw handleException(new it.cnr.jada.comp.ApplicationException("E' necessario inserire l'importo di un dettaglio per la scadenza del " + String.valueOf(os.getDt_scadenza()).substring(0, 10)));
            totalScadenza = totalScadenza.add(osv.getIm_voce());
        }
        if (totalScadenza.compareTo(os.getIm_scadenza()) != 0)
            throw handleException(new it.cnr.jada.comp.ApplicationException("La somma degli importi dei singoli dettagli della scadenza e' diverso dall'importo complessivo della scadenza"));
    }
    if (totalObbligazione.compareTo(obbligazione.getIm_obbligazione()) > 0)
        throw handleException(new it.cnr.jada.comp.ApplicationException("La somma degli importi delle singole scadenze supera l'importo complessivo dell'impegno"));
    if (totalObbligazione.compareTo(obbligazione.getIm_obbligazione()) < 0)
        throw handleException(new it.cnr.jada.comp.ApplicationException("La somma degli importi delle singole scadenze e' inferiore all'importo complessivo dell'impegno"));
    if ((obbligazione.getContratto() != null && obbligazione.getContratto().getFigura_giuridica_esterna() != null && !(obbligazione.getCreditore().equalsByPrimaryKey(obbligazione.getContratto().getFigura_giuridica_esterna()) || verificaAssociato(aUC, obbligazione.getContratto().getFigura_giuridica_esterna(), obbligazione))))
        throw new it.cnr.jada.comp.ApplicationException("Il Creditore (Codice Terzo:" + obbligazione.getCreditore().getCd_terzo() + ") \n" + "non è congruente con quello del contratto (Codice Terzo:" + obbligazione.getContratto().getFigura_giuridica_esterna().getCd_terzo() + ")");
    if ((obbligazione.getIncarico_repertorio() != null && obbligazione.getIncarico_repertorio().getTerzo() != null && !(obbligazione.getCreditore().equalsByPrimaryKey(obbligazione.getIncarico_repertorio().getTerzo()) || verificaAssociato(aUC, obbligazione.getIncarico_repertorio().getTerzo(), obbligazione))))
        throw new it.cnr.jada.comp.ApplicationException("Il Creditore (Codice Terzo:" + obbligazione.getCreditore().getCd_terzo() + ") \n" + "non è congruente con quello dell'incarico (Codice Terzo:" + obbligazione.getIncarico_repertorio().getTerzo().getCd_terzo() + ")");
    verificaFl_spese_costi_altrui(aUC, obbligazione);
    if (obbligazione.getFl_gara_in_corso().booleanValue() && obbligazione.isObbligazioneResiduo() && obbligazione.getStato_obbligazione().equals(obbligazione.STATO_OBB_PROVVISORIO))
        throw new ApplicationException("Non e' possibile modificare un'impegno residuo con gara di appalto in corso di espletamento, si prega di riportarlo indietro all'esercizio precedente e di renderlo definitivo");
    /*
	 * Controllo l'eventuale obbligatorietà del Contratto
	 */
    Elemento_voceHome home = (Elemento_voceHome) getHome(aUC, Elemento_voceBulk.class);
    Elemento_voceBulk elemento_voce;
    try {
        elemento_voce = (Elemento_voceBulk) home.findByPrimaryKey(new Elemento_voceBulk(obbligazione.getCd_elemento_voce(), obbligazione.getEsercizio(), obbligazione.getTi_appartenenza(), obbligazione.getTi_gestione()));
    } catch (PersistencyException e) {
        throw new ComponentException(e);
    }
    if (elemento_voce.getFl_recon().booleanValue()) {
        Parametri_cdsHome paramHome = (Parametri_cdsHome) getHome(aUC, Parametri_cdsBulk.class);
        Parametri_cdsBulk param_cds;
        try {
            param_cds = (Parametri_cdsBulk) paramHome.findByPrimaryKey(new Parametri_cdsBulk(obbligazione.getCd_cds(), obbligazione.getEsercizio()));
        } catch (PersistencyException e) {
            throw new ComponentException(e);
        }
        if (obbligazione.getFl_gara_in_corso().booleanValue() && obbligazione.getDs_gara_in_corso() == null)
            throw new it.cnr.jada.comp.ApplicationException("La gara di appalto risulta essere in corso di espletamento. Campo \"Descrizione gara di appalto\" obbligatorio!");
        if (obbligazione.getFl_gara_in_corso().booleanValue() && (obbligazione.getPg_contratto() != null || obbligazione.getPg_repertorio() != null))
            throw new it.cnr.jada.comp.ApplicationException("La gara di appalto risulta essere in corso di espletamento. Non è possibile valorizzare il campo contratto e/o incarico. Disattivare il flag \"Gara in corso di espletamento\" e ripetere l'operazione!");
        if (obbligazione.getPg_contratto() != null && obbligazione.getPg_repertorio() != null)
            throw new it.cnr.jada.comp.ApplicationException("Il campo contratto e incarico non possono essere valorizzati contemporaneamente. Eliminare uno dei due e ripetere l'operazione!");
        if (param_cds != null && param_cds.getIm_soglia_contratto_s() != null && obbligazione.getIm_obbligazione().compareTo(param_cds.getIm_soglia_contratto_s()) != -1)
            if (!obbligazione.getFl_gara_in_corso().booleanValue() && obbligazione.getPg_contratto() == null && obbligazione.getPg_repertorio() == null)
                throw new it.cnr.jada.comp.ApplicationException("I campi contratto e incarico non possono essere contemporaneamente nulli in assenza di una gara in corso di espletamento. Importo dell'Impegno superiore al limite stabilito!");
    }
    verificaGestioneTrovato(aUC, obbligazione, elemento_voce);
    verificaGestioneMissioni(aUC, obbligazione, elemento_voce);
}
Also used : ApplicationException(it.cnr.jada.comp.ApplicationException) Parametri_cdsBulk(it.cnr.contab.config00.bulk.Parametri_cdsBulk) Elemento_voceBulk(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk) BigDecimal(java.math.BigDecimal) Elemento_voceHome(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceHome) Parametri_cdsHome(it.cnr.contab.config00.bulk.Parametri_cdsHome) ApplicationException(it.cnr.jada.comp.ApplicationException) ComponentException(it.cnr.jada.comp.ComponentException) PersistencyException(it.cnr.jada.persistency.PersistencyException)

Example 3 with Parametri_cdsBulk

use of it.cnr.contab.config00.bulk.Parametri_cdsBulk in project sigla-main by consiglionazionaledellericerche.

the class SaldoComponent method checkBloccoImpegniNatfin.

public void checkBloccoImpegniNatfin(UserContext userContext, WorkpackageBulk workpackageBulk, Elemento_voceBulk elementoVoceBulk, String tipoObbligazione) throws ComponentException {
    try {
        if ((ObbligazioneBulk.TIPO_COMPETENZA.equals(tipoObbligazione) && elementoVoceBulk.isAttivoBloccoResiduiNatfinCompetenza()) || ((ObbligazioneBulk.TIPO_RESIDUO_PROPRIO.equals(tipoObbligazione) || ObbligazioneBulk.TIPO_RESIDUO_IMPROPRIO.equals(tipoObbligazione)) && elementoVoceBulk.isAttivoBloccoResiduiNatfinResidui())) {
            Parametri_cdsBulk param_cds = (Parametri_cdsBulk) (getHome(userContext, Parametri_cdsBulk.class)).findByPrimaryKey(new Parametri_cdsBulk(CNRUserContext.getCd_cds(userContext), CNRUserContext.getEsercizio(userContext)));
            if (param_cds.getFl_blocco_impegni_natfin().equals(Boolean.TRUE)) {
                Configurazione_cnrBulk configBulk = Utility.createConfigurazioneCnrComponentSession().getConfigurazione(userContext, CNRUserContext.getEsercizio(userContext), null, Configurazione_cnrBulk.PK_BLOCCO_RESIDUI, Configurazione_cnrBulk.SK_NATURA_FINANZIAMENTO);
                if (Optional.ofNullable(configBulk).isPresent()) {
                    Optional<String> optNatura = Optional.ofNullable(configBulk).map(Configurazione_cnrBulk::getVal01);
                    Optional<String> optCodFinanziamento = Optional.ofNullable(configBulk).map(Configurazione_cnrBulk::getVal02);
                    if (optNatura.isPresent() || optCodFinanziamento.isPresent()) {
                        if (optNatura.map(el -> el.equals(workpackageBulk.getNatura().getTipo())).orElse(Boolean.TRUE) && optCodFinanziamento.map(el -> el.equals(workpackageBulk.getProgetto().getOtherField().getTipoFinanziamento().getCodice())).orElse(Boolean.TRUE))
                            throw new ApplicationException("Non è possibile effettuare movimentazioni per il CDR/GAE/Voce (" + workpackageBulk.getCd_centro_responsabilita() + "/" + workpackageBulk.getCd_linea_attivita() + "/" + elementoVoceBulk.getCd_voce() + "), in quanto " + optNatura.map(el -> "GAE di natura " + el).orElse("") + (optNatura.isPresent() && optCodFinanziamento.isPresent() ? " e " : "") + optCodFinanziamento.map(el -> "Progetto di tipo " + el + " ").orElse("") + ".");
                    }
                }
            }
        }
    } catch (PersistencyException e) {
        throw new ComponentException(e);
    } catch (RemoteException 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) ApplicationException(it.cnr.jada.comp.ApplicationException) ComponentException(it.cnr.jada.comp.ComponentException) PersistencyException(it.cnr.jada.persistency.PersistencyException) RemoteException(java.rmi.RemoteException)

Example 4 with Parametri_cdsBulk

use of it.cnr.contab.config00.bulk.Parametri_cdsBulk in project sigla-main by consiglionazionaledellericerche.

the class ObbligazioneComponent method validaCdrLineaVoce.

/**
 *  Effettua controlli sulle combinazione Cdr/Voce/Linea indicati come parametri
 *    PreCondition:
 *      Una nuova combinazione Cdr/Voce/Linea è stata scelta o è stato aumentato l'importo
 * 		complessivo assegnato al Cdr/Voce/Linea
 *    PostCondition:
 *      Se l'impegno creato è di competenza viene verificato che la disponibilità residua ad assumere
 * 		impegni residui impropri non sia superiore al limite indicato nei Parametri CNR
 *
 * @param userContext lo user context
 * @param obbligazione l'obbligazione di cui sto aggiornando l'imputazione finanziaria
 * @param oldRipartizioneCdrVoceLinea la chiave restituita dalla chiamata alla procedura getOldRipartizioneCdrVoceLinea
 * @param cdr il centro di responsabilità
 * @param latt il codice della GAE
 * @param voce l'istanza di <code>Voce_fBulk</code> contenente l'elemento voce da verificare
 * @throws ComponentException
 */
private void validaCdrLineaVoce(UserContext userContext, ObbligazioneBulk obbligazione, PrimaryKeyHashtable oldRipartizioneCdrVoceLinea, String cdr, String latt, IVoceBilancioBulk voce) throws ComponentException {
    BigDecimal totaleOldScad = new BigDecimal(0);
    BigDecimal totaleNewScad = new BigDecimal(0);
    Obbligazione_scad_voceBulk key = new Obbligazione_scad_voceBulk();
    boolean found = false;
    try {
        Parametri_cdsBulk param_cds = (Parametri_cdsBulk) (getHome(userContext, Parametri_cdsBulk.class)).findByPrimaryKey(new Parametri_cdsBulk(CNRUserContext.getCd_cds(userContext), CNRUserContext.getEsercizio(userContext)));
        boolean isObbligazioneResiduo = obbligazione.isObbligazioneResiduo() || obbligazione.isObbligazioneResiduoImproprio();
        SaldoComponentSession saldoSession = Utility.createSaldoComponentSession();
        // finanziamento indicato in CONFIGURAZIONE_CNR
        if ((obbligazione.isCompetenza() && Optional.ofNullable(param_cds.getIm_soglia_consumo_residuo()).isPresent()) || isObbligazioneResiduo) {
            totaleNewScad = obbligazione.getObbligazione_scadenzarioColl().stream().flatMap(os -> os.getObbligazione_scad_voceColl().stream()).filter(osv -> osv.getCd_centro_responsabilita().equals(cdr)).filter(osv -> osv.getCd_linea_attivita().equals(latt)).filter(osv -> osv.getCd_voce().equals(voce.getCd_voce())).map(Obbligazione_scad_voceBulk::getIm_voce).reduce((x, y) -> x.add(y)).orElse(BigDecimal.ZERO);
            for (Enumeration e = oldRipartizioneCdrVoceLinea.keys(); e.hasMoreElements(); ) {
                key = (Obbligazione_scad_voceBulk) e.nextElement();
                found = false;
                if (key.getCd_centro_responsabilita().equals(cdr) && key.getCd_linea_attivita().equals(latt) && key.getCd_voce().equals(voce.getCd_voce())) {
                    totaleOldScad = (BigDecimal) oldRipartizioneCdrVoceLinea.get(key);
                    found = true;
                    break;
                }
            }
            /*
			 * Controllo, in caso di creazione impegni di competenza o aumento dell'importo assegnato,
			 * che la disponibilità ad assumere impegni residui impropri non sia superiore al limite
			 * previsto nei parametri CNR
			 *
			 **/
            if (totaleOldScad.compareTo(totaleNewScad) == -1 || !found) {
                if (!UtenteBulk.isAbilitatoSbloccoImpegni(userContext)) {
                    if (obbligazione.isCompetenza())
                        saldoSession.checkBloccoImpegniNatfin(userContext, cdr, latt, (Elemento_voceBulk) voce, ObbligazioneBulk.TIPO_COMPETENZA);
                    if (obbligazione.isObbligazioneResiduo())
                        saldoSession.checkBloccoImpegniNatfin(userContext, cdr, latt, (Elemento_voceBulk) voce, ObbligazioneBulk.TIPO_RESIDUO_PROPRIO);
                    if (obbligazione.isObbligazioneResiduoImproprio())
                        saldoSession.checkBloccoImpegniNatfin(userContext, cdr, latt, (Elemento_voceBulk) voce, ObbligazioneBulk.TIPO_RESIDUO_IMPROPRIO);
                }
                if (obbligazione.isCompetenza()) {
                    BigDecimal totaleResidui = saldoSession.getTotaleSaldoResidui(userContext, cdr, latt, voce);
                    if (totaleResidui.compareTo(param_cds.getIm_soglia_consumo_residuo()) == 1)
                        if (!found)
                            throw new ApplicationException("Non è possibile assumere impegni di competenza per il CDR/GAE/Voce (" + cdr + "/" + latt + "/" + voce.getCd_voce() + "), in quanto esiste una disponibilità ad assumere impegni " + "su stanziamenti residui impropri (" + new it.cnr.contab.util.EuroFormat().format(totaleResidui) + ").");
                        else
                            throw new ApplicationException("Non è possibile aumentare di " + new it.cnr.contab.util.EuroFormat().format(totaleNewScad.subtract(totaleOldScad)) + " l'importo di competenza già assegnato per il CDR/GAE/Voce (" + cdr + "/" + latt + "/" + voce.getCd_voce() + "), in quanto esiste una disponibilità ad assumere impegni " + "su stanziamenti residui impropri (" + new it.cnr.contab.util.EuroFormat().format(totaleResidui) + ").");
                }
            }
        }
        // è già presente in ObbligazioneResComponent
        if (!obbligazione.isObbligazioneResiduo() && Utility.createParametriEnteComponentSession().isProgettoPianoEconomicoEnabled(userContext, CNRUserContext.getEsercizio(userContext))) {
            WorkpackageBulk linea = ((WorkpackageHome) getHome(userContext, WorkpackageBulk.class)).searchGAECompleta(userContext, CNRUserContext.getEsercizio(userContext), cdr, latt);
            ProgettoBulk progetto = linea.getProgetto();
            Optional.ofNullable(progetto.getOtherField()).filter(el -> el.isStatoApprovato() || el.isStatoChiuso()).orElseThrow(() -> new ApplicationException("Attenzione! GAE " + linea.getCd_linea_attivita() + " non selezionabile. " + "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(userContext, 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! GAE " + linea.getCd_linea_attivita() + " non selezionabile. " + "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.of(progetto.getOtherField().getDtInizio()).filter(dt -> !dt.after(obbligazione.getDt_registrazione())).orElseThrow(() -> new ApplicationException("Attenzione! GAE " + linea.getCd_linea_attivita() + " non selezionabile. " + "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(obbligazione.getDt_registrazione().toLocalDateTime().toLocalDate()))
                throw new ApplicationMessageFormatException("Attenzione! GAE {0} non selezionabile. " + "La data fine/proroga del progetto {1} {2} ({3}) è precedente rispetto alla data di registrazione dell''impegno ({4}).", linea.getCd_linea_attivita(), progetto.getCd_progetto(), (ggProroga > 0 ? ", aumentata di " + ggProroga + " giorni," : ""), localDateFineProgetto.format(DateTimeFormatter.ofPattern("dd/MM/yyyy")), new java.text.SimpleDateFormat("dd/MM/yyyy").format(obbligazione.getDt_registrazione()));
        }
    } catch (Exception e) {
        throw handleException(e);
    }
}
Also used : EsercizioBulk(it.cnr.contab.config00.esercizio.bulk.EsercizioBulk) Parametri_cdsBulk(it.cnr.contab.config00.bulk.Parametri_cdsBulk) TerzoHome(it.cnr.contab.anagraf00.core.bulk.TerzoHome) IVoceBilancioBulk(it.cnr.contab.config00.pdcfin.bulk.IVoceBilancioBulk) BigDecimal(java.math.BigDecimal) CostantiTi_gestione(it.cnr.contab.config00.latt.bulk.CostantiTi_gestione) ObjectNotFoundException(it.cnr.jada.persistency.ObjectNotFoundException) ValidationException(it.cnr.jada.bulk.ValidationException) Incarichi_repertorioHome(it.cnr.contab.incarichi00.bulk.Incarichi_repertorioHome) UtenteBulk(it.cnr.contab.utenze00.bulk.UtenteBulk) PersistentHome(it.cnr.jada.persistency.sql.PersistentHome) Classificazione_vociBulk(it.cnr.contab.config00.pdcfin.cla.bulk.Classificazione_vociBulk) Timestamp(java.sql.Timestamp) CdsHome(it.cnr.contab.config00.sto.bulk.CdsHome) BulkHome(it.cnr.jada.bulk.BulkHome) LoggableStatement(it.cnr.jada.persistency.sql.LoggableStatement) SQLBuilder(it.cnr.jada.persistency.sql.SQLBuilder) Tipo_unita_organizzativaHome(it.cnr.contab.config00.sto.bulk.Tipo_unita_organizzativaHome) EJBCommonServices(it.cnr.jada.util.ejb.EJBCommonServices) Parametri_cnrBulk(it.cnr.contab.config00.bulk.Parametri_cnrBulk) Esercizio_baseBulk(it.cnr.contab.config00.esercizio.bulk.Esercizio_baseBulk) Elemento_voceBulk(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk) Serializable(java.io.Serializable) RemoteException(java.rmi.RemoteException) EJBException(javax.ejb.EJBException) IPrintMgr(it.cnr.jada.comp.IPrintMgr) Stream(java.util.stream.Stream) Pdg_modulo_spese_gestBulk(it.cnr.contab.pdg01.bulk.Pdg_modulo_spese_gestBulk) Query(it.cnr.jada.persistency.sql.Query) LocalDate(java.time.LocalDate) WorkpackageBulk(it.cnr.contab.config00.latt.bulk.WorkpackageBulk) Ass_evold_evnewBulk(it.cnr.contab.config00.pdcfin.bulk.Ass_evold_evnewBulk) AnagraficoBulk(it.cnr.contab.anagraf00.core.bulk.AnagraficoBulk) Types(java.sql.Types) TerzoBulk(it.cnr.contab.anagraf00.core.bulk.TerzoBulk) SaldoComponentSession(it.cnr.contab.doccont00.ejb.SaldoComponentSession) 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) PrimaryKeyHashtable(it.cnr.jada.bulk.PrimaryKeyHashtable) ApplicationRuntimeException(it.cnr.jada.comp.ApplicationRuntimeException) Parametri_cdsHome(it.cnr.contab.config00.bulk.Parametri_cdsHome) ProgettoHome(it.cnr.contab.progettiric00.core.bulk.ProgettoHome) Utility(it.cnr.contab.util.Utility) it.cnr.contab.doccont00.core.bulk(it.cnr.contab.doccont00.core.bulk) it.cnr.contab.prevent00.bulk(it.cnr.contab.prevent00.bulk) SQLBroker(it.cnr.jada.persistency.sql.SQLBroker) Anagrafico_terzoBulk(it.cnr.contab.anagraf00.core.bulk.Anagrafico_terzoBulk) FunzioneBulk(it.cnr.contab.config00.pdcfin.bulk.FunzioneBulk) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) Configurazione_cnrBulk(it.cnr.contab.config00.bulk.Configurazione_cnrBulk) Ass_evold_evnewHome(it.cnr.contab.config00.pdcfin.bulk.Ass_evold_evnewHome) ContrattoHome(it.cnr.contab.config00.contratto.bulk.ContrattoHome) SQLException(java.sql.SQLException) Ass_contratto_uoBulk(it.cnr.contab.config00.contratto.bulk.Ass_contratto_uoBulk) EnteBulk(it.cnr.contab.config00.sto.bulk.EnteBulk) PrimaryKeyHashMap(it.cnr.jada.bulk.PrimaryKeyHashMap) NaturaBulk(it.cnr.contab.config00.pdcfin.bulk.NaturaBulk) Elemento_voceHome(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceHome) ICRUDMgr(it.cnr.jada.comp.ICRUDMgr) FindClause(it.cnr.jada.persistency.sql.FindClause) V_struttura_organizzativaBulk(it.cnr.contab.config00.sto.bulk.V_struttura_organizzativaBulk) DateUtils(it.cnr.jada.util.DateUtils) Esercizio_baseHome(it.cnr.contab.config00.esercizio.bulk.Esercizio_baseHome) Voce_fBulk(it.cnr.contab.config00.pdcfin.bulk.Voce_fBulk) AnagraficoHome(it.cnr.contab.anagraf00.core.bulk.AnagraficoHome) 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) CdrBulk(it.cnr.contab.config00.sto.bulk.CdrBulk) Incarichi_repertorioBulk(it.cnr.contab.incarichi00.bulk.Incarichi_repertorioBulk) BulkList(it.cnr.jada.bulk.BulkList) DatiFinanziariScadenzeDTO(it.cnr.contab.doccont00.core.DatiFinanziariScadenzeDTO) Unita_organizzativa_enteBulk(it.cnr.contab.config00.sto.bulk.Unita_organizzativa_enteBulk) ProgettoBulk(it.cnr.contab.progettiric00.core.bulk.ProgettoBulk) CdsBulk(it.cnr.contab.config00.sto.bulk.CdsBulk) DateTimeFormatter(java.time.format.DateTimeFormatter) Pdg_preventivo_spe_detBulk(it.cnr.contab.pdg00.bulk.Pdg_preventivo_spe_detBulk) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) Unita_organizzativaHome(it.cnr.contab.config00.sto.bulk.Unita_organizzativaHome) Ass_incarico_uoBulk(it.cnr.contab.incarichi00.bulk.Ass_incarico_uoBulk) Parametri_cnrHome(it.cnr.contab.config00.bulk.Parametri_cnrHome) ComponentException(it.cnr.jada.comp.ComponentException) CompoundFindClause(it.cnr.jada.persistency.sql.CompoundFindClause) ProgettoBulk(it.cnr.contab.progettiric00.core.bulk.ProgettoBulk) WorkpackageHome(it.cnr.contab.config00.latt.bulk.WorkpackageHome) Elemento_voceBulk(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk) LocalDate(java.time.LocalDate) 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) Parametri_cdsBulk(it.cnr.contab.config00.bulk.Parametri_cdsBulk) ContrattoBulk(it.cnr.contab.config00.contratto.bulk.ContrattoBulk) BigDecimal(java.math.BigDecimal) ObjectNotFoundException(it.cnr.jada.persistency.ObjectNotFoundException) ValidationException(it.cnr.jada.bulk.ValidationException) RemoteException(java.rmi.RemoteException) EJBException(javax.ejb.EJBException) 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) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) ComponentException(it.cnr.jada.comp.ComponentException) ApplicationException(it.cnr.jada.comp.ApplicationException) java.util(java.util) ProgettoHome(it.cnr.contab.progettiric00.core.bulk.ProgettoHome) ApplicationRuntimeException(it.cnr.jada.comp.ApplicationRuntimeException) SaldoComponentSession(it.cnr.contab.doccont00.ejb.SaldoComponentSession)

Example 5 with Parametri_cdsBulk

use of it.cnr.contab.config00.bulk.Parametri_cdsBulk in project sigla-main by consiglionazionaledellericerche.

the class RicercaDocContComponent method updateParametriCds.

public OggettoBulk updateParametriCds(UserContext context) throws EJBException, ComponentException, PersistencyException, RemoteException {
    Parametri_cdsBulk parametri_cds = (Parametri_cdsBulk) getHome(context, Parametri_cdsBulk.class).findByPrimaryKey(new Parametri_cdsBulk(((CNRUserContext) context).getCd_cds(), ((CNRUserContext) context).getEsercizio() - 1));
    if (parametri_cds == null || parametri_cds.getFl_ribaltato()) {
        parametri_cds = (Parametri_cdsBulk) getHome(context, Parametri_cdsBulk.class).findByPrimaryKey(new Parametri_cdsBulk(((CNRUserContext) context).getCd_cds(), ((CNRUserContext) context).getEsercizio()));
        try {
            parametri_cds.setFl_ribaltato(new Boolean(true));
            parametri_cds.setToBeUpdated();
            updateBulk(context, parametri_cds);
        } catch (Throwable e) {
            throw handleException(e);
        }
    } else {
        throw new ApplicationException("Attenzione! Il ribaltamento per l'esercizio precedente non è stato effettuato.");
    }
    return parametri_cds;
}
Also used : ApplicationException(it.cnr.jada.comp.ApplicationException) Parametri_cdsBulk(it.cnr.contab.config00.bulk.Parametri_cdsBulk) CNRUserContext(it.cnr.contab.utenze00.bp.CNRUserContext)

Aggregations

Parametri_cdsBulk (it.cnr.contab.config00.bulk.Parametri_cdsBulk)22 ComponentException (it.cnr.jada.comp.ComponentException)16 PersistencyException (it.cnr.jada.persistency.PersistencyException)15 CNRUserContext (it.cnr.contab.utenze00.bp.CNRUserContext)12 Parametri_cdsHome (it.cnr.contab.config00.bulk.Parametri_cdsHome)10 ContrattoBulk (it.cnr.contab.config00.contratto.bulk.ContrattoBulk)8 ApplicationException (it.cnr.jada.comp.ApplicationException)7 SQLBuilder (it.cnr.jada.persistency.sql.SQLBuilder)7 Ass_contratto_uoBulk (it.cnr.contab.config00.contratto.bulk.Ass_contratto_uoBulk)6 Unita_organizzativa_enteBulk (it.cnr.contab.config00.sto.bulk.Unita_organizzativa_enteBulk)5 IntrospectionException (it.cnr.jada.persistency.IntrospectionException)5 BigDecimal (java.math.BigDecimal)5 RemoteException (java.rmi.RemoteException)5 WorkpackageBulk (it.cnr.contab.config00.latt.bulk.WorkpackageBulk)3 Elemento_voceBulk (it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk)3 Elemento_voceHome (it.cnr.contab.config00.pdcfin.bulk.Elemento_voceHome)3 CdrBulk (it.cnr.contab.config00.sto.bulk.CdrBulk)3 Unita_organizzativaBulk (it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk)3 ApplicationRuntimeException (it.cnr.jada.comp.ApplicationRuntimeException)3 Timestamp (java.sql.Timestamp)3