Skip to content

Commit

Permalink
Piano Economico: blocco residui
Browse files Browse the repository at this point in the history
  • Loading branch information
raffaelepagano committed Jan 8, 2019
1 parent 1e82850 commit fa26907
Show file tree
Hide file tree
Showing 5 changed files with 165 additions and 14 deletions.
12 changes: 8 additions & 4 deletions sigla-backend/src/main/resources/expsigladb/View/V_ASSESTATO.sql
Expand Up @@ -2,7 +2,7 @@
-- DDL for View V_ASSESTATO
--------------------------------------------------------

CREATE OR REPLACE FORCE VIEW "V_ASSESTATO" ("ESERCIZIO", "ESERCIZIO_RES", "CD_CENTRO_RESPONSABILITA", "CD_LINEA_ATTIVITA", "DS_LINEA_ATTIVITA", "CD_NATURA", "TI_APPARTENENZA", "TI_GESTIONE", "CD_ELEMENTO_VOCE", "CD_VOCE", "CD_MODULO", "STANZIAMENTO_INIZIALE", "VARIAZIONI_POSITIVE", "VARIAZIONI_NEGATIVE", "VARIAZIONI_RESIDUI_PROPRI", "ASSESTATO_INIZIALE", "IMPORTO_UTILIZZATO", "IMPORTO_VINCOLI", "IMPORTO_DISPONIBILE", "VARIAZIONI_PROVVISORIE", "VARIAZIONI_DEFINITIVE", "ASSESTATO_FINALE", "IMPORTO_INI_RESIDUI_PROPRI", "IMPORTO_MANREV", "ASSESTATO_CASSA") AS
CREATE OR REPLACE FORCE VIEW "V_ASSESTATO" ("ESERCIZIO", "ESERCIZIO_RES", "CD_CENTRO_RESPONSABILITA", "CD_LINEA_ATTIVITA", "DS_LINEA_ATTIVITA", "CD_NATURA", "TI_APPARTENENZA", "TI_GESTIONE", "CD_ELEMENTO_VOCE", "CD_VOCE", "CD_MODULO", "STANZIAMENTO_INIZIALE", "VARIAZIONI_POSITIVE", "VARIAZIONI_NEGATIVE", "VARIAZIONI_RESIDUI_PROPRI", "ASSESTATO_INIZIALE", "IMPORTO_UTILIZZATO", "IMPORTO_VINCOLI", "IMPORTO_DISPONIBILE", "VARIAZIONI_PROVVISORIE", "VARIAZIONI_DEFINITIVE", "ASSESTATO_FINALE", "IMPORTO_INI_RESIDUI_PROPRI", "IMPORTO_MANREV", "ASSESTATO_CASSA", "PROGETTO_DT_INIZIO", "PROGETTO_DT_FINE", "PROGETTO_DT_PROROGA") AS
SELECT
--
-- Date: 09/11/2006
Expand Down Expand Up @@ -52,7 +52,9 @@
- x.importo_utilizzato
+ x.variazioni_provvisorie
+ x.variazioni_definitive assestato_finale,
x.importo_ini_residui_propri, x.importo_manrev, x.assestato_cassa
x.importo_ini_residui_propri, x.importo_manrev, x.assestato_cassa,
otherField.dt_inizio progetto_dt_inizio,
otherField.dt_fine progetto_dt_fine, otherField.dt_proroga progetto_dt_proroga
FROM (SELECT a.esercizio, a.esercizio_res, a.cd_centro_responsabilita,
a.cd_linea_attivita, a.ti_appartenenza, a.ti_gestione,
a.cd_elemento_voce, a.cd_voce,
Expand Down Expand Up @@ -324,10 +326,12 @@
a.cd_elemento_voce,
a.cd_voce) x,
v_linea_attivita_valida,
progetto_gest progetto
progetto_gest progetto,
progetto_other_field otherField
WHERE x.esercizio = v_linea_attivita_valida.esercizio
AND x.cd_centro_responsabilita =
v_linea_attivita_valida.cd_centro_responsabilita
AND x.cd_linea_attivita = v_linea_attivita_valida.cd_linea_attivita
AND v_linea_attivita_valida.esercizio = progetto.esercizio(+)
AND v_linea_attivita_valida.pg_progetto = progetto.pg_progetto(+) ;
AND v_linea_attivita_valida.pg_progetto = progetto.pg_progetto(+)
AND progetto.pg_progetto = otherField.pg_progetto(+);
Expand Up @@ -2,8 +2,11 @@

import java.math.BigDecimal;
import java.rmi.RemoteException;
import java.util.Calendar;
import java.util.Collection;
import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.Optional;

import it.cnr.contab.anagraf00.core.bulk.AnagraficoBulk;
import it.cnr.contab.anagraf00.core.bulk.TerzoBulk;
Expand All @@ -30,6 +33,7 @@
import it.cnr.contab.doccont00.ejb.ObbligazioneComponentSession;
import it.cnr.contab.incarichi00.bulk.Incarichi_repertorioBulk;
import it.cnr.contab.prevent00.bulk.V_assestatoBulk;
import it.cnr.contab.utenze00.bp.CNRUserContext;
import it.cnr.contab.utenze00.bulk.CNRUserInfo;
import it.cnr.contab.util.Utility;
import it.cnr.jada.action.ActionContext;
Expand All @@ -42,6 +46,9 @@
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.bulk.ValidationException;
import it.cnr.jada.comp.ApplicationException;
import it.cnr.jada.persistency.sql.FindClause;
import it.cnr.jada.persistency.sql.SQLBuilder;
import it.cnr.jada.util.DateUtils;
import it.cnr.jada.util.action.BulkBP;
import it.cnr.jada.util.action.CRUDBP;
import it.cnr.jada.util.action.OptionBP;
Expand Down Expand Up @@ -991,8 +998,44 @@ public Forward doRiportaSelezioneVoci(ActionContext context) throws java.rmi.Re
Collection capitoliIniziali = ((ObbligazioneBulk)bp.getModel()).getCapitoliDiSpesaCdsSelezionatiColl();

java.util.List vociList = (java.util.List)caller.getParameter("selectedElements");
if (vociList!=null && !vociList.isEmpty())
{
if (vociList!=null && !vociList.isEmpty()) {
if (Utility.createParametriEnteComponentSession().isProgettoPianoEconomicoEnabled(context.getUserContext(), CNRUserContext.getEsercizio(context.getUserContext()))) {
for ( Iterator s = vociList.iterator(); s.hasNext(); ) {
V_assestatoBulk voceSel = (V_assestatoBulk) s.next();
if (Optional.ofNullable(voceSel.getProgetto_dt_inizio())
.map(el->{
Calendar gc = GregorianCalendar.getInstance();
gc.setTime(el);
return gc;
})
.map(el->el.get(Calendar.YEAR)>CNRUserContext.getEsercizio(context.getUserContext()))
.orElse(Boolean.FALSE)) {
bp.setMessage("Attenzione! GAE "+voceSel.getCd_linea_attivita()+" non selezionabile. "
+ "La data inizio ("+new java.text.SimpleDateFormat("dd/MM/yyyy").format(voceSel.getProgetto_dt_inizio())
+ ") del progetto "+voceSel.getCd_modulo()+" associato è successiva "
+ "rispetto all'anno contabile di scrivania. GAE non selezionabile.");
return context.findDefaultForward();
}
if (Optional.ofNullable(
Optional.ofNullable(voceSel.getProgetto_dt_proroga()).orElse(voceSel.getProgetto_dt_fine()))
.map(el->{
Calendar gc = GregorianCalendar.getInstance();
gc.setTime(el);
return gc;
})
.map(el->el.get(Calendar.YEAR)<CNRUserContext.getEsercizio(context.getUserContext()))
.orElse(Boolean.FALSE)) {
bp.setMessage("Attenzione! GAE "+voceSel.getCd_linea_attivita()+" non selezionabile. "
+ "La data fine/proroga ("
+ new java.text.SimpleDateFormat("dd/MM/yyyy")
.format(Optional.ofNullable(voceSel.getProgetto_dt_proroga()).orElse(voceSel.getProgetto_dt_fine()))
+ ") del progetto "+voceSel.getCd_modulo()+" associato è precedente "
+ "rispetto all'anno contabile di scrivania.");
return context.findDefaultForward();
}
}
}

bp.setVociSelezionate(vociList);
if (bp.getVociSelezionate().get(0) instanceof V_assestatoBulk) {
BigDecimal totaleSel = new BigDecimal( 0 );
Expand Down
Expand Up @@ -85,6 +85,8 @@
import it.cnr.contab.prevent00.bulk.V_assestatoBulk;
import it.cnr.contab.prevent00.bulk.Voce_f_saldi_cdr_lineaBulk;
import it.cnr.contab.prevent00.bulk.Voce_f_saldi_cmpBulk;
import it.cnr.contab.progettiric00.core.bulk.ProgettoBulk;
import it.cnr.contab.progettiric00.core.bulk.Progetto_other_fieldBulk;
import it.cnr.contab.utenze00.bp.CNRUserContext;
import it.cnr.contab.utenze00.bulk.UtenteBulk;
import it.cnr.contab.util.Utility;
Expand Down Expand Up @@ -118,13 +120,16 @@
import java.sql.SQLException;
import java.sql.Timestamp;
import java.sql.Types;
import java.util.Calendar;
import java.util.Enumeration;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Vector;

import javax.ejb.EJBException;
Expand Down Expand Up @@ -1653,6 +1658,55 @@ private void validaCdrLineaVoce(UserContext userContext, ObbligazioneBulk obblig
new it.cnr.contab.util.EuroFormat().format(totaleResidui) + ").");
}
}

if (Utility.createParametriEnteComponentSession().isProgettoPianoEconomicoEnabled(userContext, CNRUserContext.getEsercizio(userContext))) {
BulkHome lattHome = getHome(userContext, WorkpackageBulk.class, "V_LINEA_ATTIVITA_VALIDA");
SQLBuilder sql = lattHome.createSQLBuilder();

sql.addSQLClause(FindClause.AND,"V_LINEA_ATTIVITA_VALIDA.ESERCIZIO",SQLBuilder.EQUALS,CNRUserContext.getEsercizio(userContext));
sql.addSQLClause(FindClause.AND,"V_LINEA_ATTIVITA_VALIDA.CD_CENTRO_RESPONSABILITA",SQLBuilder.EQUALS,cdr);
sql.addSQLClause(FindClause.AND,"V_LINEA_ATTIVITA_VALIDA.CD_LINEA_ATTIVITA",SQLBuilder.EQUALS,latt);

List<WorkpackageBulk> list = lattHome.fetchAll(sql);
if (!list.isEmpty()) {
if (list.size()>1)
throw new ApplicationException("Errore in fase di ricerca linea_attivita.");
WorkpackageBulk linea = list.get(0);
ProgettoBulk progetto = (ProgettoBulk)getHome(userContext, ProgettoBulk.class).findByPrimaryKey(userContext, linea.getProgetto());
Progetto_other_fieldBulk other = (Progetto_other_fieldBulk)getHome(userContext, Progetto_other_fieldBulk.class).findByPrimaryKey(new Progetto_other_fieldBulk(linea.getPg_progetto()));
if (Optional.ofNullable(other).isPresent()) {
if (Optional.ofNullable(other.getDtInizio())
.map(el->{
Calendar gc = GregorianCalendar.getInstance();
gc.setTime(el);
return gc;
})
.map(el->el.get(Calendar.YEAR)>CNRUserContext.getEsercizio(userContext))
.orElse(Boolean.FALSE)) {
throw new ApplicationException("Attenzione! GAE "+latt+" non selezionabile. "
+ "La data inizio ("+new java.text.SimpleDateFormat("dd/MM/yyyy").format(other.getDtInizio())
+ ") del progetto "+progetto.getCd_progetto()+" associato è successiva "
+ "rispetto all'anno contabile di scrivania.");
}
if (Optional.ofNullable(
Optional.ofNullable(other.getDtProroga()).orElse(other.getDtFine()))
.map(el->{
Calendar gc = GregorianCalendar.getInstance();
gc.setTime(el);
return gc;
})
.map(el->el.get(Calendar.YEAR)<CNRUserContext.getEsercizio(userContext))
.orElse(Boolean.FALSE)) {
throw new ApplicationException("Attenzione! GAE "+latt+" non selezionabile. "
+ "La data fine/proroga ("
+ new java.text.SimpleDateFormat("dd/MM/yyyy").format(Optional.ofNullable(other.getDtProroga())
.orElse(other.getDtFine()))
+ ") del progetto "+progetto.getCd_progetto()+" associato è precedente "
+ "rispetto all'anno contabile di scrivania.");
}
}
}
}
} catch ( Exception e )
{
throw handleException( e );
Expand Down Expand Up @@ -5436,17 +5490,17 @@ private void confirmObbligazioneModTemporanea(
public SQLBuilder selectAssestatoSpeseByClause (UserContext userContext, ObbligazioneBulk obbligazione, V_assestatoBulk assestato, CompoundFindClause clause) throws ComponentException, PersistencyException{
SQLBuilder sql = getHome(userContext, V_assestatoBulk.class).createSQLBuilder();
sql.addClause( clause );
sql.addClause("AND", "esercizio", SQLBuilder.EQUALS, CNRUserContext.getEsercizio(userContext));
sql.addClause("AND", "esercizio_res", SQLBuilder.EQUALS, obbligazione.getEsercizio_originale());
sql.addClause("AND", "ti_gestione", SQLBuilder.EQUALS, CostantiTi_gestione.TI_GESTIONE_SPESE);
sql.addClause("AND", "ti_appartenenza", SQLBuilder.NOT_EQUALS, "C");
sql.addClause("AND", "cd_elemento_voce", SQLBuilder.EQUALS, obbligazione.getCd_elemento_voce());
sql.addClause(FindClause.AND, "esercizio", SQLBuilder.EQUALS, CNRUserContext.getEsercizio(userContext));
sql.addClause(FindClause.AND, "esercizio_res", SQLBuilder.EQUALS, obbligazione.getEsercizio_originale());
sql.addClause(FindClause.AND, "ti_gestione", SQLBuilder.EQUALS, CostantiTi_gestione.TI_GESTIONE_SPESE);
sql.addClause(FindClause.AND, "ti_appartenenza", SQLBuilder.NOT_EQUALS, "C");
sql.addClause(FindClause.AND, "cd_elemento_voce", SQLBuilder.EQUALS, obbligazione.getCd_elemento_voce());
if (obbligazione.getCd_unita_organizzativa() != null){
BulkHome bulkHome = getHome(userContext, V_struttura_organizzativaBulk.class);
SQLBuilder sqlStruttura = bulkHome.createSQLBuilder();
sqlStruttura.addSQLClause("AND", "ESERCIZIO", SQLBuilder.EQUALS, CNRUserContext.getEsercizio(userContext));
sqlStruttura.addSQLClause("AND", "CD_UNITA_ORGANIZZATIVA", SQLBuilder.EQUALS, obbligazione.getCd_unita_organizzativa());
sqlStruttura.addSQLClause("AND", "CD_CENTRO_RESPONSABILITA", SQLBuilder.ISNOTNULL, true);
sqlStruttura.addSQLClause(FindClause.AND, "ESERCIZIO", SQLBuilder.EQUALS, CNRUserContext.getEsercizio(userContext));
sqlStruttura.addSQLClause(FindClause.AND, "CD_UNITA_ORGANIZZATIVA", SQLBuilder.EQUALS, obbligazione.getCd_unita_organizzativa());
sqlStruttura.addSQLClause(FindClause.AND, "CD_CENTRO_RESPONSABILITA", SQLBuilder.ISNOTNULL, true);
List<V_struttura_organizzativaBulk> strutture = bulkHome.fetchAll(sqlStruttura);
sql.openParenthesis(FindClause.AND);
for (V_struttura_organizzativaBulk v_struttura_organizzativaBulk : strutture) {
Expand Down
Expand Up @@ -4,6 +4,8 @@
*/
package it.cnr.contab.prevent00.bulk;

import java.sql.Timestamp;

import it.cnr.contab.util.Utility;
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.persistency.KeyedPersistent;
Expand Down Expand Up @@ -93,6 +95,12 @@ public V_assestatoBulk(java.lang.Integer esercizio, java.lang.Integer esercizio_
// IMPORTO_VINCOLI DECIMAL(22,0)
private java.math.BigDecimal importo_vincoli;

protected Timestamp progetto_dt_inizio;

protected Timestamp progetto_dt_fine;

protected Timestamp progetto_dt_proroga;

// DB_IMP_UTILIZZATO DECIMAL(22,0)
// utilizzata per memorizzare il valore iniziale dell'importo dell'oggetto
// che risulta già sottratto alla disponibilità mostrata
Expand Down Expand Up @@ -321,4 +329,22 @@ public java.math.BigDecimal getImporto_vincoli() {
public void setImporto_vincoli(java.math.BigDecimal importo_vincoli) {
this.importo_vincoli = importo_vincoli;
}
public Timestamp getProgetto_dt_inizio() {
return progetto_dt_inizio;
}
public void setProgetto_dt_inizio(Timestamp progetto_dt_inizio) {
this.progetto_dt_inizio = progetto_dt_inizio;
}
public Timestamp getProgetto_dt_fine() {
return progetto_dt_fine;
}
public void setProgetto_dt_fine(Timestamp progetto_dt_fine) {
this.progetto_dt_fine = progetto_dt_fine;
}
public Timestamp getProgetto_dt_proroga() {
return progetto_dt_proroga;
}
public void setProgetto_dt_proroga(Timestamp progetto_dt_proroga) {
this.progetto_dt_proroga = progetto_dt_proroga;
}
}
Expand Up @@ -142,6 +142,24 @@
sqlTypeName="DECIMAL"
columnSize="22"
nullable="true" />
<columnMapping
columnName="PROGETTO_DT_INIZIO"
propertyName="progetto_dt_inizio"
sqlTypeName="TIMESTAMP"
columnSize="7"
nullable="true" />
<columnMapping
columnName="PROGETTO_DT_FINE"
propertyName="progetto_dt_fine"
sqlTypeName="TIMESTAMP"
columnSize="7"
nullable="true" />
<columnMapping
columnName="PROGETTO_DT_PROROGA"
propertyName="progetto_dt_proroga"
sqlTypeName="TIMESTAMP"
columnSize="7"
nullable="true" />
</defaultColumnMap>
<persistentProperty
name="esercizio"
Expand Down Expand Up @@ -194,4 +212,10 @@
name="assestato_finale" />
<persistentProperty
name="importo_vincoli" />
<persistentProperty
name="progetto_dt_inizio" />
<persistentProperty
name="progetto_dt_fine" />
<persistentProperty
name="progetto_dt_proroga" />
</SQLPersistentInfo>

0 comments on commit fa26907

Please sign in to comment.