it.cnr.contab.doccont00.bp.CRUDVirtualObbligazioneBP 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 .
*/
package it.cnr.contab.doccont00.bp;
import java.rmi.RemoteException;
import java.sql.Timestamp;
import java.util.Arrays;
import java.util.Optional;
import java.util.stream.Collectors;
import it.cnr.contab.chiusura00.ejb.RicercaDocContComponentSession;
import it.cnr.contab.config00.esercizio.bulk.EsercizioBulk;
import it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk;
import it.cnr.contab.doccont00.comp.DocumentoContabileComponentSession;
import it.cnr.contab.doccont00.core.bulk.AllegatoObbligazioneBulk;
import it.cnr.contab.doccont00.core.bulk.IDefferUpdateSaldi;
import it.cnr.contab.doccont00.core.bulk.IDocumentoContabileBulk;
import it.cnr.contab.doccont00.core.bulk.ObbligazioneBulk;
import it.cnr.contab.doccont00.core.bulk.ObbligazioneResBulk;
import it.cnr.contab.doccont00.core.bulk.Obbligazione_modificaBulk;
import it.cnr.contab.doccont00.ejb.ObbligazioneAbstractComponentSession;
import it.cnr.contab.doccont00.ejb.ObbligazioneComponentSession;
import it.cnr.contab.service.SpringUtil;
import it.cnr.contab.spring.service.StorePath;
import it.cnr.si.spring.storage.StorageService;
import it.cnr.contab.utenze00.bp.CNRUserContext;
import it.cnr.contab.util.Utility;
import it.cnr.contab.util00.bp.AllegatiCRUDBP;
import it.cnr.jada.action.ActionContext;
import it.cnr.jada.action.BusinessProcess;
import it.cnr.jada.action.BusinessProcessException;
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.bulk.ValidationException;
import it.cnr.jada.comp.ComponentException;
import it.cnr.jada.ejb.CRUDComponentSession;
import it.cnr.jada.util.jsp.Button;
public abstract class CRUDVirtualObbligazioneBP
extends AllegatiCRUDBP
implements IDocumentoContabileBP {
private boolean deleting = false;
protected boolean annoSolareInScrivania;
protected boolean riportaAvantiIndietro;
private boolean attivoRegolamento_2006 = false;
private boolean ribaltato;
public CRUDVirtualObbligazioneBP() {
super();
}
public CRUDVirtualObbligazioneBP(String function) {
super(function);
}
/**
*
*
*
* @param context L'ActionContext della richiesta
* @throws BusinessProcessException
* @throws ValidationException
*/
protected void aggiornaDefferUpdateSaldi(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException , it.cnr.jada.bulk.ValidationException
{
if ( ! (getParent() instanceof IDefferedUpdateSaldiBP) )
throw new BusinessProcessException( "Impossibile aggiornare saldi dei documenti contabili in differita! (Il parent BusinessProcess non implementa interfaccia IDefferUpdateSaldiBP)" );
IDefferUpdateSaldi docAmm = ((IDefferedUpdateSaldiBP) getParent()).getDefferedUpdateSaldiBulk();
IDocumentoContabileBulk docCont = (IDocumentoContabileBulk) getModel();
docAmm.addToDefferredSaldi( docCont, docCont.getSaldiInfo() );
}
public void basicEdit(it.cnr.jada.action.ActionContext context,it.cnr.jada.bulk.OggettoBulk bulk, boolean doInitializeForEdit) throws it.cnr.jada.action.BusinessProcessException
{
super.basicEdit(context, bulk, doInitializeForEdit);
if (getStatus()!=VIEW)
{
ObbligazioneBulk obb = (ObbligazioneBulk)getModel();
if ( "Y".equals(obb.getRiportato()) )
{
// setStatus(VIEW);
setMessage("Il documento è stato riportato all'esercizio successivo. Non consentita la modifica.");
}
// Se l'impoegno è stato stornato, NON è possibile apportare alcuna modifica.
// 27/02/2004 - BORRIELLO - Segnalazione Interna
if ( obb.getStato_obbligazione().equals(ObbligazioneBulk.STATO_OBB_STORNATO)) {
setStatus(VIEW);
setMessage("Impegno Residuo stornato. Non consentita la modifica.");
}
}
}
/**
* Crea la CRUDComponentSession da usare per effettuare le operazioni di CRUD
*/
public ObbligazioneComponentSession createObbligazioneComponentSession() throws BusinessProcessException
{
return (ObbligazioneComponentSession)createComponentSession("CNRDOCCONT00_EJB_ObbligazioneComponentSession",CRUDComponentSession.class);
}
/**
* Metodo utilizzato per creare una toolbar applicativa personalizzata.
* @return newToolbar La nuova toolbar creata
*/
protected it.cnr.jada.util.jsp.Button[] createToolbar()
{
Button[] toolbar = super.createToolbar();
Button[] newToolbar = new Button[ toolbar.length + 2 ];
for ( int i = 0; i< toolbar.length; i++ )
newToolbar[ i ] = toolbar[ i ];
newToolbar[ toolbar.length] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()),"Toolbar.riportaIndietro");
newToolbar[ toolbar.length + 1 ] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()),"Toolbar.riportaAvanti");
return newToolbar;
}
public it.cnr.jada.util.RemoteIterator find(ActionContext context,it.cnr.jada.persistency.sql.CompoundFindClause clauses,OggettoBulk model) throws it.cnr.jada.action.BusinessProcessException
{
try
{
completeSearchTools( context, this );
return super.find( context, clauses, model );
}
catch ( Exception e )
{
throw handleException(e);
}
}
public abstract OggettoBulk getBringBackModel() ;
/**
* @param context Il contesto dell'azione
* @param obbligazione it.cnr.contab.doccont00.core.bulk.ObbligazioneBulk
* @param mode java.lang.String
* @return it.cnr.jada.util.action.CRUDBP
*/
public static CRUDVirtualObbligazioneBP getBusinessProcessFor(
it.cnr.jada.action.ActionContext context,
ObbligazioneBulk obbligazione,
String mode) throws it.cnr.jada.action.BusinessProcessException {
if (obbligazione == null)
return null;
else if (obbligazione.getFl_pgiro().booleanValue())
return (it.cnr.contab.doccont00.bp.CRUDImpegnoPGiroBP)context.getUserInfo().createBusinessProcess(context,"CRUDImpegnoPGiroBP",new Object[] { mode });
else if (obbligazione.isObbligazioneResiduo())
return (CRUDObbligazioneBP)context.getUserInfo().createBusinessProcess(context,"CRUDObbligazioneResBP",new Object[] { mode });
else if (obbligazione.isObbligazioneResiduoImproprio())
return (CRUDObbligazioneBP)context.getUserInfo().createBusinessProcess(context,"CRUDObbligazioneResImpropriaBP",new Object[] { mode });
else
return (CRUDObbligazioneBP)context.getUserInfo().createBusinessProcess(context,"CRUDObbligazioneBP",new Object[] { mode });
}
/**
* Crea la CRUDComponentSession da usare per effettuare le operazioni di CRUD
*/
public static ObbligazioneAbstractComponentSession getVirtualComponentSession(
it.cnr.jada.action.ActionContext context,
boolean setSavePoint)
throws it.cnr.jada.action.BusinessProcessException {
if (context == null) return null;
if (setSavePoint)
return setSafePoint(context);
else {
it.cnr.jada.action.BusinessProcess bp = context.getBusinessProcess();
return (ObbligazioneAbstractComponentSession)bp.createComponentSession(
"CNRDOCCONT00_EJB_ObbligazioneAbstractComponentSession",
ObbligazioneAbstractComponentSession.class);
}
}
/**
* Crea la CRUDComponentSession da usare per effettuare le operazioni di CRUD
*/
public DocumentoContabileComponentSession getVirtualSession(
it.cnr.jada.action.ActionContext context,
boolean setSavePoint)
throws it.cnr.jada.action.BusinessProcessException {
return getVirtualComponentSession( context, setSavePoint );
}
protected void init(it.cnr.jada.action.Config config,it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
if (getUserTransaction() != null)
setSafePoint(context);
super.init(config,context);
try {
setAttivoRegolamento_2006(Utility.createParametriCnrComponentSession().getParametriCnr(context.getUserContext(),CNRUserContext.getEsercizio(context.getUserContext())).getFl_regolamento_2006().booleanValue());
} catch (ComponentException e) {
throw new BusinessProcessException(e);
} catch (RemoteException e) {
throw new BusinessProcessException(e);
}
try
{
Timestamp today = it.cnr.jada.util.ejb.EJBCommonServices.getServerDate();
java.util.Calendar calendar = java.util.GregorianCalendar.getInstance();
calendar.setTime( today );
Integer solaris = new Integer(calendar.get(java.util.Calendar.YEAR));
Integer esercizioScrivania = it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(context.getUserContext());
setAnnoSolareInScrivania(solaris == esercizioScrivania);
setRibaltato(initRibaltato(context));
if (!isAnnoSolareInScrivania()) {
String cds = it.cnr.contab.utenze00.bp.CNRUserContext.getCd_cds(context.getUserContext());
try
{
ObbligazioneComponentSession session = createObbligazioneComponentSession();
EsercizioBulk es = session.verificaStatoEsercizio(context.getUserContext(), cds, esercizioScrivania);
EsercizioBulk esSucc = session.verificaStatoEsercizio(context.getUserContext(), cds, new Integer(esercizioScrivania.intValue()+1));
if ( es.getSt_apertura_chiusura().equals(es.STATO_APERTO) &&
esSucc.getSt_apertura_chiusura().equals(es.STATO_APERTO) &&
isRibaltato())
setRiportaAvantiIndietro(true);
else
setRiportaAvantiIndietro(false);
} catch (Throwable t)
{
handleException(t);
}
}
else
setRiportaAvantiIndietro(false);
} catch (javax.ejb.EJBException e)
{
setAnnoSolareInScrivania(false);
}
}
/**
* Insert the method's description here.
* Creation date: (03/07/2003 14.16.31)
* @return boolean
*/
public boolean isAnnoSolareInScrivania() {
return annoSolareInScrivania;
}
//
// Abilito il bottone di ANNULLA RIPORTA documento solo se non ho scadenze in fase di modifica/inserimento
//
public boolean isBringbackButtonEnabled()
{
return super.isBringbackButtonEnabled() || isDeleting();
}
public boolean isDeleteButtonEnabled()
{
return super.isDeleteButtonEnabled() && getModel() != null &&
!((ObbligazioneBulk)getModel()).isDocRiportato() && !((ObbligazioneBulk)getModel()).isControparteRiportatata();
}
public boolean isDeleting() {
return deleting;
}
public boolean isEditable() {
return super.isEditable() || isDeleting();
}
/**
*
* Restituisce il valore della proprietà 'fromDocAmm'
*
* @return Il valore della proprietà 'fromDocAmm'
*/
public boolean isFromDocAmm()
{
try{
return IDefferedUpdateSaldiBP.class.isAssignableFrom( getParent().getClass());
}catch(java.lang.NullPointerException e){
return false;
}
}
public boolean isRiportaAvantiButtonEnabled()
{
IDocumentoContabileBulk doc = ((IDocumentoContabileBulk)getModel());
return !isRiportaAvantiButtonHidden() &&
isEditing() &&
// !isDirty() &&
doc != null &&
!((ObbligazioneBulk)doc).isDocRiportato();
}
public boolean isRiportaAvantiButtonHidden()
{
return isAnnoSolareInScrivania() ||
!isRiportaAvantiIndietro() ||
isFromDocAmm();
}
/**
* Insert the method's description here.
* Creation date: (03/07/2003 14.16.31)
* @return boolean
*/
public boolean isRiportaAvantiIndietro() {
return riportaAvantiIndietro;
}
public boolean isRiportaIndietroButtonEnabled()
{
IDocumentoContabileBulk doc = ((IDocumentoContabileBulk)getModel());
return !isRiportaIndietroButtonHidden() &&
isEditing() &&
!isDirty() &&
doc != null &&
((ObbligazioneBulk)doc).isDocRiportato();
}
public boolean isRiportaIndietroButtonHidden()
{
return isRiportaAvantiButtonHidden();
}
public boolean isSaveButtonEnabled()
{
return super.isSaveButtonEnabled() && getModel() != null &&
!((ObbligazioneBulk)getModel()).isDocRiportato() && !((ObbligazioneBulk)getModel()).isControparteRiportatata();
}
//
// Abilito il bottone di RIPORTA documento solo se non ho scadenze in fase di modifica/inserimento
//
public boolean isUndoBringBackButtonEnabled()
{
return super.isUndoBringBackButtonEnabled() || isDeleting() || isViewing();
}
public void riportaAvanti(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException
{
try
{
((DocumentoContabileComponentSession)createComponentSession()).callRiportaAvanti( context.getUserContext(), (IDocumentoContabileBulk) getModel());
edit( context, getModel(), true );
} catch(Exception e) {
throw handleException(e);
}
}
public void riportaIndietro(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException
{
try
{
((DocumentoContabileComponentSession)createComponentSession()).callRiportaIndietro( context.getUserContext(), (IDocumentoContabileBulk) getModel());
edit( context, getModel(), true );
} catch(Exception e) {
throw handleException(e);
}
}
/**
* Crea la CRUDComponentSession da usare per effettuare le operazioni di CRUD
*/
public static ObbligazioneAbstractComponentSession rollbackToSafePoint (
ActionContext context)
throws it.cnr.jada.action.BusinessProcessException {
if (context == null) return null;
BusinessProcess bp = context.getBusinessProcess();
ObbligazioneAbstractComponentSession compSession = (ObbligazioneAbstractComponentSession)bp.createComponentSession(
"CNRDOCCONT00_EJB_ObbligazioneAbstractComponentSession",
ObbligazioneAbstractComponentSession.class);
try {
compSession.rollbackToSavePoint(context.getUserContext());
} catch (Throwable t) {
throw new it.cnr.jada.action.BusinessProcessException(t);
}
return compSession;
}
public void save(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException , it.cnr.jada.bulk.ValidationException
{
/*27.5.2002 - salvo il valore della disp cassa per reimpostarlo */
boolean isCheckDispCassEseguito = ((ObbligazioneBulk)getModel()).isCheckDisponibilitaCassaEseguito();
ObbligazioneBulk obbligazione = (ObbligazioneBulk)getModel();
Obbligazione_modificaBulk obbMod=null;
boolean saldiDaAggiornare=false;
if (obbligazione instanceof ObbligazioneResBulk && obbligazione.isObbligazioneResiduo()) {
obbMod = ((ObbligazioneResBulk)obbligazione).getObbligazione_modifica();
saldiDaAggiornare = ((ObbligazioneResBulk)obbligazione).isSaldiDaAggiornare();
}
super.save( context );
((ObbligazioneBulk)getModel()).setCheckDisponibilitaCassaEseguito( isCheckDispCassEseguito);
((ObbligazioneBulk)getModel()).setCheckDisponibilitaContrattoEseguito( false);
((ObbligazioneBulk)getModel()).setCheckDisponibilitaCdrGAEEseguito( false);
// reimposto i valori
if (obbligazione instanceof ObbligazioneResBulk && obbligazione.isObbligazioneResiduo()) {
((ObbligazioneResBulk)getModel()).setObbligazione_modifica(obbMod);
((ObbligazioneResBulk)getModel()).setSaldiDaAggiornare(saldiDaAggiornare);
}
if ( getUserTransaction() != null )
if (!(((ObbligazioneBulk)getModel()).isObbligazioneResiduo() && !(getParent() instanceof IDefferedUpdateSaldiBP)))
aggiornaDefferUpdateSaldi( context );
/*
try
{ OggettoBulk oggetto = ((BulkBP)getParent()).getModel();
if (oggetto instanceof it.cnr.contab.docamm00.docs.bulk.Filtro_ricerca_obbligazioniVBulk)
oggetto = ((BulkBP)getParent().getParent()).getModel();
IDefferUpdateSaldi docAmm = (IDefferUpdateSaldi) oggetto;
Map values = (Map) docAmm.getDefferredSaldi().get(getModel());
((ObbligazioneComponentSession)createComponentSession()).aggiornaSaldiInDifferita( context.getUserContext(), (IDocumentoContabileBulk)getModel(), values );
}
catch ( Exception e )
{
throw handleException( e );
}*/
}
/**
*
*
*
* @param scadenza
* @param context L'ActionContext della richiesta
*/
public abstract void selezionaScadenza(it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk scadenza, it.cnr.jada.action.ActionContext context );
/**
* Insert the method's description here.
* Creation date: (03/07/2003 14.16.31)
* @param newAnnoSolareInScrivania boolean
*/
public void setAnnoSolareInScrivania(boolean newAnnoSolareInScrivania) {
annoSolareInScrivania = newAnnoSolareInScrivania;
}
public void setDeleting(boolean newDeleting) {
deleting = newDeleting;
}
/**
* Insert the method's description here.
* Creation date: (03/07/2003 14.16.31)
* @param newRiportaAvantiIndietro boolean
*/
public void setRiportaAvantiIndietro(boolean newRiportaAvantiIndietro) {
riportaAvantiIndietro = newRiportaAvantiIndietro;
}
/**
* Crea la CRUDComponentSession da usare per effettuare le operazioni di CRUD
*/
public static ObbligazioneAbstractComponentSession setSafePoint (
ActionContext context)
throws it.cnr.jada.action.BusinessProcessException {
if (context == null) return null;
BusinessProcess bp = context.getBusinessProcess();
ObbligazioneAbstractComponentSession compSession = (ObbligazioneAbstractComponentSession)bp.createComponentSession(
"CNRDOCCONT00_EJB_ObbligazioneAbstractComponentSession",
ObbligazioneAbstractComponentSession.class);
try {
compSession.setSavePoint(context.getUserContext());
} catch (Throwable t) {
throw new it.cnr.jada.action.BusinessProcessException(t);
}
return compSession;
}
/**
* @return
*/
public boolean isAttivoRegolamento_2006() {
return attivoRegolamento_2006;
}
/**
* @param b
*/
public void setAttivoRegolamento_2006(boolean b) {
attivoRegolamento_2006 = b;
}
public boolean initRibaltato(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException
{
try
{
return (((RicercaDocContComponentSession)createComponentSession("CNRCHIUSURA00_EJB_RicercaDocContComponentSession", RicercaDocContComponentSession.class)).isRibaltato(context.getUserContext()));
} catch(Exception e)
{
throw handleException(e);
}
}
public boolean isRibaltato() {
return ribaltato;
}
public void setRibaltato(boolean b) {
ribaltato = b;
}
protected String getStorePath(ObbligazioneBulk allegatoParentBulk, boolean create) throws BusinessProcessException {
return Arrays.asList(
SpringUtil.getBean(StorePath.class).getPathComunicazioniDal(),
Optional.ofNullable(allegatoParentBulk.getUnita_organizzativa())
.map(Unita_organizzativaBulk::getCd_unita_organizzativa)
.orElse(""),
"Obbligazioni",
Optional.ofNullable(allegatoParentBulk.getEsercizio())
.map(esercizio -> String.valueOf(esercizio))
.orElse("0"),
String.valueOf(allegatoParentBulk.getPg_obbligazione())
).stream().collect(
Collectors.joining(StorageService.SUFFIX)
);
}
@Override
protected Class getAllegatoClass() {
return AllegatoObbligazioneBulk.class;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy