it.cnr.contab.doccont00.comp.ObbligazioneModificaComponent Maven / Gradle / Ivy
/*
* Copyright (C) 2019 Consiglio Nazionale delle Ricerche
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
/*
* Created on Jun 23, 2006
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package it.cnr.contab.doccont00.comp;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.Enumeration;
import java.util.GregorianCalendar;
import java.util.Iterator;
import it.cnr.contab.config00.bulk.Parametri_cnrBulk;
import it.cnr.contab.config00.bulk.Parametri_cnrHome;
import it.cnr.contab.config00.latt.bulk.WorkpackageBulk;
import it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk;
import it.cnr.contab.config00.pdcfin.bulk.IVoceBilancioBulk;
import it.cnr.contab.config00.pdcfin.bulk.Voce_fBulk;
import it.cnr.contab.config00.sto.bulk.CdrBulk;
import it.cnr.contab.docamm00.docs.bulk.Documento_generico_rigaHome;
import it.cnr.contab.doccont00.core.bulk.Linea_attivitaBulk;
import it.cnr.contab.doccont00.core.bulk.ObbligazioneBulk;
import it.cnr.contab.doccont00.core.bulk.Obbligazione_mod_voceBulk;
import it.cnr.contab.doccont00.core.bulk.Obbligazione_modificaHome;
import it.cnr.contab.doccont00.core.bulk.Obbligazione_modificaBulk;
import it.cnr.contab.doccont00.core.bulk.Obbligazione_scad_voceBulk;
import it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk;
import it.cnr.contab.doccont00.ejb.ObbligazioneComponentSession;
import it.cnr.contab.doccont00.ejb.ObbligazioneResComponentSession;
import it.cnr.contab.doccont00.ejb.SaldoComponentSession;
import it.cnr.contab.doccont00.intcass.bulk.V_distinta_cass_im_man_revBulk;
import it.cnr.contab.pdg00.bulk.Pdg_variazioneBulk;
import it.cnr.contab.pdg00.bulk.Pdg_variazioneHome;
import it.cnr.contab.pdg00.ejb.CostiDipendenteComponentSession;
import it.cnr.contab.utenze00.bp.CNRUserContext;
import it.cnr.contab.util.Utility;
import it.cnr.jada.UserContext;
import it.cnr.jada.bulk.BulkList;
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.bulk.PrimaryKeyHashtable;
import it.cnr.jada.comp.ApplicationException;
import it.cnr.jada.comp.ComponentException;
import it.cnr.jada.persistency.IntrospectionException;
import it.cnr.jada.persistency.PersistencyException;
import it.cnr.jada.persistency.sql.CompoundFindClause;
import it.cnr.jada.persistency.sql.Query;
import it.cnr.jada.persistency.sql.SQLBuilder;
import it.cnr.jada.util.ejb.EJBCommonServices;
public class ObbligazioneModificaComponent extends it.cnr.jada.comp.CRUDComponent {
public OggettoBulk inizializzaBulkPerModifica(UserContext usercontext, OggettoBulk oggettobulk) throws ComponentException {
try {
oggettobulk = super.inizializzaBulkPerModifica(usercontext, oggettobulk);
if (oggettobulk instanceof Obbligazione_modificaBulk) {
Obbligazione_modificaBulk obbMod = (Obbligazione_modificaBulk)oggettobulk;
// carica i dettagli della modifica all'obbligazione
Obbligazione_modificaHome omHome = (Obbligazione_modificaHome) getHome( usercontext, Obbligazione_modificaBulk.class);
obbMod.setObbligazione_mod_voceColl( new BulkList( omHome.findObbligazione_mod_voceList( obbMod ) ));
// riempiamo le descrizioni
for (Iterator it = obbMod.getObbligazione_mod_voceColl().iterator();it.hasNext();) {
Obbligazione_mod_voceBulk obbModVoce = (Obbligazione_mod_voceBulk) it.next();
IVoceBilancioBulk voce = null;
if (((Parametri_cnrHome)getHome(usercontext, Parametri_cnrBulk.class)).isNuovoPdg(usercontext)) {
voce = new Elemento_voceBulk(
obbModVoce.getCd_voce(),
obbModVoce.getEsercizio(),
obbModVoce.getTi_appartenenza(),
obbModVoce.getTi_gestione());
voce = (Elemento_voceBulk) getHome(usercontext, Elemento_voceBulk.class).findByPrimaryKey(voce);
} else {
voce = new Voce_fBulk(
obbModVoce.getCd_voce(),
obbModVoce.getEsercizio(),
obbModVoce.getTi_appartenenza(),
obbModVoce.getTi_gestione());
voce = (Voce_fBulk) getHome(usercontext, Voce_fBulk.class).findByPrimaryKey(voce);
}
obbModVoce.setVoce(voce);
WorkpackageBulk linea =
new WorkpackageBulk(
obbModVoce.getCd_centro_responsabilita(),
obbModVoce.getCd_linea_attivita());
linea = (WorkpackageBulk) getHome(usercontext, linea).findByPrimaryKey(linea);
obbModVoce.setLinea_attivita(linea);
}
}
return oggettobulk;
} catch( Exception e ) {
throw handleException( e );
}
}
public OggettoBulk inizializzaBulkPerInserimento(UserContext userContext,OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException {
try {
Obbligazione_modificaBulk obbMod = (Obbligazione_modificaBulk)bulk;
java.sql.Timestamp tsOdierno = EJBCommonServices.getServerDate();
GregorianCalendar tsOdiernoGregorian = (GregorianCalendar) GregorianCalendar.getInstance();
tsOdiernoGregorian.setTime(tsOdierno);
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd/MM/yyyy");
if(tsOdiernoGregorian.get(GregorianCalendar.YEAR) > CNRUserContext.getEsercizio(userContext).intValue())
obbMod.setDt_modifica(new java.sql.Timestamp(sdf.parse("31/12/"+obbMod.getEsercizio().intValue()).getTime()));
else {
//Obbligazione_modificaHome testataHome = (Obbligazione_modificaHome)getHome(userContext, Obbligazione_modificaBulk.class);
obbMod.setDt_modifica(EJBCommonServices.getServerDate());
}
obbMod = inserisciModifiche(userContext, obbMod);
return super.inizializzaBulkPerInserimento(userContext,obbMod);
} catch( Exception e ) {
throw handleException( e );
}
}
private Obbligazione_modificaBulk inserisciModifiche(UserContext aUC, Obbligazione_modificaBulk bulk) throws it.cnr.jada.comp.ComponentException {
try {
Obbligazione_modificaBulk obbMod = (Obbligazione_modificaBulk)bulk;
ObbligazioneBulk obbligazione = obbMod.getObbligazione();
BigDecimal percentuale = new BigDecimal( 100);
BigDecimal totaleScad = new BigDecimal(0);
BigDecimal diffScad = new BigDecimal(0);
Obbligazione_scad_voceBulk osv;
Obbligazione_scadenzarioBulk os;
Obbligazione_scad_voceBulk key = new Obbligazione_scad_voceBulk();
PrimaryKeyHashtable prcImputazioneFinanziariaTable = getOldRipartizioneCdrVoceLinea(aUC, obbligazione);
//verifico che nella nuova Obbligazione alle linee/voci siano stati assegnati gli stessi importi
for ( Enumeration e = prcImputazioneFinanziariaTable.keys(); e.hasMoreElements(); )
{
key = (Obbligazione_scad_voceBulk)e.nextElement();
totaleScad = new BigDecimal(0);
for ( Iterator s = obbligazione.getObbligazione_scadenzarioColl().iterator(); s.hasNext(); )
{
os = (Obbligazione_scadenzarioBulk) s.next();
for ( Iterator d = os.getObbligazione_scad_voceColl().iterator(); d.hasNext(); )
{
osv = (Obbligazione_scad_voceBulk) d.next();
// totale per Cdr e per scadenza
if (key.getCd_centro_responsabilita().equals(osv.getCd_centro_responsabilita()) &&
key.getCd_linea_attivita().equals(osv.getCd_linea_attivita()) &&
key.getCd_voce().equals(osv.getCd_voce())) {
totaleScad = totaleScad.add(Utility.nvl(osv.getIm_voce()));
}
}
}
if (totaleScad.compareTo((BigDecimal) prcImputazioneFinanziariaTable.get( key ))!=0) {
Obbligazione_mod_voceBulk obbModVoce =
new Obbligazione_mod_voceBulk(
obbMod.getCd_cds(),
obbMod.getEsercizio(),
obbMod.getPg_modifica(),
key.getTi_appartenenza(),
key.getTi_gestione(),
key.getCd_voce(),
key.getCd_centro_responsabilita(),
key.getCd_linea_attivita());
IVoceBilancioBulk voce = null;
if (((Parametri_cnrHome)getHome(aUC, Parametri_cnrBulk.class)).isNuovoPdg(aUC)) {
voce = new Elemento_voceBulk(
key.getCd_voce(),
obbMod.getEsercizio(),
key.getTi_appartenenza(),
key.getTi_gestione());
voce = (Elemento_voceBulk) getHome(aUC, Elemento_voceBulk.class).findByPrimaryKey(voce);
} else {
voce = new Voce_fBulk(
key.getCd_voce(),
obbMod.getEsercizio(),
key.getTi_appartenenza(),
key.getTi_gestione());
voce = (Voce_fBulk) getHome(aUC, Voce_fBulk.class).findByPrimaryKey(voce);
}
obbModVoce.setVoce(voce);
WorkpackageBulk linea =
new WorkpackageBulk(
key.getCd_centro_responsabilita(),
key.getCd_linea_attivita());
linea = (WorkpackageBulk) getHome(aUC, linea).findByPrimaryKey(linea);
obbModVoce.setLinea_attivita(linea);
obbModVoce.setIm_modifica(totaleScad.subtract((BigDecimal) prcImputazioneFinanziariaTable.get( key )));
obbModVoce.setToBeCreated();
obbMod.addToObbligazione_mod_voceColl(obbModVoce);
}
}
return obbMod;
} catch( Exception e ) {
throw handleException( e );
}
}
private PrimaryKeyHashtable getOldRipartizioneCdrVoceLinea(UserContext userContext, ObbligazioneBulk obbligazione) throws it.cnr.jada.comp.ComponentException {
try {
ObbligazioneComponentSession obbSess = (ObbligazioneComponentSession)it.cnr.jada.util.ejb.EJBCommonServices.createEJB("CNRDOCCONT00_EJB_ObbligazioneComponentSession",ObbligazioneComponentSession.class);
return obbSess.getOldRipartizioneCdrVoceLinea(userContext,obbligazione);
} catch(Throwable e) {
throw handleException(e);
}
}
protected Query select(UserContext userContext,CompoundFindClause clauses,OggettoBulk bulk) throws ComponentException, it.cnr.jada.persistency.PersistencyException
{
SQLBuilder sql = (SQLBuilder) super.select( userContext, clauses, bulk );
sql.addClause("AND", "cd_cds", SQLBuilder.EQUALS, CNRUserContext.getCd_cds(userContext));
sql.addClause("AND", "esercizio", sql.EQUALS, CNRUserContext.getEsercizio(userContext));
sql.addOrderBy("cd_cds, esercizio, pg_modifica");
return sql;
}
public OggettoBulk creaConBulk (UserContext uc,OggettoBulk bulk) throws ComponentException
{
Obbligazione_modificaBulk obbMod = (Obbligazione_modificaBulk)bulk;
validaCampi(uc, obbMod);
return super.creaConBulk( uc, bulk );
}
private void validaCampi(UserContext uc, Obbligazione_modificaBulk obbMod) throws ComponentException {
try {
ObbligazioneBulk obbligazione = obbMod.getObbligazione();
// controlli di validazione del campo MOTIVAZIONE
Parametri_cnrBulk bulkCNR = (Parametri_cnrBulk)getHome(uc, Parametri_cnrBulk.class).findByPrimaryKey(new Parametri_cnrBulk(CNRUserContext.getEsercizio(uc)));
if (bulkCNR == null)
throw new ApplicationException("Parametri CNR non presenti per l'anno "+CNRUserContext.getEsercizio(uc));
if (bulkCNR.getFl_motivazione_su_imp() &&
obbMod.getMotivazione()==null) {
BigDecimal impObbl=obbligazione.getIm_obbligazione();
ObbligazioneBulk oldObbl = (ObbligazioneBulk)getHome(uc, ObbligazioneBulk.class).findByPrimaryKey(obbligazione);
BigDecimal oldImpObbl = oldObbl.getIm_obbligazione();
if (Utility.nvl(impObbl.subtract(oldImpObbl)).compareTo(Utility.nvl(bulkCNR.getImporto_max_imp()))>=0)
throw new ApplicationException("Attenzione: il campo MOTIVAZIONE è obbligatorio.");
}
}
catch ( Exception e )
{
throw handleException( e ) ;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy