use of it.cnr.contab.progettiric00.tabrif.bulk.Voce_piano_economico_prgBulk in project sigla-main by consiglionazionaledellericerche.
the class SaldoComponent method checkDispPianoEconomicoProgetto.
/**
* Metodo che verifica la congruenza delle disponibilità sul piano economico del progetto
*
* @param userContext
* @param moduloCosti
* @param isFromChangeStato indica che la modifica è stata richiesta in fase di cambio stato progetto
* @throws ComponentException
*/
public void checkDispPianoEconomicoProgetto(UserContext userContext, Pdg_modulo_costiBulk moduloCosti, boolean isFromChangeStato) throws ComponentException {
try {
it.cnr.contab.config00.ejb.Configurazione_cnrComponentSession configSession = (it.cnr.contab.config00.ejb.Configurazione_cnrComponentSession) it.cnr.jada.util.ejb.EJBCommonServices.createEJB("CNRCONFIG00_EJB_Configurazione_cnrComponentSession", it.cnr.contab.config00.ejb.Configurazione_cnrComponentSession.class);
BigDecimal annoFrom = configSession.getIm01(userContext, new Integer(0), null, Configurazione_cnrBulk.PK_GESTIONE_PROGETTI, Configurazione_cnrBulk.SK_PROGETTO_PIANO_ECONOMICO);
if (Optional.ofNullable(annoFrom).map(BigDecimal::intValue).filter(el -> el.compareTo(moduloCosti.getEsercizio()) <= 0).isPresent()) {
Progetto_piano_economicoHome ppeHome = (Progetto_piano_economicoHome) getHome(userContext, Progetto_piano_economicoBulk.class);
List<Progetto_piano_economicoBulk> pianoEconomicoList = (List<Progetto_piano_economicoBulk>) ppeHome.findProgettoPianoEconomicoList(moduloCosti.getPg_progetto());
List<Pdg_modulo_speseBulk> speseList = (List<Pdg_modulo_speseBulk>) moduloCosti.getDettagliSpese();
pianoEconomicoList.stream().filter(e -> e.getFl_ctrl_disp() && (e.getEsercizio_piano().equals(0) || e.getEsercizio_piano().equals(moduloCosti.getEsercizio()))).forEach(e -> {
try {
Progetto_piano_economicoBulk bulk = null;
Progetto_piano_economicoBulk bulkToFind = new Progetto_piano_economicoBulk();
bulkToFind.setVoce_piano_economico(e.getVoce_piano_economico());
bulkToFind.setPg_progetto(e.getPg_progetto());
bulkToFind.setEsercizio_piano(e.getEsercizio_piano());
try {
bulk = (Progetto_piano_economicoBulk) getHome(userContext, Progetto_piano_economicoBulk.class).findAndLock(bulkToFind);
} catch (ObjectNotFoundException ex) {
}
if (bulk != null && bulk.getFl_ctrl_disp()) {
V_saldi_piano_econom_progettoBulk saldo = ((V_saldi_piano_econom_progettoHome) getHome(userContext, V_saldi_piano_econom_progettoBulk.class)).cercaSaldoPianoEconomico(bulk, "S");
BigDecimal dispResiduaFin = saldo.getDispResiduaFinanziamento();
if (!isFromChangeStato)
dispResiduaFin = dispResiduaFin.subtract(speseList.stream().filter(x -> Optional.ofNullable(x.getVoce_piano_economico()).isPresent()).filter(x -> x.getVoce_piano_economico().equalsByPrimaryKey(e.getVoce_piano_economico())).map(el -> Utility.nvl(el.getIm_spese_gest_decentrata_est())).collect(Collectors.reducing(BigDecimal.ZERO, BigDecimal::add)));
if (dispResiduaFin.compareTo(BigDecimal.ZERO) < 0)
throw new ApplicationException("Impossibile effettuare l'operazione !\n" + "L'importo indicato in previsione per le fonti decentrate esterne supera di " + new it.cnr.contab.util.EuroFormat().format(dispResiduaFin.abs()) + " l'importo finanziato indicato sul piano economico " + e.getCd_voce_piano() + " del progetto " + (e.getEsercizio_piano().equals(0) ? "" : "per l'esercizio " + e.getEsercizio_piano()) + ".");
if (isFromChangeStato && Optional.ofNullable(moduloCosti).flatMap(el -> Optional.ofNullable(el.getPdg_modulo())).flatMap(el -> Optional.ofNullable(el.getProgetto())).flatMap(el -> Optional.ofNullable(el.getOtherField())).flatMap(el -> Optional.ofNullable(el.getTipoFinanziamento())).map(TipoFinanziamentoBulk::getFlAllPrevFin).orElse(Boolean.TRUE) && dispResiduaFin.compareTo(BigDecimal.ZERO) != 0) {
Voce_piano_economico_prgBulk vocePianoEconomico = (Voce_piano_economico_prgBulk) ((Voce_piano_economico_prgHome) getHome(userContext, Voce_piano_economico_prgBulk.class)).findByPrimaryKey(e.getVoce_piano_economico());
if (Optional.ofNullable(vocePianoEconomico).map(Voce_piano_economico_prgBulk::getFlAllPrevFin).orElse(Boolean.TRUE))
throw new ApplicationException("Impossibile effettuare l'operazione !\n" + "L'importo totale indicato in previsione per le fonti decentrate esterne non corrisponde " + " all'importo finanziato indicato sul piano economico " + e.getCd_voce_piano() + " del progetto " + (e.getEsercizio_piano().equals(0) ? "" : "per l'esercizio " + e.getEsercizio_piano()) + "(diff: " + new it.cnr.contab.util.EuroFormat().format(dispResiduaFin) + ").");
}
BigDecimal dispResiduaCofin = saldo.getDispResiduaCofinanziamento();
if (!isFromChangeStato)
dispResiduaCofin = dispResiduaCofin.subtract(speseList.stream().filter(x -> Optional.ofNullable(x.getVoce_piano_economico()).isPresent()).filter(x -> x.getVoce_piano_economico().equalsByPrimaryKey(e.getVoce_piano_economico())).map(el -> Utility.nvl(el.getIm_spese_gest_decentrata_int())).collect(Collectors.reducing(BigDecimal.ZERO, BigDecimal::add)));
if (dispResiduaCofin.compareTo(BigDecimal.ZERO) < 0)
throw new ApplicationException("Impossibile effettuare l'operazione !\n" + "L'importo indicato in previsione per le fonti decentrate interne supera di " + new it.cnr.contab.util.EuroFormat().format(dispResiduaCofin.abs()) + " l'importo cofinanziato indicato sul piano economico " + e.getCd_voce_piano() + " del progetto " + (e.getEsercizio_piano().equals(0) ? "" : "per l'esercizio " + e.getEsercizio_piano()) + ".");
}
} catch (Exception ex) {
throw new RuntimeException(ex);
}
});
}
} catch (Exception e) {
if (e instanceof RuntimeException)
throw handleException(e.getCause());
throw handleException(e);
}
}
use of it.cnr.contab.progettiric00.tabrif.bulk.Voce_piano_economico_prgBulk in project sigla-main by consiglionazionaledellericerche.
the class CRUDProgettoAction method doBringBackSearchVoce_piano.
public it.cnr.jada.action.Forward doBringBackSearchVoce_piano(ActionContext context, Progetto_piano_economicoBulk progettoPiaeco, Voce_piano_economico_prgBulk vocePiaeco) throws java.rmi.RemoteException {
try {
TestataProgettiRicercaBP bp = (TestataProgettiRicercaBP) getBusinessProcess(context);
progettoPiaeco.setVoce_piano_economico(vocePiaeco);
bp.caricaVociPianoEconomicoAssociate(context, progettoPiaeco);
return context.findDefaultForward();
} catch (Throwable e) {
return handleException(context, e);
}
}
use of it.cnr.contab.progettiric00.tabrif.bulk.Voce_piano_economico_prgBulk in project sigla-main by consiglionazionaledellericerche.
the class Linea_attivitaComponent method selectVocePianoEconomico2016ByClause.
public SQLBuilder selectVocePianoEconomico2016ByClause(UserContext userContext, WorkpackageBulk linea_attivita, Voce_piano_economico_prgBulk vocePianoEconomico, CompoundFindClause clause) throws ComponentException, PersistencyException {
Voce_piano_economico_prgHome vocePianoHome = (Voce_piano_economico_prgHome) getHome(userContext, Voce_piano_economico_prgBulk.class);
Integer pgProgetto = null;
if (linea_attivita != null && linea_attivita.getProgetto2016() != null && linea_attivita.getProgetto2016().getPg_progetto() != null)
pgProgetto = linea_attivita.getProgetto2016().getPg_progetto();
SQLBuilder sql = vocePianoHome.findVocePianoEconomicoPrgList(pgProgetto);
if (clause != null)
sql.addClause(clause);
return sql;
}
use of it.cnr.contab.progettiric00.tabrif.bulk.Voce_piano_economico_prgBulk in project sigla-main by consiglionazionaledellericerche.
the class RimodulaProgettoRicercaComponent method selectVoce_piano_economicoByClause.
public SQLBuilder selectVoce_piano_economicoByClause(UserContext userContext, Progetto_piano_economicoBulk pianoEconomico, Voce_piano_economico_prgBulk vocePiano, CompoundFindClause clauses) throws ComponentException {
Voce_piano_economico_prgHome home = (Voce_piano_economico_prgHome) getHome(userContext, Voce_piano_economico_prgBulk.class);
SQLBuilder sql = home.createSQLBuilder();
sql.addTableToHeader("UNITA_ORGANIZZATIVA");
sql.addSQLJoin("VOCE_PIANO_ECONOMICO_PRG.CD_UNITA_ORGANIZZATIVA", "UNITA_ORGANIZZATIVA.CD_UNITA_ORGANIZZATIVA");
sql.openParenthesis(FindClause.AND);
sql.addClause(FindClause.OR, "cd_unita_organizzativa", SQLBuilder.EQUALS, pianoEconomico.getProgetto().getCd_unita_organizzativa());
sql.addSQLClause(FindClause.OR, "UNITA_ORGANIZZATIVA.CD_TIPO_UNITA", SQLBuilder.EQUALS, Tipo_unita_organizzativaHome.TIPO_UO_ENTE);
sql.closeParenthesis();
Optional.ofNullable(pianoEconomico.getProgetto()).flatMap(el -> Optional.ofNullable(el.getOtherField())).flatMap(el -> Optional.ofNullable(el.getTipoFinanziamento())).ifPresent(tipoFin -> {
if (!tipoFin.getFlAssCatVociInd() || !tipoFin.getFlAssCatVociDet() || !tipoFin.getFlAssCatVociAltro()) {
sql.openParenthesis(FindClause.AND);
sql.addClause(FindClause.OR, "tipologia", SQLBuilder.ISNULL, null);
if (!tipoFin.getFlAssCatVociInd())
sql.addClause(FindClause.OR, "tipologia", SQLBuilder.NOT_EQUALS, Voce_piano_economico_prgBulk.PERSONALE_INDET);
if (!tipoFin.getFlAssCatVociDet())
sql.addClause(FindClause.OR, "tipologia", SQLBuilder.NOT_EQUALS, Voce_piano_economico_prgBulk.PERSONALE_DETER);
if (!tipoFin.getFlAssCatVociAltro())
sql.addClause(FindClause.OR, "tipologia", SQLBuilder.NOT_EQUALS, Voce_piano_economico_prgBulk.PERSONALE_OTHER);
sql.closeParenthesis();
}
});
sql.addClause(clauses);
sql.addOrderBy("cd_voce_piano");
return sql;
}
use of it.cnr.contab.progettiric00.tabrif.bulk.Voce_piano_economico_prgBulk in project sigla-main by consiglionazionaledellericerche.
the class ProgettoRicercaComponent method validaQuadraturaPianoEconomico.
private void validaQuadraturaPianoEconomico(UserContext userContext, ProgettoBulk progetto, Integer annoFrom) throws ComponentException {
try {
Optional<TipoFinanziamentoBulk> optTipoFin = Optional.ofNullable(progetto.getOtherField()).flatMap(el -> Optional.ofNullable(el.getTipoFinanziamento()));
if (optTipoFin.flatMap(el -> Optional.ofNullable(el.getFlAllPrevFin())).filter(el -> el.equals(Boolean.TRUE)).isPresent()) {
progetto.getAllDetailsProgettoPianoEconomico().stream().filter(el -> Optional.ofNullable(el.getVoce_piano_economico()).map(Voce_piano_economico_prgBulk::getFlAllPrevFin).orElse(Boolean.FALSE)).map(Progetto_piano_economicoBulk::getEsercizio_piano).filter(annoPiano -> Optional.ofNullable(annoFrom).map(el -> annoPiano.compareTo(el) >= 0).orElse(Boolean.TRUE)).distinct().forEach(annoPiano -> {
try {
Pdg_modulo_costiHome pdgModuloHome = (Pdg_modulo_costiHome) getHome(userContext, Pdg_modulo_costiBulk.class);
SQLBuilder sqlPdgModulo = pdgModuloHome.createSQLBuilder();
sqlPdgModulo.addClause(FindClause.AND, "esercizio", SQLBuilder.EQUALS, annoPiano);
sqlPdgModulo.addClause(FindClause.AND, "pg_progetto", SQLBuilder.EQUALS, progetto.getPg_progetto());
sqlPdgModulo.addTableToHeader("PDG_MODULO");
sqlPdgModulo.addSQLJoin("PDG_MODULO_COSTI.ESERCIZIO", "PDG_MODULO.ESERCIZIO");
sqlPdgModulo.addSQLJoin("PDG_MODULO_COSTI.CD_CENTRO_RESPONSABILITA", "PDG_MODULO.CD_CENTRO_RESPONSABILITA");
sqlPdgModulo.addSQLJoin("PDG_MODULO_COSTI.PG_PROGETTO", "PDG_MODULO.PG_PROGETTO");
sqlPdgModulo.addSQLClause(FindClause.AND, "PDG_MODULO.STATO", SQLBuilder.NOT_EQUALS, Pdg_moduloBulk.STATO_AC);
List<Pdg_modulo_costiBulk> pdgModuloList = new it.cnr.jada.bulk.BulkList(pdgModuloHome.fetchAll(sqlPdgModulo));
if (pdgModuloList.size() > 0 && !(progetto.isStatoPrgApprovato() || progetto.isStatoPrgChiuso())) {
throw new ApplicationRuntimeException("Attenzione: il progetto risulta già inserito in previsione. " + "Non è possibile attibuirgli uno stato diverso da Approvato o Chiuso. Operazione non consentita!");
}
// Verifico se il PDG è chiuso. Per essere tale non deve esserci nemmeno un CDR nell'esercizio controllato
// con PDG_ESERCIZIO.STATO!='CG'
Pdg_esercizioHome pdgEsercizioHome = (Pdg_esercizioHome) getHome(userContext, Pdg_esercizioBulk.class);
SQLBuilder sqlPdgEsercizio = pdgEsercizioHome.createSQLBuilder();
sqlPdgEsercizio.addClause(FindClause.AND, "esercizio", SQLBuilder.EQUALS, annoPiano);
sqlPdgEsercizio.addClause(FindClause.AND, "stato", SQLBuilder.NOT_EQUALS, Pdg_esercizioBulk.STATO_CHIUSURA_GESTIONALE_CDR);
if (sqlPdgEsercizio.executeExistsQuery(getConnection(userContext))) {
pdgModuloList.stream().forEach(modCosti -> {
try {
Utility.createSaldoComponentSession().checkDispPianoEconomicoProgetto(userContext, modCosti, Boolean.TRUE);
} catch (Throwable e) {
throw new ApplicationRuntimeException(e);
}
});
}
} catch (Throwable e) {
throw new ApplicationRuntimeException(e);
}
});
}
} catch (Throwable e) {
throw handleException(e);
}
}
Aggregations