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));
}
}
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);
}
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);
}
}
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);
}
}
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;
}
Aggregations