Skip to content

Commit

Permalink
Progetti: integrazioni
Browse files Browse the repository at this point in the history
  • Loading branch information
raffaelepagano committed Oct 18, 2018
1 parent 0d7a302 commit 8c9930d
Show file tree
Hide file tree
Showing 9 changed files with 130 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public interface SaldoComponentSession extends it.cnr.jada.ejb.GenericComponentS
it.cnr.contab.prevent00.bulk.Voce_f_saldi_cdr_lineaBulk aggiornaAccertamentiResiduiPropri(it.cnr.jada.UserContext param0, java.lang.String param1, java.lang.String param2, it.cnr.contab.config00.pdcfin.bulk.IVoceBilancioBulk param3, Integer param4, BigDecimal param5) throws ComponentException,java.rmi.RemoteException;
void aggiornaSaldiAnniSuccessivi(it.cnr.jada.UserContext param1, String param2, String param3, it.cnr.contab.config00.pdcfin.bulk.IVoceBilancioBulk param4, Integer param5, BigDecimal param6, it.cnr.contab.prevent00.bulk.Voce_f_saldi_cdr_lineaBulk param7) throws ComponentException,java.rmi.RemoteException;
Voce_f_saldi_cdr_lineaBulk aggiornaVariazioneStanziamento(UserContext userContext, String cd_cdr, String cd_linea_attivita, IVoceBilancioBulk voce, Integer esercizio_res, String tipo_residuo, BigDecimal importo, Boolean sottraiImportoDaVariazioneEsistente) throws ComponentException,java.rmi.RemoteException;
void checkDispPianoEconomicoProgetto(UserContext userContext, Pdg_modulo_costiBulk moduloCosti, boolean isModified) throws ComponentException,java.rmi.RemoteException;
void checkDispPianoEconomicoProgetto(UserContext userContext, Pdg_modulo_costiBulk moduloCosti, boolean isFromChangeStato) throws ComponentException,java.rmi.RemoteException;
void checkDispPianoEconomicoProgetto(UserContext userContext, Pdg_variazioneBulk pdgVariazione) throws ComponentException,java.rmi.RemoteException;
String getMessaggioSfondamentoPianoEconomico(UserContext userContext, Pdg_variazioneBulk pdgVariazione) throws ComponentException,java.rmi.RemoteException;
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
package it.cnr.contab.progettiric00.bp;

import java.math.BigDecimal;
import java.nio.file.DirectoryStream.Filter;
import java.rmi.RemoteException;
import java.util.Collections;
import java.util.Optional;
import java.util.stream.Stream;

import it.cnr.contab.prevent01.bulk.Pdg_moduloBulk;
import it.cnr.contab.progettiric00.core.bulk.Ass_progetto_piaeco_voceBulk;
import it.cnr.contab.progettiric00.core.bulk.ProgettoBulk;
import it.cnr.contab.progettiric00.core.bulk.Progetto_piano_economicoBulk;
import it.cnr.contab.progettiric00.tabrif.bulk.Voce_piano_economico_prgBulk;
import it.cnr.contab.util.Utility;
import it.cnr.contab.util00.bulk.storage.AllegatoGenericoBulk;
import it.cnr.jada.action.ActionContext;
import it.cnr.jada.action.BusinessProcessException;
import it.cnr.jada.bulk.BulkList;
Expand All @@ -26,6 +29,11 @@ public ProgettoPianoEconomicoCRUDController(String name, Class modelClass, Strin
public void validateForDelete(ActionContext context, OggettoBulk detail) throws ValidationException
{
if (!detail.isToBeCreated()) {
Optional<Progetto_piano_economicoBulk> opt = Optional.ofNullable(detail).filter(Progetto_piano_economicoBulk.class::isInstance)
.map(Progetto_piano_economicoBulk.class::cast);
if (opt.filter(el->el.isROProgettoPianoEconomico()).isPresent())
throw new ValidationException("Eliminazione non possibile! Il progetto per l'anno di riferimento "
+ opt.get().getEsercizio_piano() + " risulta essere stato confermato in PdgP!");
try {
Utility.createProgettoRicercaComponentSession().validaCancellazionePianoEconomicoAssociato(
context.getUserContext(),
Expand Down Expand Up @@ -58,4 +66,5 @@ public int addDetail(OggettoBulk oggettobulk) throws BusinessProcessException {
pianoEco.setFl_ctrl_disp(Boolean.TRUE);
return super.addDetail(oggettobulk);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,10 @@ public boolean isGrowable() {
public boolean isShrinkable() {
return super.isShrinkable()
&& Optional.ofNullable(getParentController().getModel())
.filter(Progetto_piano_economicoBulk.class::isInstance)
.map(Progetto_piano_economicoBulk.class::cast)
.flatMap(el->Optional.ofNullable(el.getVoce_piano_economico()))
.map(Voce_piano_economico_prgBulk::getFl_add_vocibil)
.orElse(Boolean.FALSE);
.filter(Progetto_piano_economicoBulk.class::isInstance)
.map(Progetto_piano_economicoBulk.class::cast)
.flatMap(el->Optional.ofNullable(el.getVoce_piano_economico()))
.map(Voce_piano_economico_prgBulk::getFl_add_vocibil)
.orElse(Boolean.FALSE);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,26 @@ public int addDetail(OggettoBulk oggettobulk) throws BusinessProcessException {
((Progetto_piano_economicoBulk)oggettobulk).setEsercizio_piano(((ProgettoBulk)this.getParentModel()).getEsercizio());
return super.addDetail(oggettobulk);
};

@Override
public boolean isGrowable() {
return super.isGrowable() &&
Optional.ofNullable(getModel())
.filter(Progetto_piano_economicoBulk.class::isInstance)
.map(Progetto_piano_economicoBulk.class::cast)
.map(el->!el.isROProgettoPianoEconomico())
.orElse(Boolean.FALSE);
}

@Override
public boolean isShrinkable() {
return super.isShrinkable() &&
Optional.ofNullable(getModel())
.filter(Progetto_piano_economicoBulk.class::isInstance)
.map(Progetto_piano_economicoBulk.class::cast)
.map(el->!el.isROProgettoPianoEconomico())
.orElse(Boolean.FALSE);
}
};

private SimpleDetailCRUDController crudPianoEconomicoAltriAnni = new ProgettoPianoEconomicoCRUDController( "PianoEconomicoAltriAnni", Progetto_piano_economicoBulk.class, "dettagliPianoEconomicoAltriAnni", this) {
Expand Down Expand Up @@ -409,9 +429,10 @@ public String[][] getTabs(HttpSession session) {
if (this.isFlPrgPianoEconomico() &&
((progetto.isPianoEconomicoRequired() &&
Optional.ofNullable(progetto.getOtherField()).flatMap(el->Optional.ofNullable(el.getDtInizio())).isPresent() &&
Optional.ofNullable(progetto.getOtherField()).flatMap(el->Optional.ofNullable(el.getDtFine())).isPresent())) ||
(Optional.ofNullable(this.getAnnoFromPianoEconomico()).map(el->el.compareTo(CNRUserContext.getEsercizio(HttpActionContext.getUserContext(session)))<=0)
.orElse(Boolean.FALSE)))
Optional.ofNullable(progetto.getOtherField()).flatMap(el->Optional.ofNullable(el.getDtFine())).isPresent()) ||
(progetto.isDettagliPianoEconomicoPresenti() &&
Optional.ofNullable(this.getAnnoFromPianoEconomico()).map(el->el.compareTo(CNRUserContext.getEsercizio(HttpActionContext.getUserContext(session)))<=0)
.orElse(Boolean.FALSE))))
hash.put(i++, new String[]{"tabPianoEconomico","Piano Economico","/progettiric00/progetto_piano_economico.jsp" });

if (!this.isFlInformix()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import it.cnr.contab.prevent01.bulk.Pdg_Modulo_EntrateBulk;
import it.cnr.contab.prevent01.bulk.Pdg_Modulo_EntrateHome;
import it.cnr.contab.prevent01.bulk.Pdg_moduloBulk;
import it.cnr.contab.prevent01.bulk.Pdg_moduloHome;
import it.cnr.contab.prevent01.bulk.Pdg_modulo_costiBulk;
import it.cnr.contab.prevent01.bulk.Pdg_modulo_costiHome;
import it.cnr.contab.prevent01.bulk.Pdg_modulo_speseBulk;
Expand Down Expand Up @@ -273,6 +274,14 @@ public OggettoBulk inizializzaBulkPerModifica(UserContext userContext,OggettoBul
testata.setFl_previsione(progettoPrev!=null);
testata.setFl_gestione(progettoGest!=null);

BulkList<Pdg_moduloBulk> pdgModuliList = new it.cnr.jada.bulk.BulkList(testataHome.findPdgModuliAssociati(userContext, testata.getPg_progetto()));

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).isPresent())
testata.setPdgModuli(new BulkList(pdgModuliList.stream().filter(el->el.getEsercizio().compareTo(annoFrom.intValue())>=0).collect(Collectors.toList())));
else
testata.setPdgModuli(pdgModuliList);
getHomeCache(userContext).fetchAll(userContext);
return testata;
} catch(Exception e) {
Expand Down Expand Up @@ -1433,6 +1442,7 @@ private void validaPianoEconomico(UserContext userContext, ProgettoBulk progetto
validaVociPianoEconomicoGestionale(userContext, progetto, annoFrom.intValue());
validaSaldiPianoEconomico(userContext, progetto, annoFrom.intValue());
validaTipoFinanziamento(userContext, progetto, annoFrom.intValue());
validaQuadraturaPianoEconomico(userContext, progetto, annoFrom.intValue());
};
} catch(Throwable e) {
throw handleException(e);
Expand Down Expand Up @@ -1713,6 +1723,45 @@ private void validaTipoFinanziamento(UserContext userContext, ProgettoBulk proge
}
}

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.filter(el->el.getFlAllPrevFin()).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));
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);
}
}

public SQLBuilder selectOtherField_tipoFinanziamentoByClause(UserContext userContext,ProgettoBulk progetto,TipoFinanziamentoBulk tipoFinanziamento,CompoundFindClause clauses) throws ComponentException, PersistencyException{
try {
TipoFinanziamentoHome home = (TipoFinanziamentoHome)getHome(userContext, TipoFinanziamentoBulk.class);
Expand Down Expand Up @@ -1743,7 +1792,7 @@ public SQLBuilder selectOtherField_tipoFinanziamentoByClause(UserContext userCon
Pdg_modulo_costiHome pdgModuloHome = (Pdg_modulo_costiHome)getHome(userContext, Pdg_modulo_costiBulk.class);
SQLBuilder sqlPdgModulo = pdgModuloHome.createSQLBuilder();
if (Optional.ofNullable(annoFrom).isPresent())
sqlPdgModulo.addClause(FindClause.AND, "esercizio", SQLBuilder.GREATER_EQUALS, progetto.getEsercizio());
sqlPdgModulo.addClause(FindClause.AND, "esercizio", SQLBuilder.GREATER_EQUALS, annoFrom);
sqlPdgModulo.addClause(FindClause.AND, "pg_progetto", SQLBuilder.EQUALS, progetto.getPg_progetto());

if (sqlPdgModulo.executeExistsQuery(getConnection(userContext)))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk;
import it.cnr.contab.docamm00.tabrif.bulk.DivisaBulk;
import it.cnr.contab.prevent01.bulk.Pdg_missioneBulk;
import it.cnr.contab.prevent01.bulk.Pdg_moduloBulk;
import it.cnr.contab.prevent01.bulk.Pdg_programmaBulk;
import it.cnr.contab.progettiric00.bp.TestataProgettiRicercaBP;
import it.cnr.contab.progettiric00.bp.TestataProgettiRicercaNuovoBP;
Expand Down Expand Up @@ -142,6 +143,7 @@ public class ProgettoBulk extends ProgettoBase {
private Boolean fl_gestione;
private String tipoFaseToSearch;
private Progetto_other_fieldBulk otherField;
private BulkList pdgModuli = new BulkList();

public ProgettoBulk() {
super();
Expand Down Expand Up @@ -1155,4 +1157,12 @@ public void validaDateProgetto() throws ValidationException {
" per il quale risulta già caricato un piano economico.");
});
}

public BulkList<Pdg_moduloBulk> getPdgModuli() {
return pdgModuli;
}

public void setPdgModuli(BulkList<Pdg_moduloBulk> pdgModuli) {
this.pdgModuli = pdgModuli;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import it.cnr.contab.config00.sto.bulk.DipartimentoHome;
import it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk;
import it.cnr.contab.config00.sto.bulk.Unita_organizzativa_enteBulk;
import it.cnr.contab.prevent01.bulk.Pdg_moduloBulk;
import it.cnr.contab.progettiric00.geco.bulk.Geco_area_progBulk;
import it.cnr.contab.progettiric00.geco.bulk.Geco_attivitaBulk;
import it.cnr.contab.progettiric00.geco.bulk.Geco_commessaBulk;
Expand Down Expand Up @@ -661,4 +662,10 @@ public Persistent findByPrimaryKey(UserContext userContext,Persistent persistent
return findByPrimaryKey(persistent);
}

public java.util.Collection findPdgModuliAssociati(it.cnr.jada.UserContext userContext,Integer pgProgetto) throws IntrospectionException, PersistencyException {
PersistentHome pdgModuloHome = getHomeCache().getHome(Pdg_moduloBulk.class);
SQLBuilder sql = pdgModuloHome.createSQLBuilder();
sql.addClause(FindClause.AND,"pg_progetto",SQLBuilder.EQUALS,pgProgetto);
return pdgModuloHome.fetchAll(sql);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
import java.math.BigDecimal;
import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;

import it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk;
import it.cnr.contab.prevent01.bulk.Pdg_moduloBulk;
import it.cnr.contab.progettiric00.tabrif.bulk.Voce_piano_economico_prgBulk;
import it.cnr.contab.utenze00.bp.CNRUserContext;
import it.cnr.jada.bulk.BulkList;
Expand Down Expand Up @@ -114,6 +116,7 @@ public Ass_progetto_piaeco_voceBulk removeFromVociBilancioAssociate(int index) {

public boolean isROVocePiano() {
return !Optional.ofNullable(this.getEsercizio_piano()).isPresent() ||
this.isROProgettoPianoEconomico() ||
Optional.ofNullable(this.getVociBilancioAssociate())
.map(el->!el.isEmpty())
.orElse(Boolean.TRUE);
Expand All @@ -126,6 +129,12 @@ public it.cnr.jada.util.OrderedHashtable getAnniList() {
if (this.getEsercizio_piano()!=null && list.get(this.getEsercizio_piano())==null)
list.put(this.getEsercizio_piano(), this.getEsercizio_piano());
list.remove(this.getProgetto().getEsercizio());
Optional.ofNullable(this.getProgetto())
.flatMap(el->Optional.ofNullable(el.getPdgModuli()))
.map(el->el.stream())
.orElse(Stream.empty())
.filter(el->Optional.ofNullable(el.getStato()).map(stato->!stato.equals(Pdg_moduloBulk.STATO_AC)).orElse(Boolean.FALSE))
.forEach(el->list.remove(el));
return list;
}

Expand All @@ -150,4 +159,16 @@ public java.math.BigDecimal getDispResiduaCofinanziamento() {
public java.math.BigDecimal getDispResidua() {
return this.getDispResiduaFinanziamento().add(this.getDispResiduaCofinanziamento());
}


public boolean isROProgettoPianoEconomico() {
return Optional.ofNullable(this.getProgetto())
.flatMap(el->Optional.ofNullable(el.getPdgModuli()))
.map(el->el.stream())
.orElse(Stream.empty())
.filter(el->el.getEsercizio().equals(this.getEsercizio_piano()))
.filter(el->!el.getStato().equals(Pdg_moduloBulk.STATO_AC))
.findAny().isPresent();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
inputSize="20"
maxLength="18"
inputType="TEXT"
readonlyPropertyOnEdit="ROProgettoPianoEconomico"
formatName="it.cnr.contab.util.EuroFormat"
label="Quota Finanziata" />
<fieldProperty
Expand All @@ -58,6 +59,7 @@
inputSize="20"
maxLength="18"
inputType="TEXT"
readonlyPropertyOnEdit="ROProgettoPianoEconomico"
formatName="it.cnr.contab.util.EuroFormat"
label="Quota Cofinanziata" />
<fieldProperty
Expand Down

0 comments on commit 8c9930d

Please sign in to comment.