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

it.cnr.contab.compensi00.bp.CRUDCompensoBP 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.compensi00.bp;

import it.cnr.contab.anagraf00.tabrif.bulk.Tipo_rapportoBulk;
import it.cnr.contab.chiusura00.ejb.RicercaDocContComponentSession;
import it.cnr.contab.compensi00.docs.bulk.*;
import it.cnr.contab.compensi00.ejb.CompensoComponentSession;
import it.cnr.contab.compensi00.tabrif.bulk.Tipo_trattamentoBulk;
import it.cnr.contab.config00.bulk.CigBulk;
import it.cnr.contab.config00.esercizio.bulk.EsercizioBulk;
import it.cnr.contab.docamm00.bp.IDocumentoAmministrativoBP;
import it.cnr.contab.docamm00.bp.IDocumentoAmministrativoSpesaBP;
import it.cnr.contab.docamm00.docs.bulk.IDocumentoAmministrativoBulk;
import it.cnr.contab.docamm00.docs.bulk.TrovatoBulk;
import it.cnr.contab.docamm00.ejb.DocumentoGenericoComponentSession;
import it.cnr.contab.docamm00.ejb.FatturaPassivaComponentSession;
import it.cnr.contab.docamm00.ejb.RiportoDocAmmComponentSession;
import it.cnr.contab.doccont00.bp.IDefferedUpdateSaldiBP;
import it.cnr.contab.doccont00.bp.IValidaDocContBP;
import it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk;
import it.cnr.contab.incarichi00.bulk.Incarichi_repertorio_annoBulk;
import it.cnr.contab.reports.bp.OfflineReportPrintBP;
import it.cnr.contab.reports.bulk.Print_spooler_paramBulk;
import it.cnr.contab.utenze00.bp.CNRUserContext;
import it.cnr.contab.utenze00.bp.GestioneUtenteBP;
import it.cnr.contab.util.Utility;
import it.cnr.jada.UserContext;
import it.cnr.jada.action.ActionContext;
import it.cnr.jada.action.BusinessProcessException;
import it.cnr.jada.action.Config;
import it.cnr.jada.action.HttpActionContext;
import it.cnr.jada.bulk.ValidationException;
import it.cnr.jada.comp.ComponentException;
import it.cnr.jada.util.action.AbstractPrintBP;
import it.cnr.jada.util.action.SimpleDetailCRUDController;

import java.math.BigDecimal;
import java.rmi.RemoteException;
import java.util.Optional;

/**
 * Insert the type's description here.
 * Creation date: (21/02/2002 16.12.44)
 *
 * @author: Roberto Fantino
 */
public class CRUDCompensoBP extends it.cnr.jada.util.action.SimpleCRUDBP implements IDefferedUpdateSaldiBP, IDocumentoAmministrativoSpesaBP, IValidaDocContBP {
    private final SimpleDetailCRUDController contributiCRUDController = new SimpleDetailCRUDController("contributiCRUDController", Contributo_ritenutaBulk.class, "contributi", this, false) {
        @Override
        public void writeHTMLToolbar(javax.servlet.jsp.PageContext context, boolean reset, boolean find, boolean delete, boolean closedToolbar) throws java.io.IOException, javax.servlet.ServletException {
            super.writeHTMLToolbar(context, reset, find, delete, false);

            // Aggiungo alla table dei contributi per visualizzare ulteriori dettagli per ogni riga
            boolean isFromBootstrap = HttpActionContext.isFromBootstrap(context);
            if (getModelIndex() == -1)
                it.cnr.jada.util.jsp.JSPUtils.toolbarButton(context,
                        isFromBootstrap ? "fa fa-fw fa-list text-primary" : "img/uncheckall16.gif",
                        null,
                        false,
                        "Visualizza dettagli",
                        isFromBootstrap);
            else
                it.cnr.jada.util.jsp.JSPUtils.toolbarButton(context,
                        isFromBootstrap ? "fa fa-fw fa-list text-primary" : "img/uncheckall16.gif",
                        "javascript:submitForm('doVisualizzaDettagli')",
                        false,
                        "Visualizza dettagli",
                        isFromBootstrap);
            super.closeButtonGROUPToolbar(context);

        }
    };
    private final SimpleDetailCRUDController docContAssociatiCRUDController = new SimpleDetailCRUDController("docContAssociatiCRUDController", V_doc_cont_compBulk.class, "docContAssociati", this, false) {
        @Override
        public void writeHTMLToolbar(javax.servlet.jsp.PageContext context, boolean reset, boolean find, boolean delete, boolean closedToolbar) throws java.io.IOException, javax.servlet.ServletException {

            super.writeHTMLToolbar(context, reset, find, delete, false);

            // Aggiungo un bottone alla toolbar dei documenti associati per aprire in visualizzazione il documento contabile associato
            boolean isFromBootstrap = HttpActionContext.isFromBootstrap(context);
            if (getModelIndex() == -1)
                it.cnr.jada.util.jsp.JSPUtils.toolbarButton(context,
                        isFromBootstrap ? "fa fa-fw fa-list text-primary" : "img/uncheckall16.gif",
                        null,
                        false,
                        "Visualizza documento",
                        isFromBootstrap);
            else
                it.cnr.jada.util.jsp.JSPUtils.toolbarButton(context,
                        isFromBootstrap ? "fa fa-fw fa-list text-primary" : "img/uncheckall16.gif",
                        "javascript:submitForm('doVisualizzaDocumentoContabile')",
                        false,
                        "Visualizza documento",
                        isFromBootstrap);
            super.closeButtonGROUPToolbar(context);
        }
    };
    private it.cnr.contab.doccont00.core.bulk.OptionRequestParameter userConfirm = null;
    //	Variabili usate per la gestione del "RIPORTA" documento ad esercizio precedente/successivo
    private boolean annoSolareInScrivania = true;
    private boolean riportaAvantiIndietro = false;
    private boolean carryingThrough = false;
    private boolean ribaltato;
    private boolean nocompenso = true;
    private Boolean isGestioneIncarichiEnabled = null;

    //private Boolean isGestionePrestazioneCompensoEnabled = null;

    /**
     * CRUDCompensoBP constructor comment.
     */
    public CRUDCompensoBP() {
        super("Tr");
    }

    /**
     * CRUDCompensoBP constructor comment.
     *
     * @param function java.lang.String
     */
    public CRUDCompensoBP(String function) {
        super(function + "Tr");
    }

    /**
     * @param context      Il contesto dell'azione
     * @param accertamento it.cnr.contab.doccont00.core.bulk.AccertamentoBulk
     * @param mode         java.lang.String
     * @return it.cnr.jada.util.action.CRUDBP
     */
    public static CRUDCompensoBP getBusinessProcessFor(it.cnr.jada.action.ActionContext context, CompensoBulk compenso, String mode) throws it.cnr.jada.action.BusinessProcessException {
        if (compenso == null)
            return null;
        else
            return (CRUDCompensoBP) context.getUserInfo().createBusinessProcess(context, "CRUDCompensoBP", new Object[]{mode});
    }

    /**
     * Il compenso viene messo in Visualizzazione se :
     * -	compenso da stipendi
     * -	compenso pagato (contabilizzato in cofi o registrato in fondo eco)
     * oppure annullato oppure è legato ad obbligazione riportata
     **/
    private void aggiornaStatoBP() {

        CompensoBulk compenso = (CompensoBulk) getModel();

        if (!isViewing()) {
            if (Boolean.TRUE.equals(compenso.getFl_compenso_stipendi()))
                setStatus(VIEW);
            else if (compenso != null && (compenso.isAnnullato()))
                setStatus(VIEW);
        }
    }

    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);
        try {
            isCompensoValidoXStampa(context, (CompensoBulk) bulk);
        } catch (BusinessProcessException e) {
            e.printStackTrace();
        } catch (ComponentException e) {
            e.printStackTrace();
        } catch (RemoteException e) {
            e.printStackTrace();
        }
        aggiornaStatoBP();
    }

    /**
     * isAnnoSolareInScrivania = TRUE --> se l'anno di scrivania e' uguale a quello solare
     * isRiportaAvantiIndietro = TRUE --> se sia'esercizio di scrivania che quello successivo sono aperti
     */

    protected boolean basicRiportaButtonHidden() {
        CompensoBulk compenso = (CompensoBulk) getModel();

        return isAnnoSolareInScrivania() || !isRiportaAvantiIndietro() ||
                isDeleting() || !isEditing() || compenso.isSenzaCalcoli() ||
                compenso.isPagato() || compenso.isAnnullato() || !compenso.isObbligazioneObbligatoria() ||
                (getParent() != null && (getParent() instanceof IDocumentoAmministrativoBP));
    }

    /**
     * Insert the method's description here.
     * Creation date: (25/02/2002 12.56.44)
     *
     * @param userContext it.cnr.jada.UserContext
     * @param compenso    it.cnr.contab.compensi00.docs.bulk.CompensoBulk
     * @param aTerzo      it.cnr.contab.compensi00.docs.bulk.V_terzo_per_compensoBulk
     * @return it.cnr.contab.compensi00.docs.bulk.CompensoBulk
     */
    public void completaTerzo(ActionContext context, CompensoBulk compenso, V_terzo_per_compensoBulk vTerzo) throws BusinessProcessException {

        try {

            CompensoComponentSession component = (CompensoComponentSession) createComponentSession();
            CompensoBulk compensoClone = component.completaTerzo(context.getUserContext(), compenso, vTerzo);

            setModel(context, compensoClone);

        } catch (it.cnr.jada.comp.ComponentException ex) {
            throw handleException(ex);
        } catch (java.rmi.RemoteException ex) {
            throw handleException(ex);
        }

    }

    public ConguaglioBulk conguaglioAssociatoACompenso(ActionContext context) throws BusinessProcessException {

        try {
            CompensoComponentSession session = (CompensoComponentSession) createComponentSession();
            return session.conguaglioAssociatoACompenso(context.getUserContext(), (CompensoBulk) getModel());
        } catch (java.rmi.RemoteException ex) {
            throw handleException(ex);
        } catch (it.cnr.jada.comp.ComponentException ex) {
            throw handleException(ex);
        }
    }

    /**
     * Insert the method's description here.
     * Creation date: (25/02/2002 12.56.44)
     *
     * @param userContext it.cnr.jada.UserContext
     * @param compenso    it.cnr.contab.compensi00.docs.bulk.CompensoBulk
     * @param aTerzo      it.cnr.contab.compensi00.docs.bulk.V_terzo_per_compensoBulk
     * @return it.cnr.contab.compensi00.docs.bulk.CompensoBulk
     */
    public void contabilizzaCompensoCOFI(ActionContext context) throws BusinessProcessException {

        try {

            CompensoComponentSession comp = (CompensoComponentSession) createComponentSession();
            CompensoBulk compenso = comp.doContabilizzaCompensoCofi(context.getUserContext(), (CompensoBulk) getModel());
            setModel(context, compenso);
            commitUserTransaction();

            aggiornaStatoBP();
            resetTabs(context);

        } catch (it.cnr.jada.comp.ComponentException ex) {
            throw handleException(ex);
        } catch (java.rmi.RemoteException ex) {
            throw handleException(ex);
        }

    }

    public void create(it.cnr.jada.action.ActionContext context)
            throws it.cnr.jada.action.BusinessProcessException {

        try {
            getModel().setToBeCreated();
            setModel(
                    context,
                    ((CompensoComponentSession) createComponentSession()).creaConBulk(
                            context.getUserContext(),
                            getModel(),
                            getUserConfirm()));
            setUserConfirm(null);
        } catch (Throwable e) {
            throw handleException(e);
        }
    }

    /**
     * Inizializzazione della Toolbar del Compenso
     */
    public it.cnr.jada.util.jsp.Button[] createToolbar() {

        it.cnr.jada.util.jsp.Button[] toolbar = new it.cnr.jada.util.jsp.Button[12];
        int i = 0;
        toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()), "CRUDToolbar.search");
        toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()), "CRUDToolbar.startSearch");
        toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()), "CRUDToolbar.freeSearch");
        toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()), "CRUDToolbar.new");
        toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()), "CRUDToolbar.save");
        toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()), "CRUDToolbar.delete");
        toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()), "CRUDToolbar.bringBack");
        toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()), "CRUDToolbar.undoBringBack");
        toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()), "CRUDToolbar.contabilizza");
        toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()), "CRUDToolbar.print");
        toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()), "CRUDToolbar.riportaAvanti");
        toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()), "CRUDToolbar.riportaIndietro");

        return toolbar;
    }

    public void doConfermaModificaCORI(ActionContext context) throws BusinessProcessException {

        try {
            CompensoComponentSession session = (CompensoComponentSession) createComponentSession();
            CompensoBulk compenso = session.confermaModificaCORI(context.getUserContext(), (CompensoBulk) getModel(), (Contributo_ritenutaBulk) getContributiCRUDController().getModel());

            getContributiCRUDController().setModelIndex(context, -1);
            setModel(context, compenso);

        } catch (it.cnr.jada.comp.ComponentException ex) {
            throw handleException(ex);
        } catch (java.rmi.RemoteException ex) {
            throw handleException(ex);
        }
    }

    /**
     * Gestisce la richiesta di eliminazione dell'associazione compenso/scadenza obbligazione
     */
    public CompensoBulk doEliminaObbligazione(ActionContext context) throws BusinessProcessException {

        try {
            CompensoBulk compenso = (CompensoBulk) getModel();
            if (compenso.isStatoCompensoEseguiCalcolo())
                throw new it.cnr.jada.comp.ApplicationException("E' necessario eseguire il calcolo prima di eliminare l'impegno");

            CompensoComponentSession sess = (CompensoComponentSession) createComponentSession();
            compenso = sess.eliminaObbligazione(context.getUserContext(), compenso);
            setModel(context, compenso);
            setDirty(true);
            return compenso;
        } catch (it.cnr.jada.comp.ComponentException ex) {
            throw handleException(ex);
        } catch (java.rmi.RemoteException ex) {
            throw handleException(ex);
        }
    }

    public void edit(ActionContext context, it.cnr.jada.bulk.OggettoBulk bulk, boolean doInitializeForEdit) throws it.cnr.jada.action.BusinessProcessException {
        setCarryingThrough(false);
        super.edit(context, bulk, doInitializeForEdit);
    }

    public void elaboraScadenze(ActionContext context, Obbligazione_scadenzarioBulk oldScad, Obbligazione_scadenzarioBulk newScad) throws BusinessProcessException {

        try {
            CompensoBulk compenso = (CompensoBulk) getModel();

            CompensoComponentSession session = (CompensoComponentSession) createComponentSession();
            compenso = session.elaboraScadenze(context.getUserContext(), compenso, oldScad, newScad);

            if (!isObbligazioneValida(context, newScad))
                compenso.setStatoCompensoToSincronizzaObbligazione();
            else
                compenso.setStatoCompensoToObbligazioneSincronizzata();

            setModel(context, compenso);
            setDirty(true);

        } catch (it.cnr.jada.comp.ComponentException ex) {
            throw handleException(ex);
        } catch (java.rmi.RemoteException ex) {
            throw handleException(ex);
        }
    }

    /**
     * Gestisce la richiesta di "esecuzione del calcolo" del compenso
     */
    public void eseguiCalcolo(ActionContext context) throws BusinessProcessException {

        try {

            validaDatiLiquidazione(context);

            CompensoComponentSession comp = (CompensoComponentSession) createComponentSession();
            CompensoBulk compenso = comp.eseguiCalcolo(context.getUserContext(), (CompensoBulk) getModel());

            setModel(context, compenso);

        } catch (it.cnr.jada.comp.ComponentException ex) {
            throw handleException(ex);
        } catch (java.rmi.RemoteException ex) {
            throw handleException(ex);
        }
    }

    public void findListaBanche(ActionContext context) throws BusinessProcessException {

        try {
            CompensoBulk compenso = (CompensoBulk) getModel();
            if (compenso.getModalitaPagamento() != null) {
                CompensoComponentSession component = (CompensoComponentSession) createComponentSession();
                java.util.List coll = component.findListaBanche(context.getUserContext(), compenso);

                //	Assegno di default la prima banca tra quelle selezionate
                if (coll == null || coll.isEmpty()) {
                    compenso.setBanca(null);
//				throw new it.cnr.jada.comp.ApplicationException("Non esistono banche associate alla modalità selezionata");
                } else
                    compenso.setBanca((it.cnr.contab.anagraf00.core.bulk.BancaBulk) new java.util.Vector(coll).firstElement());
            } else
                compenso.setBanca(null);

        } catch (it.cnr.jada.comp.ComponentException ex) {
            throw handleException(ex);
        } catch (java.rmi.RemoteException ex) {
            throw handleException(ex);
        }
    }

    /**
     * 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, it.cnr.contab.docamm00.docs.bulk.Filtro_ricerca_obbligazioniVBulk filtro) throws it.cnr.jada.action.BusinessProcessException {

        try {

            CompensoComponentSession sess = (CompensoComponentSession) createComponentSession();
            return sess.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(it.cnr.jada.action.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 {

            CompensoComponentSession sess = (CompensoComponentSession) createComponentSession();
            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);
        }
    }

    public void findTipiRapporto(ActionContext context) throws BusinessProcessException {

        try {
            CompensoBulk compenso = (CompensoBulk) getModel();
            if (compenso.getTerzo() != null) {
                CompensoComponentSession component = (CompensoComponentSession) createComponentSession();
                java.util.Collection coll = component.findTipiRapporto(context.getUserContext(), compenso);
                compenso.setTipiRapporto(coll);

                if (coll == null || coll.isEmpty()) {
                    compenso.setTipoRapporto(null);
                    throw new it.cnr.jada.comp.ApplicationException("Non esistono Tipi Rapporto validi associati al terzo selezionato");
                }
            } else
                compenso.setTipoRapporto(null);

        } catch (it.cnr.jada.comp.ComponentException ex) {
            throw handleException(ex);
        } catch (java.rmi.RemoteException ex) {
            throw handleException(ex);
        }
    }

    public void findTipiTrattamento(ActionContext context) throws BusinessProcessException {

        try {
            CompensoBulk compenso = (CompensoBulk) getModel();
            if (compenso.getTipoRapporto() != null) {
                CompensoComponentSession component = (CompensoComponentSession) createComponentSession();
                java.util.Collection coll = component.findTipiTrattamento(context.getUserContext(), compenso);
                compenso.setTipiTrattamento(coll);

                if (coll == null || coll.isEmpty()) {
                    compenso.setTipoTrattamento(null);
                    throw new it.cnr.jada.comp.ApplicationException("Non esistono Tipi Trattamento associati al Tipo di Rapporto selezionato");
                }
            } else
                compenso.setTipoTrattamento(null);

        } catch (it.cnr.jada.comp.ComponentException ex) {
            throw handleException(ex);
        } catch (java.rmi.RemoteException ex) {
            throw handleException(ex);
        }
    }

    public void findTipiPrestazioneCompenso(ActionContext context) throws BusinessProcessException {

        try {
            CompensoBulk compenso = (CompensoBulk) getModel();
            if (compenso.getTipoRapporto() != null) {
                CompensoComponentSession component = (CompensoComponentSession) createComponentSession();
                java.util.Collection coll = component.findTipiPrestazioneCompenso(context.getUserContext(), compenso);
                compenso.setTipiPrestazioneCompenso(coll);

                if ((coll == null || coll.isEmpty()) && compenso.isPrestazioneCompensoEnabled()) {
                    compenso.setTipoPrestazioneCompenso(null);
                    throw new it.cnr.jada.comp.ApplicationException("Non esistono Tipi di prestazione associati al Tipo di Rapporto selezionato");
                }
            } else
                compenso.setTipoPrestazioneCompenso(null);

        } catch (it.cnr.jada.comp.ComponentException ex) {
            throw handleException(ex);
        } catch (java.rmi.RemoteException ex) {
            throw handleException(ex);
        }
    }

    /**
     * Insert the method's description here.
     * Creation date: (27/05/2002 14.40.04)
     *
     * @return it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk
     */
    public it.cnr.contab.doccont00.core.bulk.Accertamento_scadenzarioBulk getAccertamento_scadenziario_corrente() {
        return null;
    }

    /**
     * Insert the method's description here.
     * Creation date: (27/05/2002 14.40.04)
     *
     * @return it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk
     */
    public IDocumentoAmministrativoBulk getBringBackDocAmm() {

        return getDocumentoAmministrativoCorrente();
    }

    /**
     * Insert the method's description here.
     * Creation date: (04/03/2002 14.59.58)
     *
     * @return it.cnr.jada.util.action.SimpleDetailCRUDController
     */
    public final SimpleDetailCRUDController getContributiCRUDController() {
        return contributiCRUDController;
    }

    /**
     * Insert the method's description here.
     * Creation date: (24/05/2002 13.22.57)
     *
     * @return it.cnr.contab.doccont00.core.bulk.IDefferUpdateSaldi
     */
    public it.cnr.contab.doccont00.core.bulk.IDefferUpdateSaldi getDefferedUpdateSaldiBulk() {

        if (getParent() != null && getParent() instanceof IDefferedUpdateSaldiBP)
            return getDefferedUpdateSaldiParentBP().getDefferedUpdateSaldiBulk();
        return (it.cnr.contab.doccont00.core.bulk.IDefferUpdateSaldi) getModel();
    }

    /**
     * Insert the method's description here.
     * Creation date: (24/05/2002 13.17.50)
     *
     * @return it.cnr.contab.doccont00.bp.IDefferedUpdateSaldiBP
     */
    public IDefferedUpdateSaldiBP getDefferedUpdateSaldiParentBP() {

        if (getParent() != null && getParent() instanceof IDefferedUpdateSaldiBP)
            return ((IDefferedUpdateSaldiBP) getParent()).getDefferedUpdateSaldiParentBP();
        return (IDefferedUpdateSaldiBP) this;
    }

    /**
     * Insert the method's description here.
     * Creation date: (27/05/2002 14.40.04)
     *
     * @return it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk
     */
    public it.cnr.contab.docamm00.docs.bulk.Risultato_eliminazioneVBulk getDeleteManager() {
        return null;
    }

    /**
     * Insert the method's description here.
     * Creation date: (27/05/2002 17.28.12)
     *
     * @return it.cnr.jada.bulk.OggettoBulk
     */
    public it.cnr.jada.bulk.OggettoBulk getDocAmmModel() {
        return getModel();
    }

    /**
     * Insert the method's description here.
     * Creation date: (04/03/2002 14.59.58)
     *
     * @return it.cnr.jada.util.action.SimpleDetailCRUDController
     */
    public final SimpleDetailCRUDController getDocContAssociatiCRUDController() {
        return docContAssociatiCRUDController;
    }

    /**
     * Insert the method's description here.
     * Creation date: (27/05/2002 14.40.05)
     *
     * @return it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk
     */
    public IDocumentoAmministrativoBulk getDocumentoAmministrativoCorrente() {
        return (IDocumentoAmministrativoBulk) getModel();
    }

    /**
     * Insert the method's description here.
     * Creation date: (27/05/2002 14.40.04)
     *
     * @return it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk
     */
    public it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk getObbligazione_scadenziario_corrente() {
        return ((CompensoBulk) getModel()).getObbligazioneScadenzario();
    }

    /**
     * Insert the method's description here.
     * Creation date: (19/07/2002 12.53.56)
     *
     * @return it.cnr.contab.doccont00.core.bulk.OptionRequestParameter
     */
    public it.cnr.contab.doccont00.core.bulk.OptionRequestParameter getUserConfirm() {
        return userConfirm;
    }

    /**
     * Insert the method's description here.
     * Creation date: (19/07/2002 12.53.56)
     *
     * @param newUserConfirm it.cnr.contab.doccont00.core.bulk.OptionRequestParameter
     */
    public void setUserConfirm(it.cnr.contab.doccont00.core.bulk.OptionRequestParameter newUserConfirm) {
        userConfirm = newUserConfirm;
    }

    protected void init(Config config, ActionContext context) throws BusinessProcessException {
        // Se NULL allora non sono in un contesto transazionale
        // Imposto il compenso NON EDITABILE
        if (getUserTransaction() == null)
            setEditable(false);

        super.init(config, context);

        try {
            setGestioneIncarichiEnabled(Utility.createParametriCnrComponentSession().getParametriCnr(context.getUserContext(), CNRUserContext.getEsercizio(context.getUserContext())).getFl_incarico());
/*
		String attivaPrestazione = ((it.cnr.contab.config00.ejb.Configurazione_cnrComponentSession)it.cnr.jada.util.ejb.EJBCommonServices.createEJB("CNRCONFIG00_EJB_Configurazione_cnrComponentSession")).getVal01(context.getUserContext(), CNRUserContext.getEsercizio(context.getUserContext()), "*", "GESTIONE_COMPENSI", "ATTIVA_PRESTAZIONE");
		if (attivaPrestazione==null)
			throw new ApplicationException("Configurazione CNR: non sono stati impostati i valori per GESTIONE_COMPENSI - ATTIVA_PRESTAZIONE");
		if (attivaPrestazione.compareTo(new String("Y"))==0)
		    setGestionePrestazioneCompensoEnabled(true);
		else
			setGestionePrestazioneCompensoEnabled(false);
*/
        } catch (it.cnr.jada.comp.ComponentException ex) {
            throw handleException(ex);
        } catch (java.rmi.RemoteException ex) {
            throw handleException(ex);
        }

        resetTabs(context);
    }

    public it.cnr.jada.bulk.OggettoBulk initializeModelForEdit(ActionContext context, it.cnr.jada.bulk.OggettoBulk bulk) throws BusinessProcessException {
        CompensoBulk compenso = (CompensoBulk) super.initializeModelForEdit(context, bulk);

        return initializePerRiporta(context, compenso);
    }

    public it.cnr.jada.bulk.OggettoBulk initializeModelForFreeSearch(ActionContext context, it.cnr.jada.bulk.OggettoBulk bulk) throws BusinessProcessException {
        CompensoBulk compenso = (CompensoBulk) super.initializeModelForFreeSearch(context, bulk);

        return initializePerRiporta(context, compenso);
    }

    public it.cnr.jada.bulk.OggettoBulk initializeModelForInsert(ActionContext context, it.cnr.jada.bulk.OggettoBulk bulk) throws BusinessProcessException {
        CompensoBulk compenso = (CompensoBulk) super.initializeModelForInsert(context, bulk);

        return initializePerRiporta(context, compenso);
    }

    public it.cnr.jada.bulk.OggettoBulk initializeModelForSearch(ActionContext context, it.cnr.jada.bulk.OggettoBulk bulk) throws BusinessProcessException {
        CompensoBulk compenso = (CompensoBulk) super.initializeModelForSearch(context, bulk);

        return initializePerRiporta(context, compenso);
    }

    public it.cnr.jada.bulk.OggettoBulk initializePerRiporta(ActionContext context, CompensoBulk compenso) throws BusinessProcessException {
        try {
            java.sql.Timestamp tsOdierno = it.cnr.jada.util.ejb.EJBCommonServices.getServerDate();
            java.util.GregorianCalendar tsOdiernoGregorian = (java.util.GregorianCalendar) java.util.GregorianCalendar.getInstance();
            tsOdiernoGregorian.setTime(tsOdierno);
            java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd/MM/yyyy");
            compenso.setAnnoSolare(tsOdiernoGregorian.get(java.util.GregorianCalendar.YEAR));
            compenso.setEsercizioScrivania(it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(context.getUserContext()).intValue());

            setAnnoSolareInScrivania(compenso.getAnnoSolare() == compenso.getEsercizioScrivania());

            setRibaltato(initRibaltato(context));

            if (!isAnnoSolareInScrivania()) {
                String cds = it.cnr.contab.utenze00.bp.CNRUserContext.getCd_cds(context.getUserContext());
                try {
                    DocumentoGenericoComponentSession session = (DocumentoGenericoComponentSession) createComponentSession("CNRDOCAMM00_EJB_DocumentoGenericoComponentSession", DocumentoGenericoComponentSession.class);
                    boolean esercizioScrivaniaAperto = session.verificaStatoEsercizio(context.getUserContext(), new EsercizioBulk(cds, new Integer(compenso.getEsercizioScrivania())));
                    boolean esercizioSuccessivoAperto = session.verificaStatoEsercizio(context.getUserContext(), new EsercizioBulk(cds, new Integer(compenso.getEsercizioScrivania() + 1)));
                    setRiportaAvantiIndietro(esercizioScrivaniaAperto && esercizioSuccessivoAperto && isRibaltato());
                } catch (Throwable t) {
                    // handleException(t);
                    throw new BusinessProcessException(t);
                }
            } else
                setRiportaAvantiIndietro(false);
        } catch (javax.ejb.EJBException e) {
            setAnnoSolareInScrivania(false);
            throw new BusinessProcessException(e);
        }
        return compenso;
    }

    protected void initializePrintBP(ActionContext context, AbstractPrintBP bp) {

        OfflineReportPrintBP printbp = (OfflineReportPrintBP) bp;
        CompensoBulk compenso = (CompensoBulk) getModel();
//	printbp.setReportName("/docamm/docamm/compenso.rpt");
//	printbp.setReportParameter(0, compenso.getCd_cds());
//	printbp.setReportParameter(1, compenso.getCd_unita_organizzativa());
//	printbp.setReportParameter(2, compenso.getEsercizio().toString());
//	printbp.setReportParameter(3, compenso.getPg_compenso().toString());

        printbp.setReportName("/docamm/docamm/compenso.jasper");

        Print_spooler_paramBulk param;
        param = new Print_spooler_paramBulk();
        param.setNomeParam("Esercizio");
        param.setValoreParam(compenso.getEsercizio().toString());
        param.setParamType("java.lang.Integer");
        printbp.addToPrintSpoolerParam(param);

        param = new Print_spooler_paramBulk();
        param.setNomeParam("CDS");
        param.setValoreParam(compenso.getCd_cds());
        param.setParamType("java.lang.String");
        printbp.addToPrintSpoolerParam(param);

        param = new Print_spooler_paramBulk();
        param.setNomeParam("UO");
        param.setValoreParam(compenso.getCd_unita_organizzativa());
        param.setParamType("java.lang.String");
        printbp.addToPrintSpoolerParam(param);

        param = new Print_spooler_paramBulk();
        param.setNomeParam("Pg_compenso");
        param.setValoreParam(compenso.getPg_compenso().toString());
        param.setParamType("java.lang.Integer");
        printbp.addToPrintSpoolerParam(param);

    }

    public void inizializzaCompensoPerConguaglio(ActionContext context, ConguaglioBulk conguaglio) throws BusinessProcessException {

        CompensoBulk compenso = (CompensoBulk) getModel();

        if (compenso.getImportoObbligazione().compareTo(new java.math.BigDecimal(0)) <= 0) {
            compenso.setStatoCompensoToObbligazioneSincronizzata();
            compenso.setStato_cofi(compenso.STATO_CONTABILIZZATO);
        } else {
            compenso.setStatoCompensoToSincronizzaObbligazione();
            setTab("tab", "tabCompensoObbligazioni");
        }
    }

    /**
     * Insert the method's description here.
     * Creation date: (10/07/2003 10.56.37)
     *
     * @return boolean
     */
    public boolean isAnnoSolareInScrivania() {
        return annoSolareInScrivania;
    }

    /**
     * Insert the method's description here.
     * Creation date: (10/07/2003 10.56.37)
     *
     * @param newAnnoSolareInScrivania boolean
     */
    public void setAnnoSolareInScrivania(boolean newAnnoSolareInScrivania) {
        annoSolareInScrivania = newAnnoSolareInScrivania;
    }

    /**
     * Insert the method's description here.
     * Creation date: (27/05/2002 14.40.04)
     *
     * @return it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk
     */
    public boolean isAutoGenerated() {
        return false;
    }

    public boolean isBottoneAnnullaModificaCORIEnabled() throws BusinessProcessException {

        if (this.isViewing() || this.isSearching())
            return false;

        return (getContributiCRUDController().getModelIndex() != -1 ||
                !getContributiCRUDController().getSelection().isEmpty());
    }

    public boolean isBottoneConfermaModificaCORIEnabled() throws BusinessProcessException {

        if (this.isViewing() || this.isSearching())
            return false;

        return (getContributiCRUDController().getModelIndex() != -1 ||
                !getContributiCRUDController().getSelection().isEmpty());
    }

    public boolean isBottoneCreaObbligazioneEnabled() throws BusinessProcessException {

        if (this.isViewing() || this.isSearching())
            return false;

        CompensoBulk compenso = (CompensoBulk) getModel();
        return (compenso != null &&
                compenso.getObbligazioneScadenzario() == null &&
                compenso.isStatoCompensoSincronizzaObbligazione() &&
                !compenso.isROPerChiusura());
    }

    public boolean isBottoneEliminaObbligazioneEnabled() throws BusinessProcessException {

        if (this.isViewing() || this.isSearching())
            return false;

        CompensoBulk compenso = (CompensoBulk) getModel();

        if (compenso != null && compenso.isROPerChiusura())
            return false;

        if (compenso != null && compenso.isStatoCompensoEseguiCalcolo())
            return false;

        return (compenso != null && compenso.getObbligazioneScadenzario() != null && !compenso.isStatoCofiPagato() && !compenso.isAnnullato());
    }

    public boolean isBottoneEseguiCalcoloEnabled() throws BusinessProcessException {

        if (this.isViewing() || this.isSearching())
            return false;

        CompensoBulk compenso = (CompensoBulk) getModel();

        return compenso != null && compenso.isStatoCompensoEseguiCalcolo() && !compenso.isROPerChiusura();
    }

    public boolean isBottoneModificaAutomaticaObbligazioneEnabled() throws BusinessProcessException {

        if (this.isViewing() || this.isSearching())
            return false;

        CompensoBulk compenso = (CompensoBulk) getModel();

        return (compenso != null &&
                compenso.getObbligazioneScadenzario() != null &&
                compenso.isStatoCompensoSincronizzaObbligazione() &&
                !compenso.isROPerChiusura());
    }

    public boolean isBottoneModificaManualeObbligazioneEnabled() throws BusinessProcessException {

        if (this.isSearching())
            return false;

        CompensoBulk compenso = (CompensoBulk) getModel();
        if (compenso != null && compenso.isStatoCompensoEseguiCalcolo())
            return false;

        return (compenso != null &&
                compenso.getObbligazioneScadenzario() != null && !compenso.isStatoCofiPagato() && !compenso.isAnnullato());
    }

    public boolean isBottoneVisualizzaDocContPrincipaleEnabled() throws BusinessProcessException {

        return ((CompensoBulk) getModel()).getDocContPrincipale() != null;
    }

    /**
     * Insert the method's description here.
     * Creation date: (10/07/2003 10.56.37)
     *
     * @return boolean
     */
    public boolean isCarryingThrough() {
        return carryingThrough;
    }

    /**
     * Insert the method's description here.
     * Creation date: (10/07/2003 10.56.37)
     *
     * @param newCarryingThrough boolean
     */
    public void setCarryingThrough(boolean newCarryingThrough) {
        carryingThrough = newCarryingThrough;
    }

    public boolean isContabilizzaButtonEnabled() throws BusinessProcessException {
        if (isSearching() || isInputReadonly())
            return false;

        CompensoBulk compenso = (CompensoBulk) getModel();
        boolean flg = false;

        if (compenso != null &&
                compenso.isStatoCompensoContabilizzaCofi() &&
                compenso.STATO_CONTABILIZZATO.equals(compenso.getStato_cofi()) &&
                compenso.LIBERO_FONDO_ECO.equals(compenso.getStato_pagamento_fondo_eco()))
            flg = true;

        //	Chiusura : se carico un compenso con esercizio precedente a quello solare :
        //	- esercizio scrivania != anno solare e obbligazione riportata --> disabilito
        //	- esercizio scrivania != anno solare e obbligazione non riportata --> abilito
        //	- esercizio scrivania = anno solare e obbligazione riportata --> abilito
        //	- esercizio scrivania = anno solare e obbligazione non riportata --> disabilito
        //if(	flg && compenso.getEsercizio().intValue()!=compenso.getAnnoSolare())
        //{
        //if(compenso.getEsercizioScrivania()==compenso.getAnnoSolare())
        //return compenso.isRiportataInScrivania();
        //else
        //return !compenso.isRiportata();
        //}


        // Gennaro Borriello - (04/11/2004 19.42.55)
        // Modif. relativa alla nuova gestione di isRiportata()
        if (flg) {
            if (compenso.getEsercizio().intValue() == compenso.getEsercizioScrivania())
                return !compenso.isRiportata();
            else
                return compenso.isRiportataInScrivania();
        }

        return flg;
    }

    public boolean isContabilizzaButtonHidden() {

        return isBringBack();
    }

    public boolean isDeleteButtonEnabled() {
        CompensoBulk compenso = (CompensoBulk) getModel();

        boolean flg = compenso != null &&
                compenso.getDt_cancellazione() == null &&
                !compenso.isStatoCompensoEseguiCalcolo() &&
                !isInputReadonly() &&
                !isSearching() &&
                !isInserting() &&
                !compenso.isDaFatturaPassiva();

        //	Chiusura : se carico un compenso con esercizio precedente a quello solare :
        //	- esercizio scrivania != anno solare e obbligazione riportata --> disabilito
        //	- esercizio scrivania != anno solare e obbligazione non riportata --> abilito
        //	- esercizio scrivania = anno solare e obbligazione riportata --> abilito
        //	- esercizio scrivania = anno solare e obbligazione non riportata --> disabilito
        //if(flg && compenso.getEsercizio().intValue()!=compenso.getAnnoSolare())
        //{
        //if(compenso.getEsercizioScrivania()==compenso.getAnnoSolare())
        //return compenso.isRiportata();
        //else
        //return !compenso.isRiportata();
        //}


        // Gennaro Borriello - (05/11/2004 12.23.28)
        // Modif. relativa alla nuova gestione di isRiportata()
        if (flg) {
            if (compenso.getEsercizio().intValue() == compenso.getEsercizioScrivania())
                return !compenso.isRiportata();
            else
                return compenso.isRiportataInScrivania();
        }

        return flg;
    }

    /**
     * Insert the method's description here.
     * Creation date: (27/05/2002 14.40.05)
     *
     * @return it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk
     */
    public boolean isDeleting() {
        return false;
    }

    public boolean isFreeSearchButtonHidden() {

        return super.isFreeSearchButtonHidden() || isSpesaBP();
    }

    /**
     * Insert the method's description here.
     * Creation date: (16/07/2002 12.39.40)
     *
     * @return it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk
     */
    public boolean isManualModify() {
        return true;
    }

    /**
     * Insert the method's description here.
     * Creation date: (03/09/2002 14.45.43)
     *
     * @return boolean
     */
    public boolean isObbligazioneValida(ActionContext context, it.cnr.jada.bulk.OggettoBulk bulk) throws BusinessProcessException {

        try {
            try {
                CompensoComponentSession sess = (CompensoComponentSession) createComponentSession();
                sess.validaObbligazione(context.getUserContext(), (Obbligazione_scadenzarioBulk) bulk, (CompensoBulk) getModel());
            } catch (it.cnr.jada.comp.ComponentException ex) {
                return false;
            }
            return true;
        } catch (java.rmi.RemoteException ex) {
            throw handleException(ex);
        }
    }

    //inserire il metodo verificaEsistenzaCompenso in isPrintButton
    public void isCompensoValidoXStampa(ActionContext context, CompensoBulk compenso) throws BusinessProcessException, ComponentException, RemoteException {
        CompensoComponentSession sess = (CompensoComponentSession) createComponentSession();
        setNocompenso(!sess.verificaEsistenzaCompenso(context.getUserContext(), compenso));
    }

    public boolean isCompensoValidoXContabil(ActionContext context, CompensoBulk compenso) throws BusinessProcessException, ComponentException, RemoteException {
        CompensoComponentSession sess = (CompensoComponentSession) createComponentSession();
        return (sess.isCompensoValido(context.getUserContext(), compenso));
    }

    public boolean isPrintButtonHidden() {
        //	return true;
        return super.isPrintButtonHidden() || isInserting() || isSearching() || isNocompenso();
    }

    public boolean isRiportaAvantiButtonEnabled() {
        CompensoBulk compenso = (CompensoBulk) getModel();
        return isCarryingThrough() || !compenso.isRiportata();
    }

    public boolean isRiportaAvantiButtonHidden() {
        return basicRiportaButtonHidden();
    }

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

    /**
     * Insert the method's description here.
     * Creation date: (10/07/2003 10.56.37)
     *
     * @param newRiportaAvantiIndietro boolean
     */
    public void setRiportaAvantiIndietro(boolean newRiportaAvantiIndietro) {
        riportaAvantiIndietro = newRiportaAvantiIndietro;
    }

    public boolean isRiportaIndietroButtonEnabled() {
        return isEditing() && !isDeleting() && !isDirty() && !isCarryingThrough();
    }

    public boolean isRiportaIndietroButtonHidden() {
        CompensoBulk compenso = (CompensoBulk) getModel();

        return basicRiportaButtonHidden() || (compenso != null && !(compenso.isRiportata() || isCarryingThrough()));
    }

    /**
     * Se l'esercizio della scrivania è precedente a quello solare
     * non posso creare una fattura da compenso
     */
    public boolean isRODatiFatturaPerChiusura(CompensoBulk compenso) {
        if (compenso == null)
            return false;

        if (compenso.getEsercizio() == null)
            return false;

        if (compenso.getAnnoSolare() > compenso.getEsercizio().intValue())
            return true;

        return false;
    }

    public boolean isROFindDatiLiquidazione() throws BusinessProcessException {

        CompensoBulk compenso = (CompensoBulk) getModel();
        if (compenso != null && !isViewing()) {
            if ((getParent() instanceof GestioneUtenteBP) && (compenso.isAssociatoADocumento())) {
                return true;
            }
        }

        return false;
    }

    public boolean isSaveButtonEnabled() {
        CompensoBulk compenso = (CompensoBulk) getModel();
        if (compenso == null)
            return super.isSaveButtonEnabled();

        return ((super.isSaveButtonEnabled() &&
                //!anticipo.isROPerChiusura()
                // GB-LF-MB (08/11/2004 11.35.04)
                // Modif. relativa alla nuova gestione di isRiportata()
                (!compenso.isROPerChiusura()
                        ||
                        carryingThrough)) || (isCigModificabile()));

    }

    /**
     * Insert the method's description here.
     * Creation date: (27/05/2002 14.40.05)
     *
     * @return boolean
     */
    public boolean isSpesaBP() {

        return getParent() != null && (getParent() instanceof it.cnr.contab.fondecon00.bp.FondoSpesaBP);
    }

    /**
     * Abilito il bottone undo Bring Back sempre
     */

    public boolean isUndoBringBackButtonEnabled() {

        return super.isUndoBringBackButtonEnabled() || isViewing();
    }

    /**
     * Carica tutti i mandati e le reversali associati al compenso in esame
     *
     * @param context  il Context che ha generato la richiesta
     * @param compenso it.cnr.contab.compensi00.docs.bulk.CompensoBulk
     * @param aTerzo   it.cnr.contab.compensi00.docs.bulk.V_terzo_per_compensoBulk
     * @return it.cnr.contab.compensi00.docs.bulk.CompensoBulk
     */
    public void loadDocContAssociati(ActionContext context) throws BusinessProcessException {

        try {

            CompensoBulk compenso = (CompensoBulk) getModel();

            CompensoComponentSession sess = (CompensoComponentSession) createComponentSession();
            java.util.List l = sess.loadDocContAssociati(context.getUserContext(), compenso);
            compenso.setDocContAssociati(l);

        } catch (it.cnr.jada.comp.ComponentException ex) {
            throw handleException(ex);
        } catch (java.rmi.RemoteException ex) {
            throw handleException(ex);
        }
    }

    /**
     * Gestisce la selezione di un Tipo Trattamento
     */
    public void onTipoTrattamentoChange(ActionContext context) throws BusinessProcessException {

        try {

            CompensoComponentSession comp = (CompensoComponentSession) createComponentSession();
            CompensoBulk compenso = comp.onTipoTrattamentoChange(context.getUserContext(), (CompensoBulk) getModel());
            setModel(context, compenso);
        } catch (it.cnr.jada.comp.ComponentException ex) {
            throw handleException(ex);
        } catch (java.rmi.RemoteException ex) {
            throw handleException(ex);
        }
    }

    public void onTipoRapportoInpsChange(ActionContext context) throws BusinessProcessException {

        try {

            CompensoComponentSession comp = (CompensoComponentSession) createComponentSession();
            CompensoBulk compenso = comp.onTipoRapportoInpsChange(context.getUserContext(), (CompensoBulk) getModel());

            setModel(context, compenso);

        } catch (it.cnr.jada.comp.ComponentException ex) {
            throw handleException(ex);
        } catch (java.rmi.RemoteException ex) {
            throw handleException(ex);
        }
    }

    public void reset(ActionContext context) throws BusinessProcessException {
        super.reset(context);
        setCarryingThrough(false);
    }

    public void resetForSearch(ActionContext context) throws BusinessProcessException {
        setCarryingThrough(false);
        super.resetForSearch(context);
    }

    /**
     * Insert the method's description here.
     * Creation date: (22/02/2002 18.28.25)
     */
    public void resetTabs(ActionContext context) {

        setTab("tab", "tabCompenso");
    }

    /**
     * Il metodo gestisce il 'riporto avanti' del documento contabile del compenso
     */
    public void riportaAvanti(ActionContext context) throws it.cnr.jada.bulk.ValidationException, BusinessProcessException {
        try {
            RiportoDocAmmComponentSession session = (RiportoDocAmmComponentSession) createComponentSession("CNRDOCAMM00_EJB_RiportoDocAmmComponentSession", RiportoDocAmmComponentSession.class);
            CompensoBulk compensoRiportato = (CompensoBulk) session.riportaAvanti(context.getUserContext(),
                    (IDocumentoAmministrativoBulk) getModel(),
                    getUserConfirm());
            setModel(context, compensoRiportato);
        } catch (Throwable e) {
            throw handleException(e);
        } finally {
            setUserConfirm(null);
        }
    }

    /**
     * Il metodo gestisce il 'riporto indietro' del documento contabile del compenso
     */
    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 {
            RiportoDocAmmComponentSession session = (RiportoDocAmmComponentSession) createComponentSession("CNRDOCAMM00_EJB_RiportoDocAmmComponentSession", RiportoDocAmmComponentSession.class);
            CompensoBulk compensoRiportato = (CompensoBulk) session.riportaIndietro(context.getUserContext(),
                    (IDocumentoAmministrativoBulk) getModel());
            basicEdit(context, compensoRiportato, true);
            setDirty(true);
        } catch (Throwable t) {
            setCarryingThrough(false);
            rollbackUserTransaction();
            throw handleException(t);
        }
    }

    /**
     * Ripristina la selezione del vecchio Tipo Rapporto
     **/
    public void ripristinaSelezioneTipoRapporto() {

        CompensoBulk compenso = (CompensoBulk) getModel();
        Tipo_rapportoBulk tipoRapporto = compenso.getTipoRapporto();

        // ripristino la selezione del Tipo Rapporto
        if (tipoRapporto != null) {
            for (java.util.Iterator i = compenso.getTipiRapporto().iterator(); i.hasNext(); ) {
                Tipo_rapportoBulk tipoRapp = (Tipo_rapportoBulk) i.next();
                if (tipoRapp.getCd_tipo_rapporto().equals(tipoRapporto.getCd_tipo_rapporto()))
                    compenso.setTipoRapporto(tipoRapp);
            }
        }
    }

    /**
     * Ripristina la selezione del vecchio Tipo Trattamento
     **/
    public void ripristinaSelezioneTipoTrattamento(ActionContext context) throws BusinessProcessException {

        CompensoBulk compenso = (CompensoBulk) getModel();
        Tipo_trattamentoBulk tipoTrattamento = compenso.getTipoTrattamento();

        // ripristino la selezione del Tipo Trattamento
        if (tipoTrattamento != null) {
            for (java.util.Iterator i = compenso.getTipiTrattamento().iterator(); i.hasNext(); ) {
                Tipo_trattamentoBulk tratt = (Tipo_trattamentoBulk) i.next();
                if (tratt.getCd_trattamento().equals(tipoTrattamento.getCd_trattamento())) {
                    compenso.setTipoTrattamento(tratt);
//				onTipoTrattamentoChange(context);
                }
            }
        }
    }

    /**
     * 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 { CompensoComponentSession sess = (CompensoComponentSession) createComponentSession(); sess.rollbackToSavePoint(context.getUserContext(), savePointName); } catch (java.rmi.RemoteException e) { throw handleException(e); } catch (it.cnr.jada.comp.ComponentException e) { throw handleException(e); } } /** * Il metodo gestisce il 'riporto avanti' del documento contabile del compenso. * Il metodo salva il compenso, invoca la procedura per riportare avanti il documento contabile e committa */ public void salvaRiportandoAvanti(ActionContext context) throws it.cnr.jada.bulk.ValidationException, BusinessProcessException { CompensoBulk compensoTemp = (CompensoBulk) getModel(); try { setSavePoint(context, "RIPORTA_AVANTI"); completeSearchTools(context, this); validate(context); saveChildren(context); update(context); riportaAvanti(context); } catch (Throwable e) { rollbackToSavePoint(context, "RIPORTA_AVANTI"); setModel(context, compensoTemp); 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, it.cnr.jada.bulk.ValidationException { super.save(context); setCarryingThrough(false); } /** * Insert the method's description here. * Creation date: (27/05/2002 14.40.05) * * @return it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk */ public void setIsDeleting(boolean newIsDeleting) { } /** * 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 { CompensoComponentSession sess = (CompensoComponentSession) createComponentSession(); sess.setSavePoint(context.getUserContext(), savePointName); } catch (java.rmi.RemoteException e) { throw handleException(e); } catch (it.cnr.jada.comp.ComponentException e) { throw handleException(e); } } public void update(ActionContext context) throws it.cnr.jada.action.BusinessProcessException { try { getModel().setToBeUpdated(); setModel( context, ((CompensoComponentSession) createComponentSession()).modificaConBulk( context.getUserContext(), getModel(), getUserConfirm())); setUserConfirm(null); } catch (Throwable e) { throw handleException(e); } } /** * Insert the method's description here. * Creation date: (25/02/2002 12.56.44) * * @param userContext it.cnr.jada.UserContext * @param compenso it.cnr.contab.compensi00.docs.bulk.CompensoBulk * @param aTerzo it.cnr.contab.compensi00.docs.bulk.V_terzo_per_compensoBulk * @return it.cnr.contab.compensi00.docs.bulk.CompensoBulk */ private void validaDatiLiquidazione(ActionContext context) throws BusinessProcessException { try { CompensoBulk compenso = (CompensoBulk) getModel(); //Controllo su Regione IRAP, Voce IVA e Tipologia Rischio if (compenso.isVisualizzaRegioneIrap()) if (compenso.getCd_regione_irap() == null) throw new it.cnr.jada.bulk.ValidationException("Inserire la Regione IRAP"); else completeSearchTool(context, getModel(), getBulkInfo().getFieldProperty("find_regione_irap")); if (compenso.isVisualizzaVoceIva()) if (compenso.getCd_voce_iva() == null) throw new it.cnr.jada.bulk.ValidationException("Inserire la Voce IVA"); else completeSearchTool(context, getModel(), getBulkInfo().getFieldProperty("find_voce_iva")); if (compenso.isVisualizzaTipologiaRischio()) if (compenso.getTipologiaRischio() == null) throw new it.cnr.jada.bulk.ValidationException("Inserire la Tipologia di Rischio"); else completeSearchTool(context, getModel(), getBulkInfo().getFieldProperty("find_tipologia_rischio")); } catch (it.cnr.jada.bulk.ValidationException ex) { throw handleException(ex); } } /** * 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 { } /** * Significato codici di errore: * -> 0 nessun errore * -> 1 non è selezionato il TERZO * -> 2 il TERZO non è valido * -> 3 non è stato selezionato il TIPO RAPPORTO * -> 4 il TIPO RAPPORTO non è valido * -> 5 non è stato selezionato il TIPO TRATTAMENTO * -> 6 il TIPO TRATTAMENTO non è valido **/ public int validaTerzo(ActionContext context, boolean aBool) throws BusinessProcessException { try { CompensoComponentSession sess = (CompensoComponentSession) createComponentSession(); return sess.validaTerzo(context.getUserContext(), (CompensoBulk) getModel(), aBool); } catch (it.cnr.jada.comp.ComponentException ex) { throw handleException(ex); } catch (java.rmi.RemoteException ex) { throw handleException(ex); } } 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 boolean isNocompenso() { return nocompenso; } public void setNocompenso(boolean nocompenso) { this.nocompenso = nocompenso; } public boolean isTerzoCervellone(UserContext userContext, CompensoBulk compenso) throws BusinessProcessException { try { CompensoComponentSession sess = (CompensoComponentSession) createComponentSession(); return sess.isTerzoCervellone(userContext, compenso); } catch (it.cnr.jada.comp.ComponentException ex) { throw handleException(ex); } catch (java.rmi.RemoteException ex) { throw handleException(ex); } } public boolean isAccontoAddComOkPerContabil(UserContext userContext, CompensoBulk compenso) throws BusinessProcessException { try { CompensoComponentSession sess = (CompensoComponentSession) createComponentSession(); return sess.isAccontoAddComOkPerContabil(userContext, compenso); } catch (it.cnr.jada.comp.ComponentException ex) { throw handleException(ex); } catch (java.rmi.RemoteException ex) { throw handleException(ex); } } public boolean isGestiteDeduzioniIrpef(UserContext userContext) throws BusinessProcessException { try { CompensoComponentSession sess = (CompensoComponentSession) createComponentSession(); return sess.isGestiteDeduzioniIrpef(userContext); } catch (it.cnr.jada.comp.ComponentException ex) { throw handleException(ex); } catch (java.rmi.RemoteException ex) { throw handleException(ex); } } public void completaIncarico(ActionContext context, CompensoBulk compenso, Incarichi_repertorio_annoBulk incarico_anno) throws BusinessProcessException { try { CompensoComponentSession component = (CompensoComponentSession) createComponentSession(); CompensoBulk compensoClone = component.completaIncarico(context.getUserContext(), compenso, incarico_anno); setModel(context, compensoClone); } catch (it.cnr.jada.comp.ComponentException ex) { throw handleException(ex); } catch (java.rmi.RemoteException ex) { throw handleException(ex); } } public BigDecimal prendiUtilizzato(ActionContext context, CompensoBulk compenso, Incarichi_repertorio_annoBulk incarico_anno) throws BusinessProcessException { try { CompensoComponentSession component = (CompensoComponentSession) createComponentSession(); BigDecimal utilizzato = component.prendiUtilizzato(context.getUserContext(), incarico_anno); return utilizzato; //setModel(context, compensoClone); } catch (it.cnr.jada.comp.ComponentException ex) { throw handleException(ex); } catch (java.rmi.RemoteException ex) { throw handleException(ex); } } /** * Gestisce l'obbligatorietà dell'inserimento o meno dell'incarico sul compenso */ public boolean isIncaricoRequired(ActionContext context) throws BusinessProcessException { return isIncaricoRequired(context, (CompensoBulk) getModel()); } /** * Gestisce l'obbligatorietà dell'inserimento o meno dell'incarico sul compenso */ public boolean isIncaricoRequired(ActionContext context, CompensoBulk compenso) throws BusinessProcessException { try { if (isGestioneIncarichiEnabled == null) setGestioneIncarichiEnabled(Utility.createParametriCnrComponentSession().getParametriCnr(context.getUserContext(), CNRUserContext.getEsercizio(context.getUserContext())).getFl_incarico()); } catch (it.cnr.jada.comp.ComponentException ex) { throw handleException(ex); } catch (java.rmi.RemoteException ex) { throw handleException(ex); } return this.isGestioneIncarichiEnabled() && compenso != null && compenso.isIncaricoEnabled(); } public Boolean isGestioneIncarichiEnabled() { return isGestioneIncarichiEnabled; } private void setGestioneIncarichiEnabled(Boolean isGestioneIncarichiEnabled) { this.isGestioneIncarichiEnabled = isGestioneIncarichiEnabled; } public void validaIncaricoAnno(ActionContext context, Incarichi_repertorio_annoBulk incAnno) throws BusinessProcessException, ValidationException { try { if (incAnno != null) { if (Utility.createIncarichiRepertorioComponentSession().hasVariazioneIntegrazioneIncaricoProvvisoria(context.getUserContext(), incAnno.getIncarichi_repertorio())) { throw new it.cnr.jada.bulk.ValidationException("Contratto " + incAnno.getEsercizio() + "-" + incAnno.getPg_repertorio() + " non utilizzabile in quanto risulta associata una variazione di " + "tipo \n\"Periodo transitorio - Adeguamento alla durata del progetto\" in stato \"Provvisorio\".\n" + "Rendere \"Definitiva\" la variazione del contratto e successivamente registrare il compenso."); } } } catch (it.cnr.jada.comp.ComponentException ex) { throw handleException(ex); } catch (java.rmi.RemoteException ex) { throw handleException(ex); } } public boolean isSospensioneIrpefOkPerContabil(UserContext userContext, CompensoBulk compenso) throws BusinessProcessException { try { CompensoComponentSession sess = (CompensoComponentSession) createComponentSession(); return sess.isSospensioneIrpefOkPerContabil(userContext, compenso); } catch (it.cnr.jada.comp.ComponentException ex) { throw handleException(ex); } catch (java.rmi.RemoteException ex) { throw handleException(ex); } } public void ricercaDatiTrovato(ActionContext context) throws Exception { FatturaPassivaComponentSession h; CompensoBulk riga = (CompensoBulk) getModel(); try { h = (FatturaPassivaComponentSession) createComponentSession("CNRDOCAMM00_EJB_FatturaPassivaComponentSession", FatturaPassivaComponentSession.class); TrovatoBulk trovato = h.ricercaDatiTrovatoValido(context.getUserContext(), riga.getPg_trovato()); riga.setTrovato(trovato); } catch (java.rmi.RemoteException e) { riga.setTrovato(new TrovatoBulk()); handleException(e); } catch (BusinessProcessException e) { riga.setTrovato(new TrovatoBulk()); handleException(e); } catch (Exception e) { riga.setTrovato(new TrovatoBulk()); throw e; } } /* public Boolean isGestionePrestazioneCompensoEnabled() { return isGestionePrestazioneCompensoEnabled; } private void setGestionePrestazioneCompensoEnabled(Boolean isGestionePrestazioneCompensoEnabled) { this.isGestionePrestazioneCompensoEnabled = isGestionePrestazioneCompensoEnabled; } */ public void valorizzaInfoDocEle(ActionContext context, CompensoBulk compenso) throws BusinessProcessException { try { CompensoComponentSession comp = (CompensoComponentSession) createComponentSession(); compenso = comp.valorizzaInfoDocEle(context.getUserContext(), compenso); setModel(context, compenso); } catch (it.cnr.jada.comp.ComponentException ex) { throw handleException(ex); } catch (java.rmi.RemoteException ex) { throw handleException(ex); } } public Boolean isCigModificabile() { return Optional.ofNullable(getModel()) .filter(CompensoBulk.class::isInstance) .map(CompensoBulk.class::cast) .map(compensoBulk -> { return Optional.ofNullable(compensoBulk.getTipoTrattamento()) .filter(tipo_trattamentoBulk -> Optional.ofNullable(tipo_trattamentoBulk.getCd_trattamento()).isPresent()) .filter(tipo_trattamentoBulk -> tipo_trattamentoBulk.isTipoDebitoSiopeCommerciale()) .isPresent() && Optional.ofNullable(compensoBulk.getObbligazioneScadenzario()) .map(obbligazione_scadenzarioBulk -> Optional.ofNullable(obbligazione_scadenzarioBulk.getObbligazione()).isPresent()) .orElse(Boolean.FALSE) && Optional.ofNullable(compensoBulk.getObbligazioneScadenzario().getObbligazione()) .flatMap(obbligazioneBulk -> Optional.ofNullable(obbligazioneBulk.getContratto())) .map(contrattoBulk -> { return !Optional.ofNullable(contrattoBulk.getPg_contratto()).isPresent() || !Optional.ofNullable(contrattoBulk.getCig()).map(CigBulk::getCdCig).isPresent(); }).orElse(Boolean.TRUE); }).orElse(Boolean.FALSE); } @Override public boolean isInputReadonly() { CompensoBulk compenso = (CompensoBulk) getModel(); if (!isViewing()) { if (compenso != null && compenso.isPagato()) return true; } return super.isInputReadonly(); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy