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_annotazione_spese_pgiroBulk 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.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 spalmaImportiSuScadenza.
/**
* Metodo che spalma su una scadenza gli importi dei CDR/GAE/Voce secondo le percentuali indicate.
* PreCondition:
* E' stato richiesto di assegnare alla scadenza indicata gli importi dei CDR/GAE/Voce tenendo conto
* della ripartizione percentuale e degli importi da assegnare indicati nella HashList
* PostCondition:
* Viene verificato che gli importi da ripartire dei CDR/GAE/Voce siano sufficienti a coprire l'importo
* della scadenza. Quindi viene caricato lo scadenzario/voce aggiornando l'importo assegnato alla voce
* della HashList
*
* @param userContext
* @param os <code>Obbligazione_scadenzarioBulk</code>lo scadenzario da aggiornare
* @param hashVociList la lista di oggetti V_assestatoBulk da cui prendere le percentuali e gli importi
* da spalmare.
* @return la scadenza <code>Obbligazione_scadenzarioBulk</code> aggiornata
* @throws it.cnr.jada.comp.ComponentException
*/
private Obbligazione_scadenzarioBulk spalmaImportiSuScadenza(UserContext userContext, Obbligazione_scadenzarioBulk os, PrimaryKeyHashtable hashVociList) throws it.cnr.jada.comp.ComponentException {
Obbligazione_scad_voceBulk osv;
BigDecimal impDaAssegnareScadenza = os.getIm_scadenza();
BigDecimal impAssegnatoScadenza = new BigDecimal(0);
// AGGIORNO LO SCADENZARIO VOCI IN PERCENTUALE ALLE SELEZIONI EFFETTUATE
for (Iterator iteratorOsv = os.getObbligazione_scad_voceColl().iterator(); iteratorOsv.hasNext(); ) {
osv = (Obbligazione_scad_voceBulk) iteratorOsv.next();
osv.setIm_voce(Utility.ZERO);
osv.setToBeUpdated();
for (Enumeration e = hashVociList.keys(); e.hasMoreElements(); ) {
V_assestatoBulk voceSel = (V_assestatoBulk) e.nextElement();
BigDecimal impDaAssegnareVoce = Utility.nvl(voceSel.getImp_da_assegnare()).subtract((BigDecimal) hashVociList.get(voceSel));
BigDecimal prcDaAssegnareVoce = os.getIm_scadenza().multiply(voceSel.getPrc_da_assegnare().divide(new BigDecimal(100)));
if (prcDaAssegnareVoce.compareTo(impDaAssegnareVoce) > 0)
prcDaAssegnareVoce = impDaAssegnareVoce;
if (prcDaAssegnareVoce.compareTo(impDaAssegnareScadenza) > 0)
prcDaAssegnareVoce = impDaAssegnareScadenza;
if (prcDaAssegnareVoce.compareTo(Utility.ZERO) > 0 && voceSel.getEsercizio().equals(osv.getEsercizio()) && voceSel.getCd_centro_responsabilita().equals(osv.getCd_centro_responsabilita()) && voceSel.getCd_linea_attivita().equals(osv.getCd_linea_attivita()) && voceSel.getTi_appartenenza().equals(osv.getTi_appartenenza()) && voceSel.getTi_gestione().equals(osv.getTi_gestione()) && voceSel.getCd_voce().equals(osv.getCd_voce())) {
// Importo scadenza moltiplicato per la percentuale ottenuto dalla divisione tra
// l'importo assegnato al CDR/VOCE/GAE e l'importo totale
osv.setIm_voce(prcDaAssegnareVoce.setScale(2, BigDecimal.ROUND_HALF_UP));
// importo assegnato CDR/VOCE/LINEA
hashVociList.put(voceSel, ((BigDecimal) hashVociList.get(voceSel)).add(osv.getIm_voce()));
break;
}
}
impDaAssegnareScadenza = impDaAssegnareScadenza.subtract(osv.getIm_voce());
impAssegnatoScadenza = impAssegnatoScadenza.add(osv.getIm_voce());
}
// gli importi ancora disponibili
if (os.getIm_scadenza().compareTo(impAssegnatoScadenza) > 0) {
for (Iterator iteratorOsv = os.getObbligazione_scad_voceColl().iterator(); iteratorOsv.hasNext(); ) {
osv = (Obbligazione_scad_voceBulk) iteratorOsv.next();
BigDecimal impDaAssegnareVoce = new BigDecimal(0);
for (Enumeration e = hashVociList.keys(); e.hasMoreElements(); ) {
V_assestatoBulk voceSel = (V_assestatoBulk) e.nextElement();
impDaAssegnareVoce = Utility.nvl(voceSel.getImp_da_assegnare()).subtract((BigDecimal) hashVociList.get(voceSel));
if (impDaAssegnareVoce.compareTo(impDaAssegnareScadenza) > 0)
impDaAssegnareVoce = impDaAssegnareScadenza;
if (impDaAssegnareVoce.compareTo(Utility.ZERO) > 0 && voceSel.getEsercizio().equals(osv.getEsercizio()) && voceSel.getCd_centro_responsabilita().equals(osv.getCd_centro_responsabilita()) && voceSel.getCd_linea_attivita().equals(osv.getCd_linea_attivita()) && voceSel.getTi_appartenenza().equals(osv.getTi_appartenenza()) && voceSel.getTi_gestione().equals(osv.getTi_gestione()) && voceSel.getCd_voce().equals(osv.getCd_voce())) {
// Importo scadenza moltiplicato per la percentuale ottenuto dalla divisione tra
// l'importo assegnato al CDR/VOCE/GAE e l'importo totale
osv.setIm_voce(osv.getIm_voce().add(impDaAssegnareVoce.setScale(2, BigDecimal.ROUND_HALF_UP)));
osv.setToBeUpdated();
// importo assegnato CDR/VOCE/LINEA
hashVociList.put(voceSel, ((BigDecimal) hashVociList.get(voceSel)).add(impDaAssegnareVoce.setScale(2, BigDecimal.ROUND_HALF_UP)));
impDaAssegnareScadenza = impDaAssegnareScadenza.subtract(impDaAssegnareVoce.setScale(2, BigDecimal.ROUND_HALF_UP));
impAssegnatoScadenza = impAssegnatoScadenza.add(impDaAssegnareVoce.setScale(2, BigDecimal.ROUND_HALF_UP));
break;
}
}
}
}
os.setIm_scadenza(impAssegnatoScadenza.setScale(2, BigDecimal.ROUND_HALF_UP));
if (os.getIm_scadenza().compareTo(os.getIm_associato_doc_amm()) == -1)
throw new ApplicationException("Non è possibile attribuire all'obbligazione un importo inferiore a quanto " + "risulta associato a documenti amministrativi.");
// Aggiusto le percentuali
for (Iterator j = os.getObbligazione_scad_voceColl().iterator(); j.hasNext(); ) {
osv = (Obbligazione_scad_voceBulk) j.next();
if (os.getIm_scadenza().doubleValue() != 0)
osv.setPrc((osv.getIm_voce().multiply(new BigDecimal(100)).divide(os.getIm_scadenza(), 2, BigDecimal.ROUND_HALF_UP)));
else
osv.setPrc(new BigDecimal(0));
}
return os;
}
use of it.cnr.jada.comp.ApplicationException in project sigla-main by consiglionazionaledellericerche.
the class ObbligazioneComponent method modificaConBulk.
/**
* Tutti i controlli superati - contesto non transazionale
* PreCondition:
* Una richiesta di modifica di un'obbligazione e' stata generata
* L'obbligazione ha superato i controlli eseguiti dal metodo 'verificaObbligazione'
* L'obbligazione ha superato i controlli sulla disponibilità di cassa delle voci del piano eseguiti dal metodo 'aggiornaCapitoloSaldoObbligazione'
* L'obbligazione non e' stata modificata in un contesto transazionale
* PostCondition:
* L'obbligazione viene aggiornata
* I dettagli di tutte le scadenze vengono aggiornati (metodo generaDettagliScadenzaObbligazione)
* I saldi dei capitoli dei dettagli delle scadenze vengono aggiornati (metodo aggiornaCapitoloSaldoObbligazione)
* Lo stato COFI/COGE degli eventuali doc. amministrativi associati all'obbligazione e' stato aggiornato
* Tutti i controlli superati - contesto transazionale
* PreCondition:
* Una richiesta di modifica di un'obbligazione e' stata generata
* L'obbligazione ha superato i controlli eseguiti dal metodo 'verificaObbligazione'
* L'obbligazione ha superato i controlli sulla disponibilità di cassa delle voci del piano eseguiti dal metodo 'aggiornaCapitoloSaldoObbligazione'
* L'obbligazione e' stata modificata in un contesto transazionale
* PostCondition:
* L'obbligazione viene aggiornata e i dettagli di tutte le scadenze vengono aggiornati (metodo generaDettagliScadenzaObbligazione)
* Errore di verifica obbligazione
* PreCondition:
* Una richiesta di modifica di un'obbligazione e' stata generata e l'obbligazione non ha superato i
* controlli eseguiti dal metodo 'verificaObbligazione'
* PostCondition:
* Viene generata un'ApplicationException che descrive all'utente l'errore che si e' verificato
* Errore di disponibilità di cassa
* PreCondition:
* Una richiesta di modifica di un'obbligazione e' stata generata e l'obbligazione non ha superato i
* controlli di disponibilità di cassa eseguiti dal metodo 'aggiornaCapitoloSaldoObbligazione'
* PostCondition:
* Viene generata un'ApplicationException che descrive all'utente l'errore che si e' verificato
* Errore di disponibilità di cassa - forzatura
* PreCondition:
* Una richiesta di modifica di un'obbligazione e' stata generata e l'obbligazione non ha superato i
* controlli di disponibilità di cassa eseguiti dal metodo 'aggiornaCapitoloSaldoObbligazione'
* e l'utente ha scelto di forzare l'emissione dell'obbligazione
* PostCondition:
* L'obbligazione viene modificata, i dettagli di tutte le scadenze vengono modificati (metodo generaDettagliScadenzaObbligazione) e i saldi
* dei capitoli dei dettagli delle scadenze vengono aggiornati (metodo aggiornaCapitoloSaldoObbligazione)
*
* @param aUC lo user context
* @param bulk l'istanza di <code>ObbligazioneBulk</code> da modificare
* @return l'istanza di <code>ObbligazioneBulk</code> modificata
*/
public OggettoBulk modificaConBulk(UserContext aUC, OggettoBulk bulk) throws ComponentException {
try {
Obbligazione_scadenzarioBulk scadenza;
ObbligazioneBulk obbligazione = (ObbligazioneBulk) bulk;
validaCampi(aUC, obbligazione);
/* simona 23.10.2002 : invertito l'ordine della verifica e della generzione dettagli x problema 344 */
// genera eventualmente i dettagli che non erano ancora stati generati
generaDettagliScadenzaObbligazione(aUC, obbligazione, null);
// verifica la correttezza dell'obbligazione
verificaObbligazione(aUC, obbligazione);
// verifica la correttezza dell'imputazione finanziaria
validaImputazioneFinanziaria(aUC, obbligazione);
// aggiorna il db:
updateBulk(aUC, obbligazione);
makeBulkListPersistent(aUC, obbligazione.getObbligazione_scadenzarioColl());
// esegue il check di disponibilita di cassa
controllaDisponibilitaCassaPerVoce(aUC, obbligazione, MODIFICA);
verificaCoperturaContratto(aUC, obbligazione);
verificaCoerenzaGaeContratto(aUC, obbligazione);
verificaCoperturaIncaricoRepertorio(aUC, obbligazione);
if (!aUC.isTransactional()) {
// aggiorna il capitolo saldo
aggiornaCapitoloSaldoObbligazione(aUC, obbligazione, MODIFICA);
aggiornaStatoCOAN_COGEDocAmm(aUC, obbligazione);
}
// Se utente non è supervisore e la voce va azzerata non è possibile aumentare l'importo dell'impegno residuo
if (obbligazione.isObbligazioneResiduo())
if (verificaVoceResidua(aUC, obbligazione))
if (obbligazione.getIm_iniziale_obbligazione().compareTo(obbligazione.getIm_obbligazione()) < 0)
throw new ApplicationException("Aggiornamento non consentito! L'impegno residuo non può essere aumentato");
obbligazione.setIm_iniziale_obbligazione(obbligazione.getIm_obbligazione());
obbligazione.setCd_iniziale_elemento_voce(obbligazione.getCd_elemento_voce());
if (obbligazione.isObbligazioneResiduo()) {
if (((ObbligazioneResBulk) obbligazione).isSaldiDaAggiornare()) {
// aggiorniamo i saldi legati alle modifiche agli impegni residui
aggiornaSaldiImpegniResiduiPropri(aUC, obbligazione);
// aggiorniamo il progressivo in definitivo
Obbligazione_modificaBulk obbMod = ((ObbligazioneResBulk) obbligazione).getObbligazione_modifica();
if (obbMod != null && obbMod.isTemporaneo()) {
aggiornaObbligazioneModificaTemporanea(aUC, obbMod);
}
}
}
verificaStatoEsercizio(aUC, ((CNRUserContext) aUC).getEsercizio(), obbligazione.getCd_cds());
validaCreaModificaOrigineFonti(aUC, obbligazione);
obbligazione = validaCreaModificaElementoVoceNext(aUC, obbligazione);
return obbligazione;
} catch (Exception e) {
throw handleException(e);
}
}
use of it.cnr.jada.comp.ApplicationException in project sigla-main by consiglionazionaledellericerche.
the class ObbligazioneComponent method validaCampi.
private void validaCampi(UserContext uc, ObbligazioneBulk obbligazione) throws ComponentException {
try {
// controlli di validazione del campo MOTIVAZIONE
Parametri_cnrBulk bulkCNR = (Parametri_cnrBulk) getHome(uc, Parametri_cnrBulk.class).findByPrimaryKey(new Parametri_cnrBulk(CNRUserContext.getEsercizio(uc)));
if (bulkCNR == null)
throw new ApplicationException("Parametri CNR non presenti per l'anno " + CNRUserContext.getEsercizio(uc));
if (!obbligazione.isObbligazioneResiduo() && bulkCNR.getFl_motivazione_su_imp() && obbligazione.getMotivazione() == null) {
if (obbligazione.isToBeUpdated()) {
BigDecimal impObbl = obbligazione.getIm_obbligazione();
ObbligazioneBulk oldObbl = (ObbligazioneBulk) getHome(uc, ObbligazioneBulk.class).findByPrimaryKey(obbligazione);
BigDecimal oldImpObbl = oldObbl.getIm_obbligazione();
if (Utility.nvl(impObbl.subtract(oldImpObbl)).compareTo(Utility.nvl(bulkCNR.getImporto_max_imp())) >= 0 && Utility.nvl(oldImpObbl).compareTo(Utility.nvl(impObbl)) != 0)
throw new ApplicationException("Attenzione: il campo MOTIVAZIONE è obbligatorio.");
} else {
throw new ApplicationException("Attenzione: il campo MOTIVAZIONE è obbligatorio.");
}
}
} catch (Exception e) {
throw handleException(e);
}
}
use of it.cnr.jada.comp.ApplicationException 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));
}
}
Aggregations