Skip to content

Commit

Permalink
Aggiornamento progetti
Browse files Browse the repository at this point in the history
  • Loading branch information
raffaelepagano committed Oct 2, 2018
1 parent f5afcf7 commit 755fb28
Show file tree
Hide file tree
Showing 9 changed files with 140 additions and 10 deletions.
Expand Up @@ -3,13 +3,16 @@
import java.math.BigDecimal;
import java.rmi.RemoteException;
import java.util.Optional;
import java.util.stream.Stream;

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.jada.action.ActionContext;
import it.cnr.jada.action.BusinessProcessException;
import it.cnr.jada.bulk.BulkList;
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.bulk.ValidationException;
import it.cnr.jada.comp.ComponentException;
Expand All @@ -36,6 +39,18 @@ public void validateForDelete(ActionContext context, OggettoBulk detail) throws
}
}

@Override
public OggettoBulk removeDetail(OggettoBulk oggettobulk, int i) {
Progetto_piano_economicoBulk pianoEco = (Progetto_piano_economicoBulk)oggettobulk;
BulkList<Ass_progetto_piaeco_voceBulk> vociToBeDelete = new BulkList<Ass_progetto_piaeco_voceBulk>(pianoEco.getVociBilancioAssociate());
Optional.ofNullable(vociToBeDelete).map(el->el.stream()).orElse(Stream.empty())
.forEach(e->{
e.setToBeDeleted();
pianoEco.removeFromVociBilancioAssociate(pianoEco.getVociBilancioAssociate().indexOf(e));
});
return super.removeDetail(oggettobulk, i);
}

@Override
public int addDetail(OggettoBulk oggettobulk) throws BusinessProcessException {
Progetto_piano_economicoBulk pianoEco = (Progetto_piano_economicoBulk)oggettobulk;
Expand Down
@@ -1,9 +1,11 @@
package it.cnr.contab.progettiric00.bp;

import java.rmi.RemoteException;
import java.util.Optional;

import it.cnr.contab.progettiric00.core.bulk.Ass_progetto_piaeco_voceBulk;
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.jada.action.ActionContext;
import it.cnr.jada.bulk.OggettoBulk;
Expand All @@ -20,8 +22,8 @@ public void validateForDelete(ActionContext context, OggettoBulk detail) throws
{
Progetto_piano_economicoBulk pianoEco = (Progetto_piano_economicoBulk)getParentModel();
Ass_progetto_piaeco_voceBulk assVocePiaeco = (Ass_progetto_piaeco_voceBulk)detail;
if (assVocePiaeco.getProgetto_piano_economico().getVoce_piano_economico().getFl_link_vocibil_associate()) {
if (assVocePiaeco.getElemento_voce().getCd_voce_piano()!=null)
if (Optional.ofNullable(pianoEco.getVoce_piano_economico()).map(Voce_piano_economico_prgBulk::getFl_link_vocibil_associate).orElse(Boolean.FALSE)) {
if (Optional.ofNullable(assVocePiaeco.getElemento_voce()).flatMap(el->Optional.ofNullable(el.getCd_voce_piano())).isPresent())
throw new ValidationException("Scollegamento non possibile! La voce di bilancio "+assVocePiaeco.getElemento_voce().getCd_elemento_voce()+" del "+assVocePiaeco.getElemento_voce().getEsercizio()+" deve essere collegata obbligatoriamente alla voce del piano economico!");
}

Expand All @@ -38,4 +40,26 @@ public void validateForDelete(ActionContext context, OggettoBulk detail) throws
}
}
}

@Override
public boolean isGrowable() {
return super.isGrowable()
&& 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);
}

@Override
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);
}
}
Expand Up @@ -59,6 +59,7 @@ public void validateForDelete(ActionContext context, OggettoBulk detail)
};
private SimpleDetailCRUDController crudDettagliFinanziatori = new SimpleDetailCRUDController( "DettagliFinanziatori", Progetto_finanziatoreBulk.class, "dettagliFinanziatori", this);
private SimpleDetailCRUDController crudDettagliPartner_esterni = new SimpleDetailCRUDController( "DettagliPartner_esterni", Progetto_partner_esternoBulk.class, "dettagliPartner_esterni", this);

private SimpleDetailCRUDController crudPianoEconomicoTotale = new ProgettoPianoEconomicoCRUDController( "PianoEconomicoTotale", Progetto_piano_economicoBulk.class, "dettagliPianoEconomicoTotale", this){
public int addDetail(OggettoBulk oggettobulk) throws BusinessProcessException {
((Progetto_piano_economicoBulk)oggettobulk).setEsercizio_piano(Integer.valueOf(0));
Expand All @@ -81,6 +82,8 @@ protected void validate(ActionContext actioncontext, OggettoBulk oggettobulk) th
};
};

private SimpleDetailCRUDController pianoEconomicoSummary = new SimpleDetailCRUDController( "PianoEconomicoSummary", Progetto_piano_economicoBulk.class, "pianoEconomicoSummary", this);

private SimpleDetailCRUDController crudPianoEconomicoVoceBilancioAnnoCorrente = new ProgettoPianoEconomicoVoceBilancioCRUDController( "PianoEconomicoVoceBilancioAnnoCorrente", Ass_progetto_piaeco_voceBulk.class, "vociBilancioAssociate", crudPianoEconomicoAnnoCorrente);
private SimpleDetailCRUDController crudPianoEconomicoVoceBilancioAltriAnni = new ProgettoPianoEconomicoVoceBilancioCRUDController( "PianoEconomicoVoceBilancioAltriAnni", Ass_progetto_piaeco_voceBulk.class, "vociBilancioAssociate", crudPianoEconomicoAltriAnni);
/**
Expand Down Expand Up @@ -140,7 +143,7 @@ public final it.cnr.jada.util.action.SimpleDetailCRUDController getCrudDettagliP

protected void resetTabs(it.cnr.jada.action.ActionContext context) {
setTab("tab","tabTestata");
setTab("tabProgettoPianoEconomico","tabProgettoPianoEconomicoTotale");
setTab("tabProgettoPianoEconomico","tabProgettoPianoEconomicoSummary");
}
/**
* E' stata generata la richiesta di cercare il Progetto che sarà nodo padre del Progetto
Expand Down Expand Up @@ -416,7 +419,7 @@ public String[][] getTabsPianoEconomico() {
TreeMap<Integer, String[]> hash = new TreeMap<Integer, String[]>();
int i=0;

hash.put(i++, new String[]{ "tabProgettoPianoEconomicoTotale","Totali","/progettiric00/progetto_piano_economico_totale.jsp" });
hash.put(i++, new String[]{ "tabProgettoPianoEconomicoSummary","Totali","/progettiric00/progetto_piano_economico_summary.jsp" });

ProgettoBulk progetto = (ProgettoBulk)this.getModel();

Expand All @@ -431,7 +434,8 @@ public String[][] getTabsPianoEconomico() {
if (existAnnoCorrente)
hash.put(i++, new String[]{ "tabProgettoPianoEconomicoAnnoCorrente","Anno "+progetto.getEsercizio(),"/progettiric00/progetto_piano_economico_anno_corrente.jsp" });

hash.put(i++, new String[]{ "tabProgettoPianoEconomicoAltriAnni","Altri Anni","/progettiric00/progetto_piano_economico_altri_anni.jsp" });
if (!progetto.getAnnoInizioOf().equals(progetto.getEsercizio()) || !progetto.getAnnoFineOf().equals(progetto.getEsercizio()))
hash.put(i++, new String[]{ "tabProgettoPianoEconomicoAltriAnni","Altri Anni","/progettiric00/progetto_piano_economico_altri_anni.jsp" });

String[][] tabs = new String[i][3];
for (int j = 0; j < i; j++) {
Expand Down Expand Up @@ -523,4 +527,8 @@ public void caricaVociPianoEconomicoAssociate(ActionContext context, Progetto_pi
throw handleException(e);
}
}

public SimpleDetailCRUDController getPianoEconomicoSummary() {
return pianoEconomicoSummary;
}
}
Expand Up @@ -243,6 +243,7 @@ public OggettoBulk inizializzaBulkPerModifica(UserContext userContext,OggettoBul
testata.setSpeseEsercizio(new it.cnr.jada.bulk.BulkList(testataHome.findDettagliSpese(userContext,testata)));

List<Progetto_piano_economicoBulk> progettoPiano = new it.cnr.jada.bulk.BulkList(testataHome.findDettagliPianoEconomico(userContext,testata));
progettoPiano.stream().forEach(el->el.setProgetto(testata));
testata.setDettagliPianoEconomicoTotale(new it.cnr.jada.bulk.BulkList(progettoPiano.stream().filter(e->e.getEsercizio_piano().equals(Integer.valueOf(0))).collect(Collectors.toList())));
testata.setDettagliPianoEconomicoAnnoCorrente(new it.cnr.jada.bulk.BulkList(progettoPiano.stream().filter(e->e.getEsercizio_piano().equals(testata.getEsercizio())).collect(Collectors.toList())));
testata.setDettagliPianoEconomicoAltriAnni(new it.cnr.jada.bulk.BulkList(progettoPiano.stream().filter(e->!e.getEsercizio_piano().equals(Integer.valueOf(0)) && !e.getEsercizio_piano().equals(testata.getEsercizio())).collect(Collectors.toList())));
Expand Down Expand Up @@ -1257,7 +1258,7 @@ public SQLBuilder selectVoce_piano_economicoByClause(UserContext userContext, Pr
if (!tipoFin.getFlAssCatVociAltro())
sql.addClause(FindClause.OR, "tipologia", SQLBuilder.NOT_EQUALS, Voce_piano_economico_prgBulk.PERSONALE_OTHER);
sql.closeParenthesis();
}
}
});

sql.addClause(clauses);
Expand Down
@@ -1,11 +1,13 @@
package it.cnr.contab.progettiric00.core.bulk;

import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Dictionary;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;

import it.cnr.contab.anagraf00.core.bulk.TerzoBulk;
import it.cnr.contab.config00.bulk.Parametri_cdsBulk;
Expand All @@ -18,6 +20,7 @@
import it.cnr.contab.progettiric00.bp.TestataProgettiRicercaBP;
import it.cnr.contab.progettiric00.bp.TestataProgettiRicercaNuovoBP;
import it.cnr.contab.progettiric00.tabrif.bulk.Tipo_progettoBulk;
import it.cnr.contab.progettiric00.tabrif.bulk.Voce_piano_economico_prgBulk;
import it.cnr.jada.bulk.BulkList;
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.util.DateUtils;
Expand Down Expand Up @@ -1011,4 +1014,34 @@ public boolean isDettagliPianoEconomicoPresenti() {
!getDettagliPianoEconomicoTotale().isEmpty();
}

public BulkList<Progetto_piano_economicoBulk> getPianoEconomicoSummary() {
BulkList<Progetto_piano_economicoBulk> items = new BulkList<Progetto_piano_economicoBulk>();
items.addAll(getDettagliPianoEconomicoTotale());
items.addAll(getDettagliPianoEconomicoAnnoCorrente());
items.addAll(getDettagliPianoEconomicoAltriAnni());

Map<String, List<Progetto_piano_economicoBulk>> resultByVoce =
items.stream()
.filter(el->el.getVoce_piano_economico()!=null)
.filter(el->el.getVoce_piano_economico().getCd_unita_organizzativa()!=null)
.filter(el->el.getVoce_piano_economico().getCd_voce_piano()!=null)
.collect(Collectors.groupingBy(x->{
return x.getCd_unita_organizzativa().concat(x.getCd_voce_piano());
}));

return new BulkList<Progetto_piano_economicoBulk>(resultByVoce.keySet().stream()
.map(vocePiano->{
Progetto_piano_economicoBulk bulk = new Progetto_piano_economicoBulk();
bulk.setVoce_piano_economico(resultByVoce.get(vocePiano).stream().findFirst().get().getVoce_piano_economico());
bulk.setIm_spesa_finanziato(resultByVoce.get(vocePiano).stream().map(el->Optional.ofNullable(el.getIm_spesa_finanziato()).orElse(BigDecimal.ZERO)).reduce((x, y)->x.add(y)).orElse(BigDecimal.ZERO));
bulk.setIm_spesa_cofinanziato(resultByVoce.get(vocePiano).stream().map(el->Optional.ofNullable(el.getIm_spesa_cofinanziato()).orElse(BigDecimal.ZERO)).reduce((x, y)->x.add(y)).orElse(BigDecimal.ZERO));
return bulk;
})
.collect(Collectors.toList()));
}

public boolean isROdatiOtherField() {
return this.isDettagliPianoEconomicoPresenti();
}

}
@@ -1,11 +1,15 @@
package it.cnr.contab.progettiric00.core.bulk;

import java.math.BigDecimal;
import java.util.List;
import java.util.Optional;

import it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk;
import it.cnr.contab.progettiric00.tabrif.bulk.Voce_piano_economico_prgBulk;
import it.cnr.contab.utenze00.bp.CNRUserContext;
import it.cnr.jada.bulk.BulkList;
import it.cnr.jada.util.OrderedHashtable;
import it.cnr.jada.util.action.BulkListAction;

public class Progetto_piano_economicoBulk extends Progetto_piano_economicoBase {
private Voce_piano_economico_prgBulk voce_piano_economico;
Expand Down Expand Up @@ -85,7 +89,7 @@ public java.math.BigDecimal getImTotaleSpesa() {
.add(Optional.ofNullable(getIm_spesa_cofinanziato()).orElse(BigDecimal.ZERO));
}

public BulkList getVociBilancioAssociate() {
public BulkList<Ass_progetto_piaeco_voceBulk> getVociBilancioAssociate() {
return vociBilancioAssociate;
}

Expand All @@ -108,4 +112,25 @@ public Ass_progetto_piaeco_voceBulk removeFromVociBilancioAssociate(int index) {
return dett;
}

}
public boolean isROVocePiano() {
return !Optional.ofNullable(this.getEsercizio_piano()).isPresent() ||
Optional.ofNullable(this.getVociBilancioAssociate())
.map(el->!el.isEmpty())
.orElse(Boolean.TRUE);
}

public it.cnr.jada.util.OrderedHashtable getAnniList() {
OrderedHashtable list = new OrderedHashtable();
for (int i=this.getProgetto().getAnnoFineOf().intValue();i>=this.getProgetto().getAnnoInizioOf();i--)
list.put(new Integer(i), new Integer(i));
if (this.getEsercizio_piano()!=null && list.get(this.getEsercizio_piano())==null)
list.put(this.getEsercizio_piano(), this.getEsercizio_piano());
list.remove(this.getProgetto().getEsercizio());
return list;
}

public boolean isROEsercizio_piano() {
return Optional.ofNullable(this.getVoce_piano_economico()).isPresent();
}

}
Expand Up @@ -696,20 +696,23 @@
label="Tipo Finanziamento"
inputType="SEARCHTOOL"
formName="searchtool"
readonlyProperty="ROdatiOtherField"
enabledOnSearch="true" />
<fieldProperty
name="dtInizioOf"
property="otherField.dtInizio"
inputType="TEXT"
enabledOnSearch="true"
formatName="date_short"
readonlyProperty="ROdatiOtherField"
label="Data Inizio" />
<fieldProperty
name="dtFineOf"
property="otherField.dtFine"
inputType="TEXT"
enabledOnSearch="true"
formatName="date_short"
readonlyProperty="ROdatiOtherField"
label="Data Fine" />
<fieldProperty
name="dtProrogaOf"
Expand Down
Expand Up @@ -8,6 +8,7 @@
property="voce_piano_economico"
inputType="SEARCHTOOL"
formName="searchtool"
readonlyProperty = "ROVocePiano"
label="Voce del piano economico" />
<fieldProperty
name="cd_voce_piano"
Expand All @@ -26,9 +27,14 @@
<fieldProperty
name="esercizio_piano"
property="esercizio_piano"
inputType="TEXT"
optionsProperty="anniList"
readonlyPropertyOnEdit="ROEsercizio_piano"
command="doDefault"
inputType="SELECT"
inputSize="4"
maxLength="4"
enabledOnSearch="true"
nullable="false"
label="Esercizio" />
<fieldProperty
name="im_entrata"
Expand Down
@@ -0,0 +1,15 @@
<%@ page pageEncoding="UTF-8"
import="it.cnr.jada.action.*,
it.cnr.jada.bulk.*,
it.cnr.jada.util.action.*,
it.cnr.jada.util.jsp.*,
it.cnr.contab.progettiric00.bp.*,
it.cnr.contab.progettiric00.core.bulk.*"
%>

<%
TestataProgettiRicercaBP bp = (TestataProgettiRicercaBP)BusinessProcess.getBusinessProcess(request);
SimpleDetailCRUDController controller = bp.getPianoEconomicoSummary();
%>

<% controller.writeHTMLTable(pageContext,"piano_economico1",false,false,false,"100%","100px"); %>

0 comments on commit 755fb28

Please sign in to comment.