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

it.cnr.contab.doccont00.bp.CRUDObbligazioneBP 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 it.cnr.contab.anagraf00.core.bulk.TerzoBulk;
import it.cnr.contab.compensi00.docs.bulk.CompensoBulk;
import it.cnr.contab.config00.bulk.Parametri_cnrBulk;
import it.cnr.contab.config00.contratto.bulk.ContrattoBulk;
import it.cnr.contab.config00.ejb.CDRComponentSession;
import it.cnr.contab.config00.ejb.Configurazione_cnrComponentSession;
import it.cnr.contab.config00.pdcfin.bulk.Voce_fBulk;
import it.cnr.contab.config00.sto.bulk.CdrBulk;
import it.cnr.contab.docamm00.bp.*;
import it.cnr.contab.docamm00.docs.bulk.Documento_genericoBulk;
import it.cnr.contab.docamm00.docs.bulk.Fattura_passiva_IBulk;
import it.cnr.contab.docamm00.docs.bulk.Nota_di_credito_attivaBulk;
import it.cnr.contab.doccont00.core.bulk.*;
import it.cnr.contab.doccont00.ejb.ObbligazioneComponentSession;
import it.cnr.contab.doccont00.ejb.ObbligazioneResComponentSession;
import it.cnr.contab.incarichi00.bulk.Incarichi_repertorioBulk;
import it.cnr.contab.missioni00.bp.CRUDAnticipoBP;
import it.cnr.contab.missioni00.bp.CRUDMissioneBP;
import it.cnr.contab.missioni00.docs.bulk.AnticipoBulk;
import it.cnr.contab.missioni00.docs.bulk.MissioneBulk;
import it.cnr.contab.prevent00.bulk.V_assestatoBulk;
import it.cnr.contab.utenze00.bp.CNRUserContext;
import it.cnr.contab.util.Utility;
import it.cnr.jada.action.ActionContext;
import it.cnr.jada.action.BusinessProcessException;
import it.cnr.jada.action.MessageToUser;
import it.cnr.jada.bulk.BulkList;
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.bulk.ValidationException;
import it.cnr.jada.util.RemoteIterator;
import it.cnr.jada.util.action.SimpleDetailCRUDController;
import it.cnr.jada.util.ejb.EJBCommonServices;
import it.cnr.jada.util.jsp.Button;

import java.util.*;

/**
 * Business Process che gestisce le attività di CRUD per l'entita' Obbligazione
 */

public class CRUDObbligazioneBP extends CRUDVirtualObbligazioneBP {
    private final SimpleDetailCRUDController capitoliDiSpesaCds = new SimpleDetailCRUDController("CapitoliDiSpesaCds", Voce_fBulk.class, "capitoliDiSpesaCdsColl", this);
    private final SimpleDetailCRUDController centriDiResponsabilita = new SimpleDetailCRUDController("CentriDiResponsabilita", CdrBulk.class, "cdrColl", this);
    private final SimpleDetailCRUDController lineeDiAttivita = new SimpleDetailCRUDController("LineeDiAttivita", V_pdg_obbligazione_speBulk.class, "lineeAttivitaColl", this);
    private final SimpleDetailCRUDController nuoveLineeDiAttivita = new SimpleDetailCRUDController("NuoveLineeDiAttivita", Linea_attivitaBulk.class, "nuoveLineeAttivitaColl", this);
    private final CRUDScadenzeController scadenzario = new CRUDScadenzeController("Scadenzario", Obbligazione_scadenzarioBulk.class, "obbligazione_scadenzarioColl", this);
    private final SimpleDetailCRUDController scadenzarioDettaglio = new SimpleDetailCRUDController("ScadenzarioDettaglio", Obbligazione_scad_voceBulk.class, "obbligazione_scad_voceColl", scadenzario);
    private final SimpleDetailCRUDController aggregatoPerCdr = new SimpleDetailCRUDController("AggregatoPerCdr", Obbligazione_scad_voce_aggregatoBulk.class, "cdrAggregatoColl", this);
    private final SimpleDetailCRUDController aggregatoPerCapitolo = new SimpleDetailCRUDController("AggregatoPerCapitolo", Obbligazione_scad_voce_aggregatoBulk.class, "capitoliAggregatoColl", this);

    // "editingScadenza" viene messo a True solo quando si modifica una scadenza (bottone "editing scadenza")
    private boolean editingScadenza = false;
    private boolean bringBackWithoutCommit = false;
    private java.util.List vociSelezionate;
    private boolean siope_attiva = false;
    private boolean incarichi_repertorio_attiva = false;
    private boolean flNuovoPdg = false;
    private boolean enableVoceNext = false;

    private byte[] bringBackClone = null;

    public CRUDObbligazioneBP() {
        super();
        setTab("tab", "tabObbligazione");
        setTab("tabScadenzario", "tabScadenza");
    }

    public CRUDObbligazioneBP(String function) {
        super(function);

        setTab("tab", "tabObbligazione");
        setTab("tabScadenzario", "tabScadenza");
    }

    /**
     * Predispongo l'inserimento di una nuova scadenza dopo la selezione del bottone Nuovo della table Scadenze
     *
     * @param context Il contesto dell'azione
     */

    public void addScadenza(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException, ValidationException {
        editingScadenza = true;            // inizio modalita' inserimento scadenza
        setTab("tab", "tabScadenzario");
        setTab("tabScadenzario", "tabScadenza");
        getScadenzario().add(context);


    }

    /**
     * Gestisce l'annullamento dell'imputazione finanziaria
     *
     * @param context Il contesto dell'azione
     */

    public void annullaImputazioneFinanziariaCapitoli(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
        try {
            annullaImputazioneFinanziariaCdr(context);
            ObbligazioneBulk obbligazione = (ObbligazioneBulk) getModel();
            obbligazione.setCapitoliDiSpesaCdsColl(Collections.EMPTY_LIST);
            obbligazione.setCapitoliDiSpesaCdsSelezionatiColl(Collections.EMPTY_LIST);
            getCapitoliDiSpesaCds().getSelection().clear();
            setModel(context, obbligazione);
            resyncChildren(context);
            obbligazione.setInternalStatus(ObbligazioneBulk.INT_STATO_TESTATA_CONFERMATA);

        } catch (Exception e) {
            throw handleException(e);
        }
    }

    /**
     * Gestisce l'annullamento dell'imputazione finanziaria
     *
     * @param context Il contesto dell'azione
     */

    private void annullaImputazioneFinanziariaCdr(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
        try {
            annullaImputazioneFinanziariaLatt(context);
            ObbligazioneBulk obbligazione = (ObbligazioneBulk) getModel();
            obbligazione.setCdrColl(Collections.EMPTY_LIST);
            obbligazione.setCdrSelezionatiColl(Collections.EMPTY_LIST);
            getCentriDiResponsabilita().getSelection().clear();
            setModel(context, obbligazione);
            resyncChildren(context);
            obbligazione.setInternalStatus(ObbligazioneBulk.INT_STATO_CAPITOLI_CONFERMATI);

        } catch (Exception e) {
            throw handleException(e);
        }
    }

    /**
     * Gestisce l'annullamento dell'imputazione finanziaria
     *
     * @param context Il contesto dell'azione
     */

    private void annullaImputazioneFinanziariaDettagli(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
        try {
            ObbligazioneBulk obbligazione = (ObbligazioneBulk) getModel();
            Obbligazione_scad_voceBulk osv;
            Obbligazione_scadenzarioBulk os;
            for (Iterator i = obbligazione.getObbligazione_scadenzarioColl().iterator(); i.hasNext(); ) {
                os = (Obbligazione_scadenzarioBulk) i.next();
                for (int index = os.getObbligazione_scad_voceColl().size() - 1; index >= 0; index--) {
                    osv = (Obbligazione_scad_voceBulk) os.getObbligazione_scad_voceColl().get(index);
                    osv.setToBeDeleted();
                    os.getObbligazione_scad_voceColl().remove(index);
                }
            }
        } catch (Exception e) {
            throw handleException(e);
        }
    }

    /**
     * Valida il contratto riportato.
     *
     * @param context Il contesto dell'azione
     */
    public void validaContratto(it.cnr.jada.action.ActionContext context, ContrattoBulk contratto) throws it.cnr.jada.action.BusinessProcessException, it.cnr.jada.action.MessageToUser {
        try {
            ObbligazioneBulk obbligazione = ((ObbligazioneBulk) getModel());
            ((ObbligazioneComponentSession) createComponentSession()).validaContratto(context.getUserContext(), obbligazione, contratto, null);
        } catch (Exception e) {
            throw handleException(e);
        }
    }

    /**
     * Gestisce l'annullamento dell'imputazione finanziaria
     *
     * @param context Il contesto dell'azione
     */

    private void annullaImputazioneFinanziariaLatt(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
        try {
            ObbligazioneBulk obbligazione = (ObbligazioneBulk) getModel();
            obbligazione.setLineeAttivitaColl(Collections.EMPTY_LIST);
            obbligazione.setLineeAttivitaSelezionateColl(Collections.EMPTY_LIST);
            obbligazione.setNuoveLineeAttivitaColl(new BulkList());
            getLineeDiAttivita().getSelection().clear();
            annullaImputazioneFinanziariaDettagli(context);
            setModel(context, obbligazione);
            resyncChildren(context);
            obbligazione.setInternalStatus(ObbligazioneBulk.INT_STATO_CDR_CONFERMATI);
        } catch (Exception e) {
            throw handleException(e);
        }
    }

    /**
     * Metodo per disabilitare tutti i campi, nel caso l'obbligazione pgiro sia stato cancellato ( come se fosse in stato di visualizzazione )
     */
    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 (obb != null && obb.getDt_cancellazione() != null) {
                setStatus(VIEW);
//			if ( obb.getDt_cancellazione() != null )
                setMessage("L'impegno è stata cancellato. Non consentita la modifica.");
/*			else if ( "Y".equals(obb.getRiportato()) )
				setMessage("L'obbligazione è stata riportata all'esercizio successivo. Non consentita la modifica.");*/

            }
        }
    }

    /**
     * Gestisce il cambio del flag imputazione finanziaria automatica o manuale
     * dell'obbligazione.
     *
     * @param context Il contesto dell'azione
     */

    public void cambiaFl_calcolo_automatico(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
        try {
            ObbligazioneBulk obbligazione = ((ObbligazioneBulk) getModel());
            if (obbligazione.getFl_calcolo_automatico().booleanValue())
                obbligazione = ((ObbligazioneComponentSession) createComponentSession()).generaDettagliScadenzaObbligazione(context.getUserContext(), obbligazione, null);
            setModel(context, obbligazione);
            resyncChildren(context);
        } catch (Exception e) {
            throw handleException(e);
        }
    }

    /**
     * Gestisce il caricamento dei capitoli di spesa.
     *
     * @param context Il contesto dell'azione
     */

    public void caricaCapitoliDiSpesaCDS(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
        try {
            annullaImputazioneFinanziariaCapitoli(context);
            ObbligazioneBulk obbligazione = ((ObbligazioneComponentSession) createComponentSession()).listaCapitoliPerCdsVoce(context.getUserContext(), (ObbligazioneBulk) getModel());
            setModel(context, obbligazione);
        } catch (Exception e) {
            throw handleException(e);
        }
    }

    /**
     * Gestisce il caricamento dei centri di responsabilità.
     *
     * @param context Il contesto dell'azione
     */

    public void caricaCentriDiResponsabilita(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
        try {
            annullaImputazioneFinanziariaCapitoli(context);
            ObbligazioneBulk obbligazione = (ObbligazioneBulk) getModel();
            if (this.isFlNuovoPdg()) {
                annullaImputazioneFinanziariaCdr(context);
                obbligazione.setCapitoliDiSpesaCdsSelezionatiColl(Arrays.asList(obbligazione.getElemento_voce()));
                CDRComponentSession sessCDR = (CDRComponentSession) it.cnr.jada.util.ejb.EJBCommonServices.createEJB("CNRCONFIG00_EJB_CDRComponentSession", CDRComponentSession.class);
                List listaAssestato = ((ObbligazioneComponentSession) createComponentSession()).listaAssestatoSpese(context.getUserContext(), obbligazione);
                if (!listaAssestato.isEmpty()) {
                    obbligazione.setCdrColl(new ArrayList());
                    for (V_assestatoBulk v_assestatoBulk : listaAssestato) {
                        CdrBulk cdrBulk = (CdrBulk) sessCDR.findByPrimaryKey(context.getUserContext(), new CdrBulk(v_assestatoBulk.getCd_centro_responsabilita()));
                        if (!obbligazione.getCdrColl().contains(cdrBulk))
                            obbligazione.getCdrColl().add(cdrBulk);
                    }
                }
            } else {
                obbligazione = ((ObbligazioneComponentSession) createComponentSession()).listaCapitoliPerCdsVoce(context.getUserContext(), obbligazione);
                annullaImputazioneFinanziariaCdr(context);
                Vector capitoli = new Vector(obbligazione.getCapitoliDiSpesaCdsColl());
                if (capitoli.size() == 0)
                    throw new MessageToUser("Nessun capitolo selezionato");
                obbligazione = ((ObbligazioneBulk) getModel());
                obbligazione.setCapitoliDiSpesaCdsSelezionatiColl(capitoli);
                Vector cdr = ((ObbligazioneComponentSession) createComponentSession()).listaCdrPerCapitoli(context.getUserContext(), obbligazione);
                obbligazione.setCdrColl(cdr);
            }
            obbligazione.setLineeAttivitaColl(Collections.EMPTY_LIST);
//		setModel( obbligazione );
            obbligazione.setInternalStatus(ObbligazioneBulk.INT_STATO_CAPITOLI_CONFERMATI);
            resyncChildren(context);
        } catch (Exception e) {
            throw handleException(e);
        }
    }

    /**
     * Gestisce il caricamento delle linee di attività.
     *
     * @param context Il contesto dell'azione
     */

    public void caricaLineeAttivita(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
        try {
            ObbligazioneBulk obbligazione = ((ObbligazioneComponentSession) createComponentSession()).listaCapitoliPerCdsVoce(context.getUserContext(), (ObbligazioneBulk) getModel());
            annullaImputazioneFinanziariaLatt(context);
            Vector capitoli = new Vector(obbligazione.getCapitoliDiSpesaCdsColl());
            Vector cdr = new Vector(getCentriDiResponsabilita().getSelectedModels(context));
            if (cdr.size() == 0)
                throw new MessageToUser("E' necessario selezionare almeno un CdR");
            obbligazione = ((ObbligazioneBulk) getModel());
            //obbligazione.setCapitoliDiSpesaCdsSelezionatiColl( capitoli );
            obbligazione.setCdrSelezionatiColl(cdr);
            Vector lineeAttivita = ((ObbligazioneComponentSession) createComponentSession()).listaLineeAttivitaPerCapitoliCdr(context.getUserContext(), obbligazione);
            obbligazione.setLineeAttivitaColl(lineeAttivita);
            obbligazione.setInternalStatus(ObbligazioneBulk.INT_STATO_CDR_CONFERMATI);
//		setModel( obbligazione );
            resyncChildren(context);
        } catch (Exception e) {
            throw handleException(e);
        }
    }

    /**
     * Metodo utilizzato per la conferma dei dati selezionati o immessi, relativi
     * alle linee di attività.
     *
     * @param context Il contesto dell'azione
     */

    public void confermaLineeAttivita(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
        try {
            ObbligazioneBulk obbligazione = ((ObbligazioneBulk) getModel());
            Vector latt = new Vector(getLineeDiAttivita().getSelectedModels(context));
            obbligazione.setLineeAttivitaSelezionateColl(latt);
            BulkList nuoveLatt = new BulkList(getNuoveLineeDiAttivita().getDetails());
            for (Iterator i = nuoveLatt.iterator(); i.hasNext(); ) {
                ((Linea_attivitaBulk) i.next()).validate();
            }
            obbligazione.setNuoveLineeAttivitaColl(nuoveLatt);

            ObbligazioneBulk newObbligazione = ((ObbligazioneComponentSession) createComponentSession()).generaDettagliScadenzaObbligazione(context.getUserContext(), obbligazione, null);

            try {
                ((ObbligazioneComponentSession) createComponentSession()).validaImputazioneFinanziaria(context.getUserContext(), newObbligazione);
                obbligazione = newObbligazione;
            } catch (Exception e) {
                obbligazione.setLineeAttivitaSelezionateColl(Collections.EMPTY_LIST);
                obbligazione.setNuoveLineeAttivitaColl(new BulkList());
                obbligazione.setInternalStatus(ObbligazioneBulk.INT_STATO_CDR_CONFERMATI);
                throw handleException(e);
            }

            //		getLineeDiAttivita().setSelection( ((Vector)obbligazione.getLineeAttivitaSelezionateColl()).elements());
            setModel(context, obbligazione);
            obbligazione.setInternalStatus(ObbligazioneBulk.INT_STATO_LATT_CONFERMATE);
            resyncChildren(context);
        } catch (ValidationException e) {
            throw new MessageToUser(e.getMessage());
        } catch (Exception e) {
            throw handleException(e);
        }
    }

    /**
     * Metodo utilizzato per la conferma dei dati selezionati o immessi, relativi
     * alla scadenza.
     *
     * @param context Il contesto dell'azione
     */
    protected void validaScadenza(ObbligazioneBulk obbligazione, Obbligazione_scadenzarioBulk ob_scadenzario) throws it.cnr.jada.action.BusinessProcessException {
        try {
            ob_scadenzario.validate();
            obbligazione.validaNuoveLatt();

            //se provengo da BP dei doc amm imposto il flag fromDocAmm a true
            if (IDocumentoAmministrativoBP.class.isAssignableFrom(getParent().getClass())) {
                IDocumentoAmministrativoBP docAmmBP = (IDocumentoAmministrativoBP) getParent();
                obbligazione.setFromDocAmm(true);
                obbligazione.updateScadenzeFromDocAmm(docAmmBP.getDocumentoAmministrativoCorrente().getObbligazioniHash());
            } else
                obbligazione.setFromDocAmm(false);

        } catch (ValidationException e) {
            throw new MessageToUser(e.getMessage());
        } catch (Exception e) {
            throw handleException(e);
        }
    }

    /**
     * Metodo utilizzato per la conferma dei dati selezionati o immessi, relativi
     * alla scadenza.
     *
     * @param context Il contesto dell'azione
     */
    public void confermaScadenza(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
        try {
            Obbligazione_scadenzarioBulk ob_scadenzario = (Obbligazione_scadenzarioBulk) getScadenzario().getModel();
            ObbligazioneBulk obbligazione = (ObbligazioneBulk) getModel();
            validaScadenza(obbligazione, ob_scadenzario);

            ObbligazioneComponentSession session = (ObbligazioneComponentSession) createComponentSession();
            obbligazione = session.verificaScadenzarioObbligazione(context.getUserContext(), ob_scadenzario);
            setModel(context, obbligazione);
            editingScadenza = false;
        } catch (Exception e) {
            throw handleException(e);
        }
    }

    /**
     * Gestisce la copia dell'obbligazione.
     *
     * @param context Il contesto dell'azione
     */

    public void copiaObbligazione(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
        try {
            ObbligazioneBulk nuovaObbligazione = (ObbligazioneBulk) ((ObbligazioneBulk) getModel()).clona(this, context);
            nuovaObbligazione = (ObbligazioneBulk) createComponentSession().inizializzaBulkPerInserimento(context.getUserContext(), nuovaObbligazione);
            nuovaObbligazione.setUser(context.getUserInfo().getUserid());
            setModel(context, nuovaObbligazione);
            nuovaObbligazione.setInternalStatus(ObbligazioneBulk.INT_STATO_LATT_CONFERMATE);
            setStatus(INSERT);
            resyncChildren(context);
            setTab("tab", "tabObbligazione");
            setTab("tabScadenzario", "tabScadenza");
        } catch (Exception e) {
            throw handleException(e);
        }
    }

    /**
     * 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 + 3];
        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.copia");
        newToolbar[toolbar.length + 1] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()), "Toolbar.creamandato");
        newToolbar[toolbar.length + 2] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()), "Toolbar.modimpegno");
        return newToolbar;
    }

    public void delete(ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
        int crudStatus = getModel().getCrudStatus();
        try {
            ObbligazioneBulk obbligazione = (ObbligazioneBulk) getModel();
            if (obbligazione.getStato_obbligazione().equals(ObbligazioneBulk.STATO_OBB_PROVVISORIO)) {
                ((ObbligazioneComponentSession) createComponentSession()).cancellaObbligazioneProvvisoria(context.getUserContext(), (ObbligazioneBulk) getModel());
                reset(context);
                setMessage("Cancellazione effettuata");
            }
            // si tratta di un annullamento
            else if (obbligazione.getStato_obbligazione().equals(ObbligazioneBulk.STATO_OBB_DEFINITIVO)) {
                obbligazione = ((ObbligazioneComponentSession) createComponentSession()).stornaObbligazioneDefinitiva(context.getUserContext(), (ObbligazioneBulk) getModel());
                setModel(context, obbligazione);
                setMessage("Annullamento effettuato");
            } else // stato = STORNATA
                throw new BusinessProcessException("Lo stato dell'impegno non ne consente la cancellazione/storno");

        } catch (Exception e) {
            getModel().setCrudStatus(crudStatus);
            throw handleException(e);
        }
    }

    /**
     * Gestisce un comando "Edit".
     *
     * @param context ActionContext in uso.
     * @param bulk    OggettoBulk in uso
     * @return Forward
     * @throws BusinessProcessException
     */

    public void edit(it.cnr.jada.action.ActionContext context, it.cnr.jada.bulk.OggettoBulk bulk, boolean initializeForEdit) throws it.cnr.jada.action.BusinessProcessException {
        editingScadenza = false;
        super.edit(context, bulk, initializeForEdit);
        ObbligazioneBulk obbligazione = (ObbligazioneBulk) getModel();
        getCapitoliDiSpesaCds().setSelection(
                Optional.ofNullable(obbligazione.getCapitoliDiSpesaCdsSelezionatiColl())
                        .filter(collection -> !collection.isEmpty())
                        .filter(Vector.class::isInstance)
                        .map(Vector.class::cast)
                        .map(vector -> vector.elements())
                        .orElse(Collections.emptyEnumeration())
        );
        getCentriDiResponsabilita().setSelection(
                Optional.ofNullable(obbligazione.getCdrSelezionatiColl())
                        .filter(collection -> !collection.isEmpty())
                        .filter(Vector.class::isInstance)
                        .map(Vector.class::cast)
                        .map(vector -> vector.elements())
                        .orElse(Collections.emptyEnumeration())
        );
        getLineeDiAttivita().setSelection(
                Optional.ofNullable(obbligazione.getLineeAttivitaSelezionateColl())
                        .filter(collection -> !collection.isEmpty())
                        .filter(Vector.class::isInstance)
                        .map(Vector.class::cast)
                        .map(vector -> vector.elements())
                        .orElse(Collections.emptyEnumeration())
        );

    }

    /**
     * @param context ActionContext in uso.
     * @throws BusinessProcessException
     */

    public void editaScadenza(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
        editingScadenza = true;                // Inizio modalita' modifica scadenza
        setTab("tab", "tabScadenzario");
        setTab("tabScadenzario", "tabScadenza");
        Obbligazione_scadenzarioBulk scad = (Obbligazione_scadenzarioBulk) getScadenzario().getModel();
        Obbligazione_scadenzarioBulk scadIniziale = new Obbligazione_scadenzarioBulk();
        scadIniziale.setIm_scadenza(scad.getIm_scadenza());
        scadIniziale.setDt_scadenza(scad.getDt_scadenza());
        scadIniziale.setDs_scadenza(scad.getDs_scadenza());
        scad.setScadenza_iniziale(scadIniziale);

    }

    /**
     * Metodo con cui si ottiene il valore della variabile aggregatoPerCapitolo
     * di tipo SimpleDetailCRUDController.
     *
     * @return it.cnr.jada.util.action.SimpleDetailCRUDController
     */
    public final it.cnr.jada.util.action.SimpleDetailCRUDController getAggregatoPerCapitolo() {
        return aggregatoPerCapitolo;
    }

    /**
     * Metodo con cui si ottiene il valore della variabile aggregatoPerCdr
     * di tipo SimpleDetailCRUDController.
     *
     * @return it.cnr.jada.util.action.SimpleDetailCRUDController
     */
    public final it.cnr.jada.util.action.SimpleDetailCRUDController getAggregatoPerCdr() {
        return aggregatoPerCdr;
    }

    public OggettoBulk getBringBackModel() {

        Obbligazione_scadenzarioBulk scadenzaSelezionata = (Obbligazione_scadenzarioBulk) scadenzario.getModel();
        if (scadenzaSelezionata == null)
            throw new MessageToUser("E' necessario selezionare uno scadenziario", ERROR_MESSAGE);

        if (getParent() != null) {
            if (getParent() instanceof IDocumentoAmministrativoBP) {
                IDocumentoAmministrativoBP docAmmBP = (IDocumentoAmministrativoBP) getParent();
                Obbligazione_scadenzarioBulk scadCorrente = docAmmBP.getObbligazione_scadenziario_corrente();
                if (scadCorrente != null) {
                    if ((docAmmBP instanceof CRUDNotaDiCreditoBP ||
                            docAmmBP instanceof CRUDNotaDiDebitoBP ||
                            docAmmBP instanceof CRUDNotaDiCreditoAttivaBP) &&
                            !scadCorrente.equalsByPrimaryKey(scadenzaSelezionata))
                        throw new MessageToUser("La scadenza che si sta tentando di riportare NON è corretta! Selezionare \"" + scadCorrente.getDs_scadenza() + "\"", ERROR_MESSAGE);
                    if (docAmmBP instanceof CRUDFatturaPassivaIBP) {
                        CRUDFatturaPassivaIBP fatturaPassivaBP = (CRUDFatturaPassivaIBP) docAmmBP;
                        Fattura_passiva_IBulk fatturaPassiva = (Fattura_passiva_IBulk) fatturaPassivaBP.getModel();
                        if (!scadCorrente.equalsByPrimaryKey(scadenzaSelezionata)) {
                            if (fatturaPassiva.hasStorni() || fatturaPassiva.hasAddebiti() || fatturaPassivaBP.isDeleting())
                                throw new MessageToUser("Non è possibile selezionare una diversa scadenza da quella associata al documento amministrativo, perché esso ha degli addebiti o degli storni associati! Selezionare la scadenza \"" + scadCorrente.getDs_scadenza() + "\".", ERROR_MESSAGE);
                            if (scadenzaSelezionata.getIm_associato_doc_amm() != null &&
                                    scadenzaSelezionata.getIm_associato_doc_amm().compareTo(new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP)) != 0 &&
                                    !fatturaPassivaBP.isDeleting()) {
                                if (!new Fattura_passiva_IBulk(
                                        scadenzaSelezionata.getCd_cds(),
                                        scadenzaSelezionata.getObbligazione().getCd_unita_organizzativa(),
                                        scadenzaSelezionata.getEsercizio_doc_passivo(),
                                        scadenzaSelezionata.getPg_doc_passivo()
                                ).equalsByPrimaryKey(fatturaPassiva))
                                    throw new MessageToUser("Non è possibile collegare la scadenza \"" + scadenzaSelezionata.getDs_scadenza() + "\" perchè è già associata ad altri documenti amministrativi.", ERROR_MESSAGE);
                            }
                        }
                    } else if (docAmmBP instanceof CRUDNotaDiCreditoAttivaBP) {
                        CRUDNotaDiCreditoAttivaBP ncaBP = (CRUDNotaDiCreditoAttivaBP) docAmmBP;
                        Nota_di_credito_attivaBulk nca = (Nota_di_credito_attivaBulk) ncaBP.getModel();
                        if (scadenzaSelezionata.getIm_associato_doc_amm() != null &&
                                scadenzaSelezionata.getIm_associato_doc_amm().compareTo(new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP)) != 0 &&
                                !ncaBP.isDeleting()) {
                            if (!new Nota_di_credito_attivaBulk(
                                    scadenzaSelezionata.getCd_cds(),
                                    scadenzaSelezionata.getObbligazione().getCd_unita_organizzativa(),
                                    scadenzaSelezionata.getEsercizio_doc_passivo(),
                                    scadenzaSelezionata.getPg_doc_passivo()
                            ).equalsByPrimaryKey(nca))
                                throw new MessageToUser("Non è possibile collegare la scadenza \"" + scadenzaSelezionata.getDs_scadenza() + "\" perchè è già associata ad altri documenti amministrativi.", ERROR_MESSAGE);
                        }
                    } else if (docAmmBP instanceof CRUDDocumentoGenericoPassivoBP) {
                        if (!scadCorrente.equalsByPrimaryKey(scadenzaSelezionata)) {
                            CRUDDocumentoGenericoPassivoBP docGenPassivoBP = (CRUDDocumentoGenericoPassivoBP) docAmmBP;
                            Documento_genericoBulk docGenPassivo = (Documento_genericoBulk) docGenPassivoBP.getModel();
                            if (scadenzaSelezionata.getIm_associato_doc_amm() != null &&
                                    scadenzaSelezionata.getIm_associato_doc_amm().compareTo(new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP)) != 0) {
                                String cd_cds_doc_gen = (docGenPassivo.isFlagEnte()) ?
                                        docGenPassivo.getCd_cds() :
                                        scadenzaSelezionata.getObbligazione().getCd_cds_origine();
                                String cd_uo_docgen = (docGenPassivo.isFlagEnte()) ?
                                        docGenPassivo.getCd_unita_organizzativa() :
                                        scadenzaSelezionata.getObbligazione().getCd_uo_origine();
                                if (!new Documento_genericoBulk(
                                        cd_cds_doc_gen,
                                        scadenzaSelezionata.getCd_tipo_documento_amm(),
                                        cd_uo_docgen,
                                        scadenzaSelezionata.getEsercizio_doc_passivo(),
                                        scadenzaSelezionata.getPg_doc_passivo()
                                ).equalsByPrimaryKey(docGenPassivo))
                                    throw new MessageToUser("Non è possibile collegare la scadenza \"" + scadenzaSelezionata.getDs_scadenza() + "\" perchè è già associata ad altri documenti amministrativi.", ERROR_MESSAGE);
                            }
                        }
                    }
                }
            }
            if (//getParent() instanceof CRUDFatturaPassivaIBP ||
                    getParent() instanceof CRUDDocumentoGenericoPassivoBP) {
                if (new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP).compareTo(scadenzaSelezionata.getIm_scadenza()) == 0)
                    throw new MessageToUser("Non è possibile collegare la scadenza \"" + scadenzaSelezionata.getDs_scadenza() + "\" con importo 0.", ERROR_MESSAGE);
            }
//		if (getParent() instanceof RicercaObbligazioniBP) {
//			RicercaObbligazioniBP ricercaBP = (RicercaObbligazioniBP)getParent();
//			if (ricercaBP.getParent() != null && ricercaBP.getParent() instanceof CRUDFatturaPassivaIBP &&
//				new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP).compareTo(scadenzaSelezionata.getIm_scadenza()) == 0)
//					throw new MessageToUser("Non è possibile collegare la scadenza \"" + scadenzaSelezionata.getDs_scadenza() + "\" con importo 0.",ERROR_MESSAGE);
//		}

            if (getParent() instanceof IDocumentoAmministrativoBP &&
                    scadenzaSelezionata.getIm_associato_doc_amm() != null &&
                    scadenzaSelezionata.getIm_associato_doc_amm().compareTo(new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP)) != 0) {
                IDocumentoAmministrativoBP docAmmBP = (IDocumentoAmministrativoBP) getParent();
                if (docAmmBP instanceof CRUDMissioneBP) {
                    CRUDMissioneBP missioneBP = (CRUDMissioneBP) docAmmBP;
                    MissioneBulk missione = (MissioneBulk) missioneBP.getModel();
                    if (!new MissioneBulk(scadenzaSelezionata.getCd_cds(), scadenzaSelezionata.getObbligazione().getCd_unita_organizzativa(), scadenzaSelezionata.getEsercizio_doc_passivo(), scadenzaSelezionata.getPg_doc_passivo()).equalsByPrimaryKey(missione))
                        throw new MessageToUser("Non è possibile collegare la scadenza \"" + scadenzaSelezionata.getDs_scadenza() + "\" perchè è già associata ad altri documenti amministrativi.", ERROR_MESSAGE);
                }
                if (docAmmBP instanceof CRUDAnticipoBP) {
                    CRUDAnticipoBP anticipoBP = (CRUDAnticipoBP) docAmmBP;
                    AnticipoBulk anticipo = (AnticipoBulk) anticipoBP.getModel();
                    if (!new AnticipoBulk(scadenzaSelezionata.getCd_cds(), scadenzaSelezionata.getObbligazione().getCd_unita_organizzativa(), scadenzaSelezionata.getEsercizio_doc_passivo(), scadenzaSelezionata.getPg_doc_passivo()).equalsByPrimaryKey(anticipo))
                        throw new MessageToUser("Non è possibile collegare la scadenza \"" + scadenzaSelezionata.getDs_scadenza() + "\" perchè è già associata ad altri documenti amministrativi.", ERROR_MESSAGE);
                }
                if (docAmmBP instanceof it.cnr.contab.compensi00.bp.CRUDCompensoBP) {
                    it.cnr.contab.compensi00.bp.CRUDCompensoBP compensoBP = (it.cnr.contab.compensi00.bp.CRUDCompensoBP) docAmmBP;
                    CompensoBulk compenso = (CompensoBulk) compensoBP.getModel();
                    if (!new CompensoBulk(scadenzaSelezionata.getCd_cds(), scadenzaSelezionata.getObbligazione().getCd_unita_organizzativa(), scadenzaSelezionata.getEsercizio_doc_passivo(), scadenzaSelezionata.getPg_doc_passivo()).equalsByPrimaryKey(compenso))
                        throw new MessageToUser("Non è possibile collegare la scadenza \"" + scadenzaSelezionata.getDs_scadenza() + "\" perchè è già associata ad altri documenti amministrativi.", ERROR_MESSAGE);
                }
            }
        }
        return scadenzario.getModel();
    }

    /**
     * Metodo con cui si ottiene il valore della variabile capitoliDiSpesaCds
     * di tipo SimpleDetailCRUDController.
     *
     * @return it.cnr.jada.util.action.SimpleDetailCRUDController
     */
    public final it.cnr.jada.util.action.SimpleDetailCRUDController getCapitoliDiSpesaCds() {
        return capitoliDiSpesaCds;
    }

    /**
     * Metodo con cui si ottiene il valore della variabile centriDiResponsabilita
     * di tipo SimpleDetailCRUDController.
     *
     * @return it.cnr.jada.util.action.SimpleDetailCRUDController
     */
    public final it.cnr.jada.util.action.SimpleDetailCRUDController getCentriDiResponsabilita() {
        return centriDiResponsabilita;
    }

    /**
     * Metodo con cui si ottiene il valore della variabile lineeDiAttivita
     * di tipo SimpleDetailCRUDController.
     *
     * @return it.cnr.jada.util.action.SimpleDetailCRUDController
     */
    public final it.cnr.jada.util.action.SimpleDetailCRUDController getLineeDiAttivita() {
        return lineeDiAttivita;
    }

    /**
     * Metodo con cui si ottiene il valore della variabile nuoveLineeDiAttivita
     * di tipo SimpleDetailCRUDController.
     *
     * @return it.cnr.jada.util.action.SimpleDetailCRUDController
     */
    public final it.cnr.jada.util.action.SimpleDetailCRUDController getNuoveLineeDiAttivita() {
        return nuoveLineeDiAttivita;
    }

    /**
     * Metodo con cui si ottiene il valore della variabile scadenzario
     * di tipo SimpleDetailCRUDController.
     *
     * @return it.cnr.jada.util.action.SimpleDetailCRUDController
     */
    public final it.cnr.jada.util.action.SimpleDetailCRUDController getScadenzario() {
        return scadenzario;
    }

    /**
     * Metodo con cui si ottiene il valore della variabile scadenzarioDettaglio
     * di tipo SimpleDetailCRUDController.
     *
     * @return it.cnr.jada.util.action.SimpleDetailCRUDController
     */
    public final it.cnr.jada.util.action.SimpleDetailCRUDController getScadenzarioDettaglio() {
        return scadenzarioDettaglio;
    }

    /**
     * Inizializza il modello per la modifica.
     *
     * @param context Il contesto dell'azione
     * @param bulk    L'oggetto bulk in uso
     * @return Oggetto Bulk L'oggetto bulk inizializzato
     */
    public OggettoBulk initializeModelForEdit(ActionContext context, OggettoBulk bulk) throws BusinessProcessException {
        try {
            it.cnr.jada.ejb.CRUDComponentSession compSession = (getUserTransaction() == null) ?
                    createComponentSession() :
                    getVirtualComponentSession(context, false); //responsabilità setSafePoint(true) demandata all'init del bp
            OggettoBulk oggettobulk = compSession.inizializzaBulkPerModifica(
                    context.getUserContext(),
                    bulk.initializeForEdit(this, context));


            oggettobulk = initializeModelForEditAllegati(context, oggettobulk);
            ((ObbligazioneBulk) oggettobulk).caricaAnniResidui(context);
            return oggettobulk;
        } catch (Throwable e) {
            throw new it.cnr.jada.action.BusinessProcessException(e);
        }
    }
//
//	Abilito il bottone di ANNULLA RIPORTA documento solo se non ho scadenze in fase di modifica/inserimento
//

    public boolean isBringbackButtonEnabled() {
        return super.isBringbackButtonEnabled() && !isEditingScadenza();
    }

    /**
     * Abilito il bottone di calcolo della disponibilità di cassa dei due anni
     * successivi a quello corrente dell'obbligazione, quando il campo "Voce del
     * piano" è stato valorizzato.
     */
    public boolean isCalcolaDispCassaAnniSuccessiviButtonEnabled() throws it.cnr.jada.action.BusinessProcessException {
//	return ((ObbligazioneBulk)getModel()).getElemento_voce().getCrudStatus() == ObbligazioneBulk.NORMAL;
        return true;
    }

    /**
     * Abilito il bottone di conferma della scadenza solo se questa e' in fase di modifica/inserimento
     * 

* isEditable = FALSE se l'obbligazione e' in visualizzazione * = TRUE se l'obbligazione e' in modifica/inserimento */ public boolean isConfermaScadenzaButtonEnabled() throws it.cnr.jada.action.BusinessProcessException { return (isEditable() && getScadenzario().getModel() != null && isEditingScadenza()); } /** * Abilito il bottone di copia dell'obbligazione solo se questa e' in fase di modifica/inserimento *

* isEditable = FALSE se l'obbligazione e' in visualizzazione * = TRUE se l'obbligazione e' in modifica/inserimento */ public boolean isCopiaObbligazioneButtonEnabled() { return isEditable() && isEditing() && !isEditingScadenza(); } /** * Abilito il bottone di cancellazione documento solo se non ho scadenze in fase di modifica/inserimento */ public boolean isCopiaObbligazioneButtonHidden() { return isEditOnly(); } /** * Abilito il bottone di cancellazione documento solo se non ho scadenze in fase di modifica/inserimento */ public boolean isDeleteButtonEnabled() { return super.isDeleteButtonEnabled() && !isEditingScadenza() && !ObbligazioneBulk.STATO_OBB_STORNATO.equals(((ObbligazioneBulk) getModel()).getStato_obbligazione()); } /** * Ritorna TRUE se la scadenza e' in fase di modifica/inserimento * cioe' se e' stato selezionato il bottone per editare la scadenza. */ public boolean isEditingScadenza() { return editingScadenza; } /** * Abilito il bottone di edit solo se la scadenza non e' gia' in fase di modifica *

* isEditable = FALSE se l'accertamento e' in visualizzazione * = TRUE se l'accertamento e' in modifica/inserimento */ public boolean isEditScadenzaButtonEnabled() throws it.cnr.jada.action.BusinessProcessException { return (isEditable() && getScadenzario().getModel() != null && !isEditingScadenza()); } /** * Abilito il bottone di salvataggio documento solo se non ho scadenze in fase di modifica/inserimento */ public boolean isSaveButtonEnabled() { return super.isSaveButtonEnabled() && !isEditingScadenza() && !ObbligazioneBulk.STATO_OBB_STORNATO.equals(((ObbligazioneBulk) getModel()).getStato_obbligazione()); } // // Abilito il bottone di RIPORTA documento solo se non ho scadenze in fase di modifica/inserimento // public boolean isUndoBringBackButtonEnabled() { return super.isUndoBringBackButtonEnabled() && !isEditingScadenza(); } /** * Abilito il bottone di Undo della scadenza solo se questa e' in fase di modifica/inserimento *

* isEditable = FALSE se l'accertamento e' in visualizzazione * = TRUE se l'accertamento e' in modifica/inserimento */ public boolean isUndoScadenzaButtonEnabled() throws it.cnr.jada.action.BusinessProcessException { return (isEditable() && getScadenzario().getModel() != null && isEditingScadenza()); } /** * Verifica se il bottone di Visualizzazione delle Spese del Cdr è abilitato. * * @return TRUE Il bottone di Visualizzazione delle Spese del Cdr è abilitato * FALSE Il bottone di Visualizzazione delle Spese del Cdr non è abilitato */ public boolean isVisualizzaSpeseCdrButtonEnabled() { //return getModel.getInternalStatus() >= INT_STATO_CDR_CONFERMATI ; return getCentriDiResponsabilita().getModel() != null; } /** * Inzializza il ricevente nello stato di INSERT. */ public void reset(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException { editingScadenza = false; super.reset(context); } /** * Inzializza il ricevente nello stato di SEARCH. */ public void resetForSearch(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException { editingScadenza = false; super.resetForSearch(context); } /* Metodo per riportare il fuoco sul tab iniziale */ protected void resetTabs(ActionContext context) { setTab("tab", "tabObbligazione"); } /** * Gestisce un comando "Salva" * * @param context Il contesto dell'azione */ public void save(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException, it.cnr.jada.bulk.ValidationException { super.save(context); ObbligazioneBulk obbligazione = (ObbligazioneBulk) getModel(); getCapitoliDiSpesaCds().setSelection(((Vector) obbligazione.getCapitoliDiSpesaCdsSelezionatiColl()).elements()); getCentriDiResponsabilita().setSelection(((Vector) obbligazione.getCdrSelezionatiColl()).elements()); getLineeDiAttivita().setSelection(((Vector) obbligazione.getLineeAttivitaSelezionateColl()).elements()); } /** * Metodo per selezionare la scadenza dell'obbligazione. * * @param scadenza La scadenza dell'obbligazione * @param context Il contesto dell'azione */ public void selezionaScadenza(Obbligazione_scadenzarioBulk scadenza, ActionContext context) { getScadenzario().setModelIndex(context, it.cnr.jada.bulk.BulkCollections.indexOfByPrimaryKey(getScadenzario().getDetails(), scadenza)); setTab("tab", "tabScadenzario"); } /** * * * @param context L'ActionContext della richiesta * @throws BusinessProcessException */ public void undoScadenza(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException { editingScadenza = false; // Fine modalita' modifica/inserimento scadenza ObbligazioneBulk obbligazione = (ObbligazioneBulk) getModel(); Obbligazione_scadenzarioBulk scadenza = (Obbligazione_scadenzarioBulk) getScadenzario().getModel(); //ripristino i dati iniziali if (scadenza.getScadenza_iniziale() != null) { scadenza.setIm_scadenza(scadenza.getScadenza_iniziale().getIm_scadenza()); scadenza.setDt_scadenza(scadenza.getScadenza_iniziale().getDt_scadenza()); scadenza.setDs_scadenza(scadenza.getScadenza_iniziale().getDs_scadenza()); } // Nel caso l'utente decida di fare un Undo di un inserimento non confermato // rimuovo il dettaglio int index = getScadenzario().getModelIndex(); if (scadenza.getStatus() == Obbligazione_scadenzarioBulk.STATUS_NOT_CONFIRMED) { scadenza.setToBeDeleted(); obbligazione.getObbligazione_scadenzarioColl().remove(index); getScadenzario().setModelIndex(context, -1); // altrimenti rimane abilitato il bottone di modifica resyncChildren(context); } getFieldValidationMap().clearAll(getScadenzario().getInputPrefix()); } /** * Viene richiesta alla component che gestisce l'obbligazione di verificare la validità * della nuova Linea di Attività */ public void validaNuovaLineaAttivita(ActionContext context, it.cnr.contab.doccont00.core.bulk.Linea_attivitaBulk nuovaLatt, it.cnr.contab.config00.latt.bulk.WorkpackageBulk latt) throws ValidationException { try { if (latt != null) { nuovaLatt.getObbligazione().validateNuovaLineaAttivita(nuovaLatt, latt); ((ObbligazioneComponentSession) createComponentSession()).verificaNuovaLineaAttivita(context.getUserContext(), latt); nuovaLatt.setLinea_att(latt); } } catch (Throwable e) { throw new ValidationException(e.getMessage()); } } /** * Verifica la validità dell'obbligazione. * * @param context Il contesto dell'azione */ public void validate(ActionContext context) throws ValidationException { super.validate(context); if (isEditOnly() && !isSaveOnBringBack()) try { ((ObbligazioneComponentSession) createComponentSession()).verificaObbligazione(context.getUserContext(), (ObbligazioneBulk) getModel()); } catch (Throwable e) { throw new ValidationException(e.getMessage()); } } /** * Viene richiesta alla component che gestisce i compensi di verificare la validità * dell'Obbligazione per i doc. amministrativi */ public void verificaObbligazionePerDocAmm(ActionContext context) throws it.cnr.jada.action.BusinessProcessException { return; } /** * Gestisce un cambiamento di pagina su un controllo tabbed {@link it.cnr.jada.util.jsp.JSPUtils.tabbed} * * @param context Il contesto dell'azione */ public void verificaTestataObbligazione(ActionContext context) throws BusinessProcessException, it.cnr.jada.bulk.ValidationException { getModel().validate(); try { ((ObbligazioneComponentSession) createComponentSession()).verificaTestataObbligazione(context.getUserContext(), (ObbligazioneBulk) getModel()); } catch (Exception e) { throw handleException(e); } } public void riportaSelezioneVoci(ActionContext context, java.util.List vociList) throws BusinessProcessException, it.cnr.jada.bulk.ValidationException { try { getModel().validate(); annullaImputazioneFinanziariaCapitoli(context); ObbligazioneBulk obbligazione = ((ObbligazioneComponentSession) createComponentSession()).riportaSelezioneVoci(context.getUserContext(), (ObbligazioneBulk) getModel(), vociList); setModel(context, obbligazione); getCapitoliDiSpesaCds().setSelection(((Vector) obbligazione.getCapitoliDiSpesaCdsSelezionatiColl()).elements()); getCentriDiResponsabilita().setSelection(((Vector) obbligazione.getCdrSelezionatiColl()).elements()); getLineeDiAttivita().setSelection(((Vector) obbligazione.getLineeAttivitaSelezionateColl()).elements()); setDirty(true); } catch (Exception e) { throw handleException(e); } } /* * Se l'obbligazione non ha scadenze associate ne crea una di importo totale * Se l'obbligazione ha scadenze associate non effettua alcuna operazione */ public void creaScadenzaResiduale(ActionContext context) throws BusinessProcessException { try { ObbligazioneBulk obbligazione = ((ObbligazioneBulk) getModel()); if (!obbligazione.hasDettagli()) { obbligazione = ((ObbligazioneComponentSession) createComponentSession()).creaScadenzaResiduale(context.getUserContext(), obbligazione); setModel(context, obbligazione); } } catch (Exception e) { throw handleException(e); } } public java.util.List getVociSelezionate() { return vociSelezionate; } public void setVociSelezionate(java.util.List list) { vociSelezionate = list; } public boolean isCreaMandatoButtonHidden() { /* * 12/04/2006 Pagano * Nascosto il tasto in attesa di completare la funzionalità * */ return true; } public boolean isCreaMandatoButtonEnabled() { return true; } public boolean isModImpResButtonHidden() { ObbligazioneBulk obbligazione = (ObbligazioneBulk) getModel(); return !obbligazione.isObbligazioneResiduo(); } public boolean isModImpResButtonEnabled() { ObbligazioneBulk obbligazione = (ObbligazioneBulk) getModel(); return obbligazione.isObbligazioneResiduo() && !(isBringBack()); } public boolean modificaObbligazioneResProprie(it.cnr.jada.action.ActionContext context, StringBuffer errControllo) throws BusinessProcessException { ObbligazioneBulk obbligazione = (ObbligazioneBulk) getModel(); String errore; if (obbligazione.isObbligazioneResiduo()) { try { errore = ((ObbligazioneResComponentSession) createComponentSession()).controllaDettagliScadenzaObbligazione(context.getUserContext(), obbligazione, null); } catch (Exception e) { throw handleException(e); } errControllo.append(errore); return true; } return false; } protected void initialize(ActionContext actioncontext) throws BusinessProcessException { super.initialize(actioncontext); try { Parametri_cnrBulk parCnr = Utility.createParametriCnrComponentSession().getParametriCnr(actioncontext.getUserContext(), CNRUserContext.getEsercizio(actioncontext.getUserContext())); setSiope_attiva(parCnr.getFl_siope().booleanValue()); setIncarichi_repertorio_attiva(true); setFlNuovoPdg(parCnr.getFl_nuovo_pdg().booleanValue()); if (parCnr.isEnableVoceNext()) { Parametri_cnrBulk parCnrNewAnno = Utility.createParametriCnrComponentSession().getParametriCnr(actioncontext.getUserContext(), CNRUserContext.getEsercizio(actioncontext.getUserContext()) + 1); setEnableVoceNext(parCnrNewAnno != null); } } catch (Throwable throwable) { throw new BusinessProcessException(throwable); } } private boolean isSiope_attiva() { return siope_attiva; } private void setSiope_attiva(boolean siope_attiva) { this.siope_attiva = siope_attiva; } public boolean isFlNuovoPdg() { return flNuovoPdg; } private void setFlNuovoPdg(boolean flNuovoPdg) { this.flNuovoPdg = flNuovoPdg; } public boolean isROElemento_voce() { ObbligazioneBulk obbligazione = (ObbligazioneBulk) getModel(); if (isSiope_attiva()) return obbligazione.isROElemento_voce() || obbligazione.isAssociataADocCont(); return obbligazione.isROElemento_voce(); } public boolean isROFindElemento_voce() { ObbligazioneBulk obbligazione = (ObbligazioneBulk) getModel(); if (isSiope_attiva()) return obbligazione.isAssociataADocCont(); return false; } public boolean isRoCampiResiduoProprio() { ObbligazioneBulk obbligazione = (ObbligazioneBulk) getModel(); if (obbligazione == null || (obbligazione != null && !obbligazione.isObbligazioneResiduo()) || this.getStatus() == SEARCH) return false; return obbligazione != null && obbligazione.isObbligazioneResiduo() && this.getStatus() != INSERT; } public boolean isIncarichi_repertorio_attiva() { return incarichi_repertorio_attiva; } private void setIncarichi_repertorio_attiva(boolean incarichi_repertorio_attiva) { this.incarichi_repertorio_attiva = incarichi_repertorio_attiva; } /** * Valida il contratto riportato. * * @param context Il contesto dell'azione */ public void validaIncaricoRepertorio(it.cnr.jada.action.ActionContext context, Incarichi_repertorioBulk incarico) throws it.cnr.jada.action.BusinessProcessException, it.cnr.jada.action.MessageToUser { try { ObbligazioneBulk obbligazione = ((ObbligazioneBulk) getModel()); ((ObbligazioneComponentSession) createComponentSession()).validaIncaricoRepertorio(context.getUserContext(), obbligazione, incarico, null); } catch (Exception e) { throw handleException(e); } } public void caricaTerzoDiversi(it.cnr.jada.action.ActionContext context) throws BusinessProcessException { try { it.cnr.contab.config00.bulk.Configurazione_cnrBulk config = ((Configurazione_cnrComponentSession) EJBCommonServices.createEJB("CNRCONFIG00_EJB_Configurazione_cnrComponentSession")).getConfigurazione(context.getUserContext(), null, null, it.cnr.contab.config00.bulk.Configurazione_cnrBulk.PK_TERZO_SPECIALE, it.cnr.contab.config00.bulk.Configurazione_cnrBulk.SK_CODICE_DIVERSI_IMPEGNI); if (config == null || config.getIm01() == null) return; RemoteIterator remoteiterator = find(context, null, new TerzoBulk(new Integer(config.getIm01().intValue()))); if (remoteiterator != null && remoteiterator.countElements() == 1) { TerzoBulk terzo = (TerzoBulk) remoteiterator.nextElement(); EJBCommonServices.closeRemoteIterator(context, remoteiterator); ((ObbligazioneBulk) getModel()).setCreditore(terzo); } } catch (Throwable e) { throw handleException(e); } } public boolean isEnableVoceNext() { return enableVoceNext; } private void setEnableVoceNext(boolean enableVoceNext) { this.enableVoceNext = enableVoceNext; } public boolean isElementoVoceNewVisible() { return this.isEnableVoceNext() && getModel() != null && ((ObbligazioneBulk) getModel()).isEnableVoceNext(); } public String[][] getTabs() { TreeMap pages = new TreeMap(); int i = 0; pages.put(i++, new String[]{"tabObbligazione", "Impegni", "/doccont00/tab_obbligazione.jsp"}); pages.put(i++, new String[]{"tabImputazioneFin", "Imputazione Finanziaria", "/doccont00/tab_imputazione_fin_obbligazione.jsp"}); pages.put(i++, new String[]{"tabScadenzario", "Scadenzario", "/doccont00/tab_scadenzario_obbligazione.jsp"}); pages.put(i++, new String[]{"tabCdrCapitoli", "Cdr", "/doccont00/tab_cdr_capitoli.jsp"}); String[][] tabs = new String[i][3]; for (int j = 0; j < i; j++) tabs[j] = new String[]{pages.get(j)[0], pages.get(j)[1], pages.get(j)[2]}; return tabs; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy