use of it.cnr.jada.comp.ApplicationException in project sigla-main by consiglionazionaledellericerche.
the class ObbligazionePGiroComponent method callRiportaAvanti.
/**
* riporta all'esercizio successivo di doc.contabile
* PreCondition:
* E' stata inoltrata una richiesta di riportare all'esercizio successivo un documento contabile
* PostCondition:
* Il sistema identifica quale delle 2 parti della partita di giro deve essere passata come parametro
* alla stored procedure (metodo 'findPGiroDaRiportareAvanti').
* Il doc.contabile è stato riportato all'esercizio successivo richiamando
* la stored procedure CNRCTB046.riportoEsNextDocCont
*
* @param userContext lo <code>UserContext</code> che ha generato la richiesta
* @param doc <code>IDocumentoContabileBulk</code> doc.contabile da riportare
*/
public void callRiportaAvanti(UserContext userContext, IDocumentoContabileBulk doc) throws it.cnr.jada.comp.ComponentException {
try {
/* if ( doc instanceof ImpegnoPGiroBulk )
{
//per le partite di giro bisogna passare alla procedura PL/SQL sempre
//la parte che ha aperto la partita di giro
ImpegnoPGiroBulk imp = (ImpegnoPGiroBulk) doc;
if ( imp.getAssociazione() != null && imp.getAssociazione().getTi_origine().equals( doc.TI_ENTRATA ) &&
imp.getAssociazione().getAccertamento() != null )
doc = imp.getAssociazione().getAccertamento();
}
*/
doc = findPGiroDaRiportareAvanti(userContext, doc);
if (doc == null)
throw new ApplicationException("Documento non riportabile");
LoggableStatement cs = new LoggableStatement(getConnection(userContext), "call " + it.cnr.jada.util.ejb.EJBCommonServices.getDefaultSchema() + "CNRCTB046.riportoEsNextDocCont(?, ?, ?, ?, ?, ?)", false, this.getClass());
try {
cs.setString(1, doc.getCd_cds());
cs.setObject(2, doc.getEsercizio());
cs.setObject(3, doc.getEsercizio_originale());
cs.setObject(4, doc.getPg_doc_contabile());
cs.setString(5, doc.getTi_entrata_spesa());
cs.setString(6, ((CNRUserContext) userContext).getUser());
cs.executeQuery();
} catch (SQLException e) {
throw handleException(e);
} finally {
cs.close();
}
} catch (SQLException e) {
throw handleException(e);
}
}
use of it.cnr.jada.comp.ApplicationException in project sigla-main by consiglionazionaledellericerche.
the class ObbligazionePGiroComponent method aggiornaSaldiInDifferita.
/**
* Aggiornamento in differita dei saldi dell'obbligazione su partita di giro.
* Un documento amministrativo di spesa che agisce in modalità transazionale ha creato/modificato gli importi
* relativi ad un impegno pgiro; i saldi di tale impegno non possono essere aggiornati subito in quanto
* tale operazione genererebbe dei lock sulle voci del piano che non ne consentirebbere l'utilizzo ad altri utenti;
* pertanto l'aggiornamento dei saldi dell'obbligazione pgiro viene differito al momento del salvataggio
* del documento amministrativo.
*
* Pre-post-conditions:
*
* Nome: Aggiorna saldi per obbligazione su partita di giro creata
* Pre: Una richiesta di aggiornamento dei saldi in differita e' stata generata per un'obbligazione su capitoli di
* partita di giro che e' stata creata nel contesto transazionale del documento amministrativo ( progressivo
* impegno pgiro < 0)
* Post: I saldi dell'obbligazione pgiro sono stati aggiornati nel metodo 'aggiornaSaldiInInserimento'
*
* Nome: Aggiorna saldi per obbligazione su partita di giro esistente
* Pre: Una richiesta di aggiornamento dei saldi in differita e' stata generata per un'obbligazione su capitoli di
* partita di giro che non e' stata creata nel contesto transazionale del documento amministrativo ( progressivo
* impegno pgiro > 0)
* Post: I saldi dell'obbligazione pgiro sono stati aggiornati nel metodo 'aggiornaSaldiInModifica'
*
* @param userContext lo UserContext che ha generato la richiesta
* @param docContabile l'ImpegnoPGiroBulk per cui aggiornare i saldi
* @param values la Map che contiene il "pg_ver_rec" iniziale dell'impegno
* @param param parametro non utilizzato per le partite di giro
*/
public void aggiornaSaldiInDifferita(UserContext userContext, IDocumentoContabileBulk docContabile, Map values, OptionRequestParameter param) throws ComponentException {
try {
if (docContabile instanceof ImpegnoPGiroBulk) {
ImpegnoPGiroBulk imp_pgiro = (ImpegnoPGiroBulk) docContabile;
Long pg_ver_rec = (Long) values.get("pg_ver_rec");
if (pg_ver_rec == null)
throw new ApplicationException("Aggiornamento in differita dei saldi dei documenti contabili impossibile (pg_ver_rec nullo)");
if (// obbligazione appena inserita
imp_pgiro.getPg_obbligazione().longValue() < 0)
aggiornaSaldiInInserimento(userContext, imp_pgiro, true);
else
aggiornaSaldiInModifica(userContext, imp_pgiro, pg_ver_rec, true);
}
} catch (Exception e) {
throw handleException(e);
}
}
use of it.cnr.jada.comp.ApplicationException in project sigla-main by consiglionazionaledellericerche.
the class ObbligazioneComponent method validateBulkForPrint.
/**
* Validazione dell'oggetto in fase di stampa
*/
private void validateBulkForPrint(it.cnr.jada.UserContext userContext, Stampa_registro_obbligazioniBulk stampa) throws ComponentException {
try {
Timestamp dataOdierna = getDataOdierna(userContext);
Timestamp lastDayOfYear = DateServices.getLastDayOfYear(CNRUserContext.getEsercizio(userContext).intValue());
if (stampa.getEsercizio() == null)
throw new ValidationException("Il campo ESERCIZIO e' obbligatorio");
if (stampa.getCd_cds() == null)
throw new ValidationException("Il campo CDS e' obbligatorio");
if (!stampa.isCdsUOInScrivania() && stampa.getCdUoForPrint() == null)
throw new ValidationException("Il campo UNITA ORGANIZZATIVA è obbligatorio");
if (stampa.getDataInizio() == null)
throw new ValidationException("Il campo DATA INIZIO PERIODO è obbligatorio");
if (stampa.getDataFine() == null)
throw new ValidationException("Il campo DATA FINE PERIODO è obbligatorio");
java.sql.Timestamp firstDayOfYear = DateServices.getFirstDayOfYear(stampa.getEsercizio().intValue());
if (stampa.getDataInizio().compareTo(stampa.getDataFine()) > 0)
throw new ValidationException("La DATA di INIZIO PERIODO non può essere superiore alla DATA di FINE PERIODO");
if (stampa.getDataInizio().compareTo(firstDayOfYear) < 0) {
java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("dd/MM/yyyy");
throw new ValidationException("La DATA di INIZIO PERIODO non può essere inferiore a " + formatter.format(firstDayOfYear));
}
if (stampa.getDataFine().compareTo(lastDayOfYear) > 0) {
java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("dd/MM/yyyy");
throw new ValidationException("La DATA di FINE PERIODO non può essere superiore a " + formatter.format(lastDayOfYear));
}
if (stampa.getPgInizio() == null)
throw new ValidationException("Il campo NUMERO INIZIO è obbligatorio");
if (stampa.getPgFine() == null)
throw new ValidationException("Il campo NUMERO FINE è obbligatorio");
if (stampa.getPgInizio().compareTo(stampa.getPgFine()) > 0)
throw new ValidationException("Il NUMERO INIZIO non può essere superiore al NUMERO FINE");
} catch (ValidationException ex) {
throw new ApplicationException(ex);
}
}
use of it.cnr.jada.comp.ApplicationException 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);
}
use of it.cnr.jada.comp.ApplicationException in project sigla-main by consiglionazionaledellericerche.
the class ObbligazionePGiroComponent method modificaScadenzaInAutomatico.
/*
* Modifica l'importo di una scadenza e della testata dell'obbligazione
*
* Pre-post-conditions:
*
* Nome: Scadenza successiva - Errore ultima scadenza
* Pre: E' stata generata la richiesta di modifica della scadenza successiva
* Post: Viene generata un'ApplicationException in quanto le obbligazioni su partita di giro hanno un'unica scadenza
*
* Nome: Modifica scadenza
* Pre: E' stata generata la richiesta di modifica dell'importo di una scadenza
* Post: Vengono aggiornati l'importo in testata, in scadenza e in scad_voce e la controparte per l'accertamento su pgiro
*
* @param userContext lo userContext che ha generato la richiesta
* @param scad la scadenza (con importo originale)
* @param nuovoImporto che deve assumere la scadenza
* @param modificaScadenzaSuccessiva se true indica il fatto che la testata dell'obbligazione non deve essere modificata
* e che la differenza fra l'importo attuale e il vecchio importo deve essere riportata sulla
* scadenza successiva
* @param modificaScadenzaSuccessiva se false indica il fatto che deve essere modificato l'importo della scadenza e della testata
* dell'obbligazione
* @return la scadenza
*/
public IScadenzaDocumentoContabileBulk modificaScadenzaInAutomatico(UserContext userContext, IScadenzaDocumentoContabileBulk scad, BigDecimal nuovoImporto, boolean modificaScadenzaSuccessiva) throws ComponentException {
Obbligazione_scadenzarioBulk scadenza = (Obbligazione_scadenzarioBulk) scad;
if (modificaScadenzaSuccessiva)
throw new ApplicationException(" Non esiste scadenza successiva");
if (scadenza.getIm_scadenza().compareTo(nuovoImporto) == 0)
throw handleException(new ApplicationException("Aggiornamento in automatico non necessario"));
if (nuovoImporto.compareTo(new BigDecimal(0)) < 0)
throw handleException(new ApplicationException("L'importo della scadenza deve essere maggiore di 0"));
// aggiorno importo testata
ImpegnoPGiroBulk imp_pgiro = (ImpegnoPGiroBulk) scadenza.getObbligazione();
if (imp_pgiro.getCd_tipo_documento_cont().equals(Numerazione_doc_contBulk.TIPO_IMP_RES))
throw handleException(new ApplicationException("Non è consentita la modifica dell'importo di testata di un'annotazione residua."));
imp_pgiro.setIm_obbligazione(nuovoImporto);
imp_pgiro.setToBeUpdated();
imp_pgiro.setFromDocAmm(true);
modificaConBulk(userContext, scadenza.getObbligazione());
return scadenza;
}
Aggregations