All Downloads are FREE. Search and download functionalities are using the official Maven repository.

it.cnr.contab.docamm00.bp.CRUDDocumentoGenericoAttivoBP 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.docamm00.bp;

/**
 * Documento generico Attivo BP
 */

import java.util.Arrays;
import java.util.List;

import it.cnr.contab.docamm00.ejb.DocumentoGenericoComponentSession;
import it.cnr.contab.doccont00.core.bulk.*;
import it.cnr.contab.docamm00.docs.bulk.*;
import it.cnr.contab.doccont00.core.bulk.Accertamento_scadenzarioBulk;
import it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk;
import it.cnr.contab.doccont00.bp.*;
import it.cnr.contab.util.Utility;
import it.cnr.contab.anagraf00.core.bulk.AnagraficoBulk;
import it.cnr.contab.anagraf00.core.bulk.BancaBulk;
import it.cnr.contab.anagraf00.core.bulk.TerzoBulk;
import it.cnr.contab.anagraf00.tabrif.bulk.Rif_modalita_pagamentoBulk;
import it.cnr.contab.anagraf00.tabrif.bulk.Rif_termini_pagamentoBulk;
import it.cnr.contab.chiusura00.ejb.RicercaDocContComponentSession;
import it.cnr.contab.config00.esercizio.bulk.EsercizioBulk;
import it.cnr.jada.action.*;
import it.cnr.jada.bulk.*;
import it.cnr.jada.util.action.*;
import it.cnr.jada.util.jsp.JSPUtils;

public class CRUDDocumentoGenericoAttivoBP 
	extends SimpleCRUDBP 
	implements IDocumentoAmministrativoBP,IGenericSearchDocAmmBP, IDefferedUpdateSaldiBP, VoidableBP {
	private final SimpleDetailCRUDController dettaglio = new DocumentoGenericoAttivoRigaCRUDController("Dettaglio",Documento_generico_rigaBulk.class,"documento_generico_dettColl",this);
	
	private final SimpleDetailCRUDController dettaglioAccertamentoController;
	private final AccertamentiCRUDController accertamentiController = new AccertamentiCRUDController("Accertamenti",it.cnr.contab.doccont00.core.bulk.Accertamento_scadenzarioBulk.class,"documento_generico_accertamentiHash",this);
	protected it.cnr.contab.docamm00.docs.bulk.Risultato_eliminazioneVBulk deleteManager = null;
	private boolean isDeleting = false;
	private boolean isDetailDoubling = false;
	private it.cnr.contab.doccont00.core.bulk.OptionRequestParameter userConfirm = null;
	private boolean annoDiCompetenza = true;
	private boolean annoSolareInScrivania = true;
	private boolean riportaAvantiIndietro = false;
	private boolean carryingThrough = false;
	private boolean ribaltato;
	private boolean contoEnte;
public CRUDDocumentoGenericoAttivoBP() {
	super();
	setTab("tab","tabDocumentoAttivo");
	setTab("tabDocumentoAttivo","tabDocumentoAttivo");
	dettaglioAccertamentoController = new SimpleDetailCRUDController("DettaglioAccertamenti",Documento_generico_rigaBulk.class,"documento_generico_accertamentiHash",accertamentiController) {

			public java.util.List getDetails() {

				Documento_genericoBulk doc= (Documento_genericoBulk)CRUDDocumentoGenericoAttivoBP.this.getModel();
				java.util.Vector lista = new java.util.Vector();
				if (doc != null) {
					java.util.Hashtable h = doc.getDocumento_generico_accertamentiHash();
					if (h != null && getParentModel() != null)
						lista = (java.util.Vector)h.get(getParentModel());
				}
				return lista;
			}
		};
	
}
public CRUDDocumentoGenericoAttivoBP(String function) throws BusinessProcessException{
	super(function+"Tr");

	dettaglioAccertamentoController = new SimpleDetailCRUDController("DettaglioAccertamenti",Documento_generico_rigaBulk.class,"documento_generico_accertamentiHash",accertamentiController) {

			public java.util.List getDetails() {

				Documento_genericoBulk doc= (Documento_genericoBulk)CRUDDocumentoGenericoAttivoBP.this.getModel();
				java.util.Vector lista = new java.util.Vector();
				if (doc != null) {
					java.util.Hashtable h = doc.getDocumento_generico_accertamentiHash();
					if (h != null && getParentModel() != null)
						lista = (java.util.Vector)h.get(getParentModel());
				}
				return lista;
			}
		};
}
protected void basicEdit(it.cnr.jada.action.ActionContext context,OggettoBulk bulk,boolean doInitializeForEdit) throws it.cnr.jada.action.BusinessProcessException {
	try {
		Documento_genericoBulk doc = (Documento_genericoBulk)bulk;
		setAnnoDiCompetenza(it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(context.getUserContext()).intValue() == doc.getEsercizio().intValue());
		super.basicEdit(context, doc, doInitializeForEdit);
	} catch(Throwable e) {
		throw new it.cnr.jada.action.BusinessProcessException(e);
	}
}
protected boolean basicRiportaButtonHidden() {

	Documento_genericoBulk doc = (Documento_genericoBulk)getModel();
	return	isAnnoSolareInScrivania() ||
			!isRiportaAvantiIndietro() ||
			isDeleting() ||
			isModelVoided() ||
			(doc != null && doc.isPagata()) ||
			!isEditing();
}
public void create(it.cnr.jada.action.ActionContext context)
	throws	it.cnr.jada.action.BusinessProcessException {
		
	try {
		getModel().setToBeCreated();
		setModel(
				context,
				((DocumentoGenericoComponentSession)createComponentSession()).creaConBulk(
																			context.getUserContext(),
																			getModel(),
																			getUserConfirm()));
	} catch(Exception e) {
		throw handleException(e);
	} finally {
		setUserConfirm(null);
	}
}
public OggettoBulk createEmptyModel(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {

	setAnnoDiCompetenza(true);
	return super.createEmptyModel(context);
}
public it.cnr.jada.bulk.OggettoBulk createNewBulk(
    it.cnr.jada.action.ActionContext context)
    throws it.cnr.jada.action.BusinessProcessException {

    Documento_genericoBulk generico =
        (Documento_genericoBulk) super.createNewBulk(context);
    //al momento della creazione di un nuovo oggetto bulk imposta il tipo di documento
    if (generico.getCd_tipo_documento_amm() == null){
        //generico.setCd_tipo_documento_amm(generico.GENERICO_E);
        generico.setTi_entrate_spese(generico.ENTRATE);
    }
    return generico;
}
public it.cnr.jada.bulk.OggettoBulk createNewSearchBulk(
    it.cnr.jada.action.ActionContext context)
    throws it.cnr.jada.action.BusinessProcessException {

	return createNewBulk(context);
}
protected it.cnr.jada.util.jsp.Button[] createToolbar() {
	it.cnr.jada.util.jsp.Button[] toolbar = new it.cnr.jada.util.jsp.Button[11];
	int i = 0;
	toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(it.cnr.jada.util.action.CRUDBP.class),"CRUDToolbar.search");
	toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(it.cnr.jada.util.action.CRUDBP.class),"CRUDToolbar.startSearch");
	toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(it.cnr.jada.util.action.CRUDBP.class),"CRUDToolbar.freeSearch");
	toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(it.cnr.jada.util.action.CRUDBP.class),"CRUDToolbar.new");
	toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(it.cnr.jada.util.action.CRUDBP.class),"CRUDToolbar.save");
	toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(it.cnr.jada.util.action.CRUDBP.class),"CRUDToolbar.delete");
	toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(it.cnr.jada.util.action.CRUDBP.class),"CRUDToolbar.bringBack");
	toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(it.cnr.jada.util.action.CRUDBP.class),"CRUDToolbar.undoBringBack");
	toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(it.cnr.jada.util.action.CRUDBP.class),"CRUDToolbar.print");
	toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()),"CRUDToolbar.riportaIndietro");
	toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()),"CRUDToolbar.riportaAvanti");

	return toolbar;
}
public void delete(ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
	int crudStatus = getModel().getCrudStatus();
	try {
		getModel().setToBeDeleted();
		createComponentSession().eliminaConBulk(context.getUserContext(),getModel());
	} catch(Exception e) {
		getModel().setCrudStatus(crudStatus);
		throw handleException(e);
	}
}
public void edit(
	it.cnr.jada.action.ActionContext context,
	OggettoBulk bulk,
	boolean doInitializeForEdit) 
	throws it.cnr.jada.action.BusinessProcessException {

	setCarryingThrough(false);
	super.edit(context, bulk, doInitializeForEdit);
	if (getModel() instanceof Documento_genericoBulk)
  	   ((Documento_genericoBulk)getModel()).setDocumentoModificabile(!isInputReadonly());
}
/**
 * Effettua una operazione di ricerca per un attributo di un modello.
 *
 * @param userContext	lo UserContext che ha generato la richiesta
 * @param filtro		modello che fa da contesto alla ricerca (il modello del FormController padre del
 * 						controller che ha scatenato la ricerca)
 * @return un RemoteIterator sul risultato della ricerca o null se la ricerca non ha ottenuto nessun risultato
 *
**/
public it.cnr.jada.util.RemoteIterator findObbligazioni(it.cnr.jada.UserContext userContext, Filtro_ricerca_obbligazioniVBulk filtro) throws it.cnr.jada.action.BusinessProcessException {

	try{

		DocumentoGenericoComponentSession component = (DocumentoGenericoComponentSession)createComponentSession("CNRDOCAMM00_EJB_DocumentoGenericoComponentSession", DocumentoGenericoComponentSession.class);
		return component.cercaObbligazioni(userContext, filtro);

	} catch (it.cnr.jada.comp.ComponentException e) {
		throw handleException(e);
	} catch (java.rmi.RemoteException e) {
		throw handleException(e);
	}
}
/**
 * Effettua una operazione di ricerca per un attributo di un modello.
 *
 * @param actionContext contesto dell'azione in corso
 * @param clauses Albero di clausole da utilizzare per la ricerca
 * @param bulk prototipo del modello di cui si effettua la ricerca
 * @param context modello che fa da contesto alla ricerca (il modello del FormController padre del
 * 			controller che ha scatenato la ricerca)
 * @return un RemoteIterator sul risultato della ricerca o null se la ricerca non ha ottenuto nessun risultato
 *
**/
public it.cnr.jada.util.RemoteIterator findObbligazioniAttributes(ActionContext actionContext, it.cnr.jada.persistency.sql.CompoundFindClause clauses, it.cnr.jada.bulk.OggettoBulk bulk, it.cnr.jada.bulk.OggettoBulk context, java.lang.String property) throws it.cnr.jada.action.BusinessProcessException {

	try {
		
		DocumentoGenericoComponentSession sess = (DocumentoGenericoComponentSession)createComponentSession("CNRDOCAMM00_EJB_DocumentoGenericoComponentSession", DocumentoGenericoComponentSession.class);
		return it.cnr.jada.util.ejb.EJBCommonServices.openRemoteIterator(
												actionContext,
												sess.cerca(
														actionContext.getUserContext(),
														clauses,
														bulk,
														context,
														property));
	} catch (it.cnr.jada.comp.ComponentException e) {
		throw handleException(e);
	} catch (java.rmi.RemoteException e) {
		throw handleException(e);
	}
}
/**
 * Restituisce il valore della proprietà 'accertamentiController'
 *
 * @return Il valore della proprietà 'accertamentiController'
 */
public final AccertamentiCRUDController getAccertamentiController() {
	return accertamentiController;
}
public Accertamento_scadenzarioBulk getAccertamento_scadenziario_corrente() {

	if (getAccertamentiController() == null)
		return null;
	return (Accertamento_scadenzarioBulk)getAccertamentiController().getModel();
}
public IDocumentoAmministrativoBulk getBringBackDocAmm() {
	
	return getDocumentoAmministrativoCorrente();
}
public String getColumnsetForGenericSearch() {

	return "filtro_ricerca_documenti";
}
public IDefferUpdateSaldi getDefferedUpdateSaldiBulk() {

	if (isDeleting() && getParent() != null)
		return getDefferedUpdateSaldiParentBP().getDefferedUpdateSaldiBulk();
	return (IDefferUpdateSaldi)getDocumentoAmministrativoCorrente();
}
public IDefferedUpdateSaldiBP getDefferedUpdateSaldiParentBP() {

	if (isDeleting() && getParent() != null)
		return ((IDefferedUpdateSaldiBP)getParent()).getDefferedUpdateSaldiParentBP();
	return this;
}
public it.cnr.contab.docamm00.docs.bulk.Risultato_eliminazioneVBulk getDeleteManager() {

	if (deleteManager == null)
		deleteManager = new it.cnr.contab.docamm00.docs.bulk.Risultato_eliminazioneVBulk();
	else
		deleteManager.reset();
	return deleteManager;
}
/**
 * Restituisce il valore della proprietà 'dettaglio'
 *
 * @return Il valore della proprietà 'dettaglio'
 */
public final SimpleDetailCRUDController getDettaglio() {
	return dettaglio;
}
/**
 * Restituisce il valore della proprietà 'dettaglioAccertamentoController'
 *
 * @return Il valore della proprietà 'dettaglioAccertamentoController'
 */
public final it.cnr.jada.util.action.SimpleDetailCRUDController getDettaglioAccertamentoController() {
	return dettaglioAccertamentoController;
}
public it.cnr.contab.docamm00.docs.bulk.IDocumentoAmministrativoBulk getDocumentoAmministrativoCorrente() {
	
	return (IDocumentoAmministrativoBulk)getModel();
}
public Obbligazione_scadenzarioBulk getObbligazione_scadenziario_corrente() {
	return null;	
}
public String getPropertyForGenericSearch() {

	return null;
}
/**
 * Restituisce il valore della proprietà 'userConfirm'
 *
 * @return Il valore della proprietà 'userConfirm'
 */
public it.cnr.contab.doccont00.core.bulk.OptionRequestParameter getUserConfirm() {
	return userConfirm;
}
	/**
	 * Imposta come attivi i tab di default.
	 *
	 * @param context ActionContext
	 */

protected void init(it.cnr.jada.action.Config config,it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {

	super.init(config,context);
	
	try {
		int solaris = Documento_genericoBulk.getDateCalendar(it.cnr.jada.util.ejb.EJBCommonServices.getServerDate()).get(java.util.Calendar.YEAR);
		int esercizioScrivania = it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(context.getUserContext()).intValue();
		setAnnoSolareInScrivania(solaris == esercizioScrivania);
		setRibaltato(initRibaltato(context));
		if (!isAnnoSolareInScrivania()) {
			String cds = it.cnr.contab.utenze00.bp.CNRUserContext.getCd_cds(context.getUserContext());
			try {
				DocumentoGenericoComponentSession session = (DocumentoGenericoComponentSession)createComponentSession();
				boolean esercizioScrivaniaAperto = session.verificaStatoEsercizio(context.getUserContext(), new EsercizioBulk(cds, new Integer(esercizioScrivania)));
				boolean esercizioSuccessivoAperto = session.verificaStatoEsercizio(context.getUserContext(), new EsercizioBulk(cds, new Integer(esercizioScrivania+1)));
				setRiportaAvantiIndietro(esercizioScrivaniaAperto && esercizioSuccessivoAperto && isRibaltato());
			} catch (Throwable t) {
				handleException(t);
			}
		} else
			setRiportaAvantiIndietro(false);
	} catch (javax.ejb.EJBException e) {
		setAnnoSolareInScrivania(false);
	}
	
	resetTabs();
}
public OggettoBulk initializeModelForInsert(ActionContext actioncontext, OggettoBulk oggettobulk) throws BusinessProcessException {
	setDetailDoubling(false);
	return super.initializeModelForInsert(actioncontext, oggettobulk);
}
public OggettoBulk initializeModelForEdit(ActionContext actioncontext, OggettoBulk oggettobulk) throws BusinessProcessException {
	setDetailDoubling(false);
	return super.initializeModelForEdit(actioncontext, oggettobulk);
}
public it.cnr.jada.ejb.CRUDComponentSession initializeModelForGenericSearch(
	it.cnr.jada.util.action.BulkBP bp,
	it.cnr.jada.action.ActionContext context)
	throws BusinessProcessException {

	DocumentoGenericoComponentSession session = (DocumentoGenericoComponentSession)createComponentSession();

	Filtro_ricerca_doc_ammVBulk filtro = (Filtro_ricerca_doc_ammVBulk)bp.getModel();
	Documento_genericoBulk dg = (Documento_genericoBulk)filtro.getInstance();
	
	try {
		Documento_genericoBulk clause = (Documento_genericoBulk)dg.clone();
		clause.setTi_entrate_spese(dg.ENTRATE);
		java.util.Collection tipiDocumentoEntrata = session.findTipi_doc_for_search(context.getUserContext(), clause);
		dg.setTipi_doc_for_search(tipiDocumentoEntrata);
	} catch (Throwable t) {
		throw new BusinessProcessException(t.getMessage(), t);
	}
	
	return (it.cnr.jada.ejb.CRUDComponentSession)session;
}
/**
 * Insert the method's description here.
 * Creation date: (06/06/2003 16.48.44)
 * @return boolean
 */
public boolean isAnnoDiCompetenza() {
	return annoDiCompetenza;
}
/**
 * Insert the method's description here.
 * Creation date: (02/07/2003 12.45.54)
 * @return boolean
 */
public boolean isAnnoSolareInScrivania() {
	return annoSolareInScrivania;
}
public boolean isAutoGenerated(){
	return false;
}
/**
 * Insert the method's description here.
 * Creation date: (02/07/2003 12.45.54)
 * @return boolean
 */
public boolean isCarryingThrough() {
	return carryingThrough;
}
public boolean isDeleteButtonEnabled() {
	Documento_genericoBulk doc= (Documento_genericoBulk) CRUDDocumentoGenericoAttivoBP.this.getModel();
	//return isEditable() && isEditing() && !isModelVoided() && (!doc.getTi_associato_manrev().equals(doc.PARZIALMENTE_ASSOCIATO_A_MANDATO));
	//    && (!doc.getTi_associato_manrev().equals(doc.PARZIALMENTE_ASSOCIATO_A_MANDATO));

	return super.isDeleteButtonEnabled() && 
	(doc.getStato_cofi()!=null && doc.getStato_cofi().equals(doc.STATO_CONTABILIZZATO) || doc.getStato_cofi().equals(doc.STATO_INIZIALE)) 
	&& !isModelVoided()
	&& ((isAnnoDiCompetenza() && !doc.isRiportata()) ||	    
		// Gennaro Borriello - (02/11/2004 16.48.21)
		// Fix sul controllo dello "Stato Riportato": controlla che il documento sia stato riportato DA UN ES. PRECEDENTE a quello di scrivania.
		(!isAnnoDiCompetenza() && doc.COMPLETAMENTE_RIPORTATO.equalsIgnoreCase(doc.getRiportataInScrivania())));
}
public boolean isDeleting() {
	return isDeleting;
}
public boolean isInputReadonly() {
	Documento_genericoBulk doc= (Documento_genericoBulk)getModel();
	return (super.isInputReadonly() ||
		isModelVoided() || 
		isDeleting() ||
		!isAnnoDiCompetenza() ||
		(doc!=null && doc.getStato_cofi()!=null && doc.isPagata()) ||
		//Gennaro Borriello - (03/11/2004 19.04.48)
		// Fix sul controllo dello "Stato Riportato": controlla che il documento sia stato riportato 
		//	DA UN ES. PRECEDENTE a quello di scrivania.
		(isAnnoDiCompetenza() && doc.isRiportata()) ||
		(doc.getTipo_documento()!=null && !doc.getTipo_documento().getFl_utilizzo_doc_generico().booleanValue())) && !this.isSearching();	
}
public boolean isManualModify() {
    Documento_genericoBulk doc= (Documento_genericoBulk) CRUDDocumentoGenericoAttivoBP.this.getModel();
    return doc.getTipo_documento()!=null && !doc.getTipo_documento().getDs_tipo_documento_amm().equalsIgnoreCase("TRASF_E");
}
public boolean isModelVoided() {

    return !isSearching() && getModel() != null && ((Voidable) getModel()).isAnnullato();
}
public boolean isRiportaAvantiButtonEnabled() {

	Documento_genericoBulk doc = (Documento_genericoBulk)getModel();
	return	isCarryingThrough() || !doc.isRiportata();
}
public boolean isRiportaAvantiButtonHidden() {

	return	basicRiportaButtonHidden();
}
/**
 * Insert the method's description here.
 * Creation date: (02/07/2003 12.45.54)
 * @return boolean
 */
public boolean isRiportaAvantiIndietro() {
	return riportaAvantiIndietro;
}
public boolean isRiportaIndietroButtonEnabled() {

	Documento_genericoBulk doc = (Documento_genericoBulk)getModel();
    return isEditing() &&
    		!isDeleting() &&
    		!isModelVoided() && 
    		!isDirty() &&
    		!doc.isPagata() &&
    		!isCarryingThrough();
}
public boolean isRiportaIndietroButtonHidden() {

	Documento_genericoBulk doc = (Documento_genericoBulk)getModel();
	return basicRiportaButtonHidden() ||
			(doc != null && !(doc.isRiportata() || isCarryingThrough()));
}
public boolean isSaveButtonEnabled() {
	Documento_genericoBulk doc= (Documento_genericoBulk) CRUDDocumentoGenericoAttivoBP.this.getModel();
	return super.isSaveButtonEnabled() && 
			        isEditable() &&
			        !isModelVoided() &&
			        /* RP per consentire salvataggio delle associazioni con l'inventario
					 * tutti i dati risultano comunque non aggiornabili
					 !doc.isPagata() && */
 				            // Gennaro Borriello - (02/11/2004 16.48.21)
				            //	Allineato controllo su "Stato Riportato-Anno di Competenza" così come in
				            //	CRUDDocumentoGenericoPassivoBP.isSaveButtonEnabled()			
			        ((!doc.isRiportata() && isAnnoDiCompetenza()) || carryingThrough || isDetailDoubleable());
}
/**
 * Attiva oltre al normale reset il metodo di set dei tab di default.
 *
 * @param context ActionContext
 *
 * @see resetTabs
 */

public void reset(ActionContext context) throws BusinessProcessException {
    super.reset(context);
	setCarryingThrough(false);
    resetTabs();
}
/**
 * Attiva oltre al normale reset il metodo di set dei tab di default.
 *
 * @param context ActionContext
 *
 * @see resetTabs
 */

public void resetForSearch(ActionContext context) throws BusinessProcessException {
	
	setCarryingThrough(false);
	super.resetForSearch(context);
    resetTabs();
}
	/**
	 * Imposta come attivi i tab di default.
	 *
	 * @param context ActionContext
	 */

	public void resetTabs() {
		setTab("tab","tabDocumentoAttivo");
		/*
		setTab("tabDocumentoAttivo","tabDocumentoAttivo");
		setTab("tabDocumentoAttivoDettaglio","tabDocumentoAttivoDettaglio");
		*/
	}
public void riportaAvanti(ActionContext context)
	throws ValidationException,BusinessProcessException {

	try {
		DocumentoGenericoComponentSession session = (DocumentoGenericoComponentSession)createComponentSession();
		Documento_genericoBulk docCarried = 
				(Documento_genericoBulk)session.riportaAvanti(
										context.getUserContext(),
										(IDocumentoAmministrativoBulk)getModel(),
										getUserConfirm());
		setModel(context, docCarried);
	} catch(Exception e) {
		throw handleException(e);
	} finally {
		setUserConfirm(null);
	}
}
public void riportaIndietro(ActionContext context)
	throws it.cnr.jada.action.BusinessProcessException {
	
	if (isDirty()) {
		setMessage("Il documento è stato modificato! Operazione annullata.");
		return;
	}
	
	rollbackUserTransaction();
	setCarryingThrough(true);

	try {
		DocumentoGenericoComponentSession session = (DocumentoGenericoComponentSession)createComponentSession();
		Documento_genericoBulk docCarried = (Documento_genericoBulk)session.riportaIndietro(
											context.getUserContext(),
											(IDocumentoAmministrativoBulk)getModel());
		basicEdit(context, docCarried, true);
		setDirty(true);
		
	} catch (Throwable t) {
		setCarryingThrough(false);
		rollbackUserTransaction();
		throw handleException(t);
	}
}
/**
 * Annulla le modifiche apportate al compenso e ritorna al savepoint impostato in precedenza
 *
 * Pre-post-conditions:
 *
 * Nome: Rollback to savePoint
 * Pre:  Una richiesta di annullare tutte le modifiche apportate e di ritornare al savepoint e' stata generata 
 * Post: Tutte le modifiche effettuate sul compenso vengono annullate, mentre rimangono valide le
 *       modifiche apportate al doc. amministrativo che ha aperto il compenso
 * @param	context			il Context che ha generato la richiesta
 * @param	savePointName	il nome del savePoint
 *
 */	
public void rollbackToSavePoint(ActionContext context, String savePointName) throws BusinessProcessException{

	try {

		DocumentoGenericoComponentSession sess = (DocumentoGenericoComponentSession)createComponentSession();
		sess.rollbackToSavePoint(context.getUserContext(), savePointName);

	} catch (java.rmi.RemoteException e) {
			throw handleException(e);
	} catch (it.cnr.jada.comp.ComponentException e) {
			throw handleException(e);
	}
}
public void salvaRiportandoAvanti(ActionContext context)
	throws ValidationException,BusinessProcessException {

	Documento_genericoBulk docClone = (Documento_genericoBulk)getModel();
	try {
		setSavePoint(context, IDocumentoAmministrativoBulk.RIPORTA_AVANTI);
		completeSearchTools(context,this);
		validate(context);
		saveChildren(context);

		update(context);
		riportaAvanti(context);
	} catch (BusinessProcessException e) {
		rollbackToSavePoint(context, IDocumentoAmministrativoBulk.RIPORTA_AVANTI);
		//Il setModel è necessario perchè update setta il modello. se riportaAvanti fallisce il pg_ver_rec
		//rimane disallineato.
		setModel(context, docClone);
		throw handleException(e);
	}

	if (getMessage() == null)
		setMessage("Salvataggio e riporto all'esercizio successivo eseguito in modo corretto.");
	
	commitUserTransaction();
	setCarryingThrough(false);
	
	try {
		basicEdit(context,getModel(),true);
	} catch (BusinessProcessException e) {
		setModel(context,null);
		setDirty(false);
		throw e;
	}
}
public void save(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException,ValidationException {

	super.save(context);
	setCarryingThrough(false);
	resetTabs();
}
/**
 * Insert the method's description here.
 * Creation date: (06/06/2003 16.48.44)
 * @param newAnnoDiCompetenza boolean
 */
public void setAnnoDiCompetenza(boolean newAnnoDiCompetenza) {
	annoDiCompetenza = newAnnoDiCompetenza;
}
/**
 * Insert the method's description here.
 * Creation date: (02/07/2003 12.45.54)
 * @param newAnnoSolareInScrivania boolean
 */
public void setAnnoSolareInScrivania(boolean newAnnoSolareInScrivania) {
	annoSolareInScrivania = newAnnoSolareInScrivania;
}
/**
 * Insert the method's description here.
 * Creation date: (02/07/2003 12.45.54)
 * @param newCarryingThrough boolean
 */
public void setCarryingThrough(boolean newCarryingThrough) {
	carryingThrough = newCarryingThrough;
}
public void setIsDeleting(boolean newIsDeleting) {
	isDeleting = newIsDeleting;
}
/**
 * Insert the method's description here.
 * Creation date: (02/07/2003 12.45.54)
 * @param newRiportaAvantiIndietro boolean
 */
public void setRiportaAvantiIndietro(boolean newRiportaAvantiIndietro) {
	riportaAvantiIndietro = newRiportaAvantiIndietro;
}
/**
 * Imposta un savepoint che consente di salvare le modifiche apportate al doc. amministrativo fino a quel momento
 * in modo che se gli aggiornamenti apportati al compenso non venissero confermati (rollback), comunque non verrebbero persi
 * anche quelli del documento amministrativo.
 *
 * Pre-post-conditions:
 *
 * Nome: Imposta savePoint
 * Pre:  Una richiesta di impostare un savepoint e' stata generata 
 * Post: Un savepoint e' stato impostato in modo che le modifiche apportate al doc. amministrativo vengono consolidate
 *
 * @param	context			il Context che ha generato la richiesta
 * @param	savePointName	il nome del savePoint
 *
 */	
public void setSavePoint(ActionContext context, String savePointName) throws BusinessProcessException{

	try {

		DocumentoGenericoComponentSession sess = (DocumentoGenericoComponentSession)createComponentSession();
		sess.setSavePoint(context.getUserContext(), savePointName);

	} catch (java.rmi.RemoteException e) {
			throw handleException(e);
	} catch (it.cnr.jada.comp.ComponentException e) {
			throw handleException(e);
	}
}
/**
 * Imposta il valore della proprietà 'userConfirm'
 *
 * @param newUserConfirm	Il valore da assegnare a 'userConfirm'
 */
public void setUserConfirm(it.cnr.contab.doccont00.core.bulk.OptionRequestParameter newUserConfirm) {
	userConfirm = newUserConfirm;
}
public void update(it.cnr.jada.action.ActionContext context)
	throws	it.cnr.jada.action.BusinessProcessException {
		
	try {
		getModel().setToBeUpdated();
		setModel(
				context,
				((DocumentoGenericoComponentSession)createComponentSession()).modificaConBulk(
																			context.getUserContext(),
																			getModel(),
																			getUserConfirm()));
	} catch(Exception e) {
		throw handleException(e);
	} finally {
		setUserConfirm(null);
	}
}
/**
  * Validazione dell'obbligazione in fase di creazione di una nuova obbligazione
  * o modifica di una già creata.
  * Il metodo viene chiamato sul riporta dell'Obbligazione in modo da validare
  * istantaneamente l'oggetto creato.
  * Chi non ne ha bisogno lo lasci vuoto.
  *
**/
public void validaObbligazionePerDocAmm(ActionContext context, it.cnr.jada.bulk.OggettoBulk bulk) throws BusinessProcessException {
	return;
}
protected void writeToolbar(javax.servlet.jsp.JspWriter writer,it.cnr.jada.util.jsp.Button[] buttons) throws java.io.IOException,javax.servlet.ServletException {

	it.cnr.jada.util.jsp.Button riportaAvantiButton = buttons[buttons.length-1];
	riportaAvantiButton.setSeparator(isRiportaIndietroButtonHidden() && !isRiportaAvantiButtonHidden());
	super.writeToolbar(writer, buttons);
	writeInventarioToolbar(writer);
}
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;
}

public void sdoppiaDettaglioInAutomatico(ActionContext context) throws ValidationException,BusinessProcessException {
	try {
    	it.cnr.contab.doccont00.ejb.AccertamentoAbstractComponentSession h= it.cnr.contab.doccont00.bp.CRUDVirtualAccertamentoBP.getVirtualComponentSession(context, true);
		DocumentoGenericoComponentSession session = (DocumentoGenericoComponentSession)createComponentSession();
		Documento_genericoBulk documento = (Documento_genericoBulk)getModel();
		Documento_generico_rigaBulk dettaglioSelezionato = (Documento_generico_rigaBulk)getDettaglio().getModel();
		Accertamento_scadenzarioBulk scadenzaNuova = null;
		
        if (dettaglioSelezionato==null) return;
        if (documento.getStato_cofi() != null && documento.getStato_cofi().equals(documento.STATO_PAGATO))
       		setMessage("Non è possibile sdoppiare righe in un documento pagato");
         if (dettaglioSelezionato.getIm_riga()==null){
        	setMessage("Non è possibile sdoppiare righe in cui l'importo di origine non è valorizzato");
        	return;
         }
        if (dettaglioSelezionato.getIm_riga_sdoppia()==null ||
        	dettaglioSelezionato.getIm_riga_sdoppia().equals(Utility.ZERO) ||
       		dettaglioSelezionato.getIm_riga_sdoppia().compareTo(dettaglioSelezionato.getIm_riga())!=-1) {
       		setMessage("L'importo nuovo della riga da sdoppiare deve essere positivo ed inferiore " + 
       				   "all'importo originario del riga stessa");
        	return;
        }        	

        Accertamento_scadenzarioBulk scadenzaVecchia = dettaglioSelezionato.getAccertamento_scadenziario();

		java.math.BigDecimal newImportoRigaVecchia = dettaglioSelezionato.getIm_riga_sdoppia(); 
		java.math.BigDecimal newImportoRigaNuova = dettaglioSelezionato.getIm_riga().subtract(dettaglioSelezionato.getIm_riga_sdoppia()); 

		if (dettaglioSelezionato.getAccertamento_scadenziario()!=null) {
			/*
			 * L'importo della scadenza vecchia sarà pari al valore iniziale diminuito del valore originario del 
			 * dettaglio e aumentato del valore nuovo.
			 * Ciò al fine di gestire il caso di utenti che collegano più dettagli di documento alla stessa scadenza 
			 */ 
        	scadenzaNuova=(Accertamento_scadenzarioBulk) h.sdoppiaScadenzaInAutomatico(context.getUserContext(),
								                                                       scadenzaVecchia,
																					   scadenzaVecchia.getIm_scadenza().subtract(Utility.nvl(dettaglioSelezionato.getIm_riga())).add(Utility.nvl(dettaglioSelezionato.getIm_riga_sdoppia())));

			//ricarico l'accertamento e recupero i riferimenti alle scadenze
        	AccertamentoBulk accertamento = (AccertamentoBulk)h.inizializzaBulkPerModifica(context.getUserContext(),
																						   scadenzaNuova.getAccertamento());

			if (!accertamento.getAccertamento_scadenzarioColl().containsByPrimaryKey(scadenzaVecchia) ||
				!accertamento.getAccertamento_scadenzarioColl().containsByPrimaryKey(scadenzaNuova)) 
        		throw new ValidationException("Errore nello sdoppiamento della scadenza dell'accertamento.");

        	scadenzaVecchia = (Accertamento_scadenzarioBulk)accertamento.getAccertamento_scadenzarioColl().get(accertamento.getAccertamento_scadenzarioColl().indexOfByPrimaryKey(scadenzaVecchia));
       	 	scadenzaNuova = (Accertamento_scadenzarioBulk)accertamento.getAccertamento_scadenzarioColl().get(accertamento.getAccertamento_scadenzarioColl().indexOfByPrimaryKey(scadenzaNuova));
        }

		//creo la nuova riga di dettaglio e la associo al documento
		Documento_generico_rigaBulk nuovoDettaglio = new Documento_generico_rigaBulk();
		getDettaglio().addDetail(nuovoDettaglio);
		nuovoDettaglio = copyByRigaDocumento(context, nuovoDettaglio, dettaglioSelezionato);

		//Aggiorno la vecchia riga di dettaglio ed in particolare l'importo della riga da sdoppiare 
		//del doc amministrativo
    	dettaglioSelezionato.setIm_riga(newImportoRigaVecchia);
    	dettaglioSelezionato.setIm_riga_divisa(newImportoRigaVecchia);
    	dettaglioSelezionato.setToBeUpdated();

		if (scadenzaVecchia!=null) {
    		dettaglioSelezionato.setAccertamento_scadenziario(scadenzaVecchia);
			documento.addToDefferredSaldi(scadenzaVecchia.getAccertamento(), scadenzaVecchia.getAccertamento().getSaldiInfo());
		}
		if (scadenzaNuova!=null) {
			BulkList selectedModels = new BulkList();
			selectedModels.add(nuovoDettaglio);
			documento = session.contabilizzaDettagliSelezionati(context.getUserContext(), documento, selectedModels, scadenzaNuova);
	        documento.addToDefferredSaldi(scadenzaNuova.getAccertamento(), scadenzaNuova.getAccertamento().getSaldiInfo());
		}

		documento = (Documento_genericoBulk)session.rebuildDocumento(context.getUserContext(),
																     documento);

        getAccertamentiController().getSelection().clear();
        getAccertamentiController().setModelIndex(context, -1);
        getAccertamentiController().setModelIndex(
            context,
            it.cnr.jada.bulk.BulkCollections.indexOfByPrimaryKey(getAccertamentiController().getDetails(), dettaglioSelezionato));

		documento.setDetailDoubled(true);
        setModel(context, documento);
	} catch(Exception e) {
		throw handleException(e);
	}
}
private Documento_generico_rigaBulk copyByRigaDocumento(ActionContext context, Documento_generico_rigaBulk nuovoDettaglio, Documento_generico_rigaBulk origine){
	//associo la riga creata al documento
	origine.setUser( context.getUserContext().getUser() );
	if (origine.getTerzo()!=null)
		nuovoDettaglio.setTerzo((TerzoBulk)origine.getTerzo().clone());
	if (origine.getTerzo_uo_cds()!=null)
		nuovoDettaglio.setTerzo_uo_cds((TerzoBulk)origine.getTerzo_uo_cds().clone());
	if (origine.getAnagrafico()!=null)
		nuovoDettaglio.setAnagrafico((AnagraficoBulk)origine.getAnagrafico().clone());
	if (origine.getCessionario()!=null)
		nuovoDettaglio.setCessionario((TerzoBulk)origine.getCessionario().clone());
	if (origine.getTermini_pagamento()!=null)
		nuovoDettaglio.setTermini_pagamento((Rif_termini_pagamentoBulk)origine.getTermini_pagamento().clone());
	if (origine.getTermini_pagamento_uo_cds()!=null)
		nuovoDettaglio.setTermini_pagamento_uo_cds((Rif_termini_pagamentoBulk)origine.getTermini_pagamento_uo_cds().clone());
	nuovoDettaglio.setModalita(origine.getModalita());
	nuovoDettaglio.setModalita_uo_cds( origine.getModalita_uo_cds());
	if (origine.getModalita_pagamento()!=null)
		nuovoDettaglio.setModalita_pagamento((Rif_modalita_pagamentoBulk)origine.getModalita_pagamento().clone());
	if (origine.getModalita_pagamento_uo_cds()!=null)
		nuovoDettaglio.setModalita_pagamento_uo_cds((Rif_modalita_pagamentoBulk)origine.getModalita_pagamento_uo_cds().clone());
	if (origine.getBanca()!=null)
		nuovoDettaglio.setBanca((BancaBulk)origine.getBanca().clone());
	if (origine.getBanca_uo_cds()!=null)
		nuovoDettaglio.setBanca_uo_cds((BancaBulk)origine.getBanca_uo_cds().clone());        	
	nuovoDettaglio.setRagione_sociale( origine.getRagione_sociale());
	nuovoDettaglio.setEsercizio( origine.getEsercizio());
	nuovoDettaglio.setCd_cds( origine.getCd_cds());
	nuovoDettaglio.setCd_unita_organizzativa( origine.getCd_unita_organizzativa());
	nuovoDettaglio.setCd_tipo_documento_amm( origine.getCd_tipo_documento_amm() );
	nuovoDettaglio.setStato_cofi( origine.getStato_cofi() );
	nuovoDettaglio.setDt_da_competenza_coge(origine.getDt_da_competenza_coge());
	nuovoDettaglio.setDt_a_competenza_coge(origine.getDt_a_competenza_coge());
	nuovoDettaglio.setDs_riga( origine.getDs_riga());
	nuovoDettaglio.setCd_modalita_pag( origine.getCd_modalita_pag());
	nuovoDettaglio.setCd_modalita_pag_uo_cds( origine.getCd_modalita_pag_uo_cds());
	nuovoDettaglio.setNome( origine.getNome());
	nuovoDettaglio.setCognome( origine.getCognome());
	nuovoDettaglio.setCodice_fiscale( origine.getCodice_fiscale());
	nuovoDettaglio.setPartita_iva( origine.getPartita_iva());
	nuovoDettaglio.setIm_riga( origine.getIm_riga().subtract(origine.getIm_riga_sdoppia()));
	nuovoDettaglio.setIm_riga_divisa( origine.getIm_riga().subtract(origine.getIm_riga_sdoppia()));
	nuovoDettaglio.setPg_banca( origine.getPg_banca());
	nuovoDettaglio.setPg_banca_uo_cds( origine.getPg_banca_uo_cds());
	nuovoDettaglio.setTi_associato_manrev(origine.getTi_associato_manrev());
	nuovoDettaglio.setToBeCreated();
	return nuovoDettaglio;
}
/**
 * Boolean
 *   individua le condizioni per cui è possibile sdoppiare i dettagli del 
 *   documento
 *   
 *   false: - se annullato
 * 		    - se eliminato
 * 		    - se interamente incassato
 * 		    - se, indipendentemente dall'anno, è stata riportata all'esercizio successivo 
 * 		    - se non di anno corrente e non riportata all'esercizio successivo 
 *
 * @return Returns the isDetailDoubleable.
 */
public boolean isDetailDoubleable() {
	Documento_genericoBulk doc= (Documento_genericoBulk)getModel();
	return (!super.isInputReadonly() && 
			!isModelVoided() && 
			!isDeleting() &&
			!(doc!=null && doc.getStato_cofi()!=null && doc.isPagata()) &&
			!(doc.isRiportata()) &&
			!(!isAnnoDiCompetenza() && !doc.isRiportataInScrivania()) &&
			!(doc.getTipo_documento()!=null && !doc.getTipo_documento().getFl_utilizzo_doc_generico().booleanValue())) && !this.isSearching();	
}
/**
 * Boolean 
 *   true: è in corso lo sdoppiamento di una riga di dettaglio
 *
 * @return Returns the isDetailDoubling.
 */
public boolean isDetailDoubling() {
	return isDetailDoubling;
}
/**
 * Setta lo stato del BP impostandolo in "Sdoppiamento riga di dettaglio"
 * @param isDetailDoubling The isDetailDoubling to set.
 */
public void setDetailDoubling(boolean isDetailDoubling) {
	this.isDetailDoubling = isDetailDoubling;
}
public void writeInventarioToolbar(javax.servlet.jsp.JspWriter writer) throws java.io.IOException,javax.servlet.ServletException {

	if (!isSearching() && !isDeleting()) {
		if (this.getParentRoot().isBootstrap()) {
			writer.println("");
			writer.println("
"); JSPUtils.toolbarBootstrap(writer, Arrays.asList(createInventarioToolbar()), this); writer.println("
"); writer.println(""); } else { openToolbar(writer); it.cnr.jada.util.jsp.JSPUtils.toolbar(writer,createInventarioToolbar(),this, this.getParentRoot().isBootstrap()); closeToolbar(writer); } } } protected it.cnr.jada.util.jsp.Button[] createInventarioToolbar() { it.cnr.jada.util.jsp.Button[] toolbar = new it.cnr.jada.util.jsp.Button[3]; int i = 0; toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()),"CRUDToolbar.inventaria"); toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()),"CRUDToolbar.associaInventario"); toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()),"CRUDToolbar.beni_coll"); return toolbar; } public boolean isAssociaInventarioButtonEnabled() { return (isEditing()||isInserting()); } public boolean isAssociaInventarioButtonHidden() { return isSearching() || isDeleting(); } public boolean isInventariaButtonEnabled() { return (isEditing()||isInserting()); } public boolean isInventariaButtonHidden() { return isSearching() || isDeleting(); } public boolean isInventariaPerAumentoButtonEnabled() { return (isEditing()||isInserting()); /*getModel() != null && !getDettaglio().getDetails().isEmpty() && !((Documento_genericoBulk)getModel()).isGenerataDaCompenso() && (isAnnoDiCompetenza())*/ } public boolean isInventariaPerAumentoButtonHidden() { return isSearching() || isDeleting(); } public boolean isBeni_collButtonEnabled() { Documento_genericoBulk doc=(Documento_genericoBulk) getModel(); if (doc.getHa_beniColl()==null) return false; else return getModel() != null && !getDettaglio().getDetails().isEmpty() && (doc.getHa_beniColl().booleanValue()); } public boolean isBeni_collButtonHidden() { return isSearching() || isDeleting(); } public boolean isROBank_ModPag(Documento_generico_rigaBulk riga) { if(riga!=null && (riga.getStato_cofi().equals(Documento_generico_rigaBulk.STATO_CONTABILIZZATO))) return false; return isInputReadonly(); } public boolean isROBank(Documento_generico_rigaBulk riga) { if(isROBank_ModPag(riga) || isContoEnte() ) return true; return isInputReadonly(); } public boolean isContoEnte() { return contoEnte; } public void setContoEnte(boolean contoEnte) { this.contoEnte = contoEnte; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy