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

it.cnr.contab.config00.comp.EsercizioComponent 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.config00.comp;

import it.cnr.contab.config00.bulk.Parametri_cnrBulk;
import it.cnr.contab.config00.esercizio.bulk.EsercizioBulk;
import it.cnr.contab.config00.esercizio.bulk.EsercizioHome;
import it.cnr.contab.config00.sto.bulk.CdsBulk;
import it.cnr.contab.config00.sto.bulk.EnteBulk;
import it.cnr.contab.config00.sto.bulk.EnteHome;
import it.cnr.contab.doccont00.core.bulk.V_disp_cassa_cdsBulk;
import it.cnr.contab.doccont00.core.bulk.V_disp_cassa_cnrBulk;
import it.cnr.contab.utenze00.bp.CNRUserContext;
import it.cnr.contab.util.Utility;
import it.cnr.jada.UserContext;
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.comp.ApplicationException;
import it.cnr.jada.comp.ComponentException;
import it.cnr.jada.persistency.PersistencyException;
import it.cnr.jada.persistency.Persistent;
import it.cnr.jada.persistency.sql.LoggableStatement;
import it.cnr.jada.persistency.sql.SQLBuilder;

import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;

/**
 * Classe che ridefinisce alcune operazioni di CRUD su EsercizioBulk
 */

public class EsercizioComponent extends it.cnr.jada.comp.CRUDComponent implements IEsercizioMgr, Cloneable, Serializable {


    //@@<< CONSTRUCTORCST
    public EsercizioComponent() {
//>>

//<< CONSTRUCTORCSTL
        /*Default constructor*/
//>>

//<< CONSTRUCTORCSTT

    }

    /**
     * Aggiorna la cassa iniziale dell'esercizio successivo a quello che si sta chiudendo
     * 

* Nome: aggiorna cassa iniziale * Pre: l'utente ha richiesto la chiusura di un esercizio contabile per un cds * il sistema ha verificato che l'esercizio è chiudibile (metodo 'verificaChiudibilitaEsercizio') * Post: il sistema imposta l'importo della cassa iniziale dell'esercizio successivo a quello che viene chiuso *

* 09/02/2004 - NON PIU' UTILIZZATO * L'aggiornamento della cassa iniziale del CDS in esercizio successivo (Ente o no) viene fatta nel verificaChiudibilitaEsercizio * * @param userContext contesto * @param esercizio esercizio da chiudere * @return void */ protected void aggiornaIm_cassa_iniziale(UserContext userContext, EsercizioBulk esercizio) throws it.cnr.jada.comp.ComponentException { try { EsercizioHome home = (EsercizioHome) getHome(userContext, EsercizioBulk.class); BigDecimal imDispCassa = findIm_disp_cassa(userContext, esercizio); EsercizioBulk esSuccessivo = (EsercizioBulk) home.findAndLock(new EsercizioBulk(esercizio.getCd_cds(), new Integer(esercizio.getEsercizio().intValue() + 1))); if (esSuccessivo == null) throw new ApplicationException("Esercizio contabile " + esSuccessivo.getEsercizio() + " per Cds " + esSuccessivo.getCd_cds() + " non trovato"); esSuccessivo.setIm_cassa_iniziale(imDispCassa); esSuccessivo.setUser(userContext.getUser()); updateBulk(userContext, esSuccessivo); } catch (Throwable e) { throw handleException(esercizio, e); } } /** * Richiama la stored procedure che apre i piani di gestione per l'esercizio selezionata *

* Pre-post-conditions: *

* Nome: Apertura PdG da parte dell'ENTE * Pre: La richiesta di aprire i piani di gestione è stata fatta dal CDS ENTE e l'esercizio è in stato STATO_INIZIALE = 'I' * Post: Viene richiamata la stored procedure che aggiorna a STATO_PDG_APERTO = 'G' lo stato del PDG ENTE *

* Nome: Apertura PDG da parte di CDS non ENTE da stato = a STATO_INIZIALE * Pre: La richiesta di aprire i propri piani di gestione è stata fatta da un CDS non ENTE per un esercizio in STATO_INIZIALE = 'I' * Pre: Lo stato dell'esercizio per l'ENTE è in STATO_PDG_APERTO = 'G' * Post: Viene richiamata la stored procedure che apre tutti i piani di gestione dei cdr appartenenti al CDS e viene aggiornato * lo stato dell'esercizio selezionato dal valore STATO_INIZIALE al valore STATO_PDG_APERTO per il CDS in processo *

* Nome: Apertura PDG da parte di CDS non ENTE da stato DIVERSO da STATO_INIZIALE * Pre: La richiesta di aprire i propri piani di gestione è stata fatta da un CDS non ENTE per un esercizio in stato DIVERSO da STATO_INIZIALE * Pre: Lo stato dell'esercizio per l'ENTE è in STATO_PDG_APERTO = 'G' * Post: Viene richiamata la stored procedure che apre tutti i piani di gestione dei cdr appartenenti al CDS * * @param userContext lo UserContext che ha generato la richiesta * @param esercizio l' EsercizioBulk per il quale e' necessario aprire i pianio di gestione * @return L'EsercizioBulk risultante dopo l'operazione di modifica stato */ public EsercizioBulk apriPianoDiGestione(UserContext userContext, EsercizioBulk esercizio) throws it.cnr.jada.comp.ComponentException { try { EsercizioBulk esercizioEnte = getEsercizioEnte(userContext, esercizio); if (!esercizio.getCd_cds().equals(esercizioEnte.getCd_cds()) && esercizioEnte.getSt_apertura_chiusura().equals(esercizio.STATO_INIZIALE)) throw handleException(new ApplicationException("Il piano di gestione non è stato ancora aperto dall'Ente")); EsercizioHome home = (EsercizioHome) getHome(userContext, EsercizioBulk.class); home.callApriPdGProcedure(esercizio); if (esercizio.getSt_apertura_chiusura().equals(esercizio.STATO_INIZIALE)) { esercizio.setSt_apertura_chiusura(esercizio.STATO_PDG_APERTO); updateBulk(userContext, esercizio); } return esercizio; } catch (Throwable e) { throw handleException(esercizio, e); } } /** * Esegue una operazione di modifica dello stato di un EsercizioBulk. *

* Pre-post-conditions: *

* Nome: Modifica stato Esercizio iniziale * Pre: La richiesta di modifica dello stato di un Esercizio con stato 'iniziale' è stata generata * Post: Viene generata una ComponentException che ha come dettaglio l'ApplicationException che descrive l'errore da * visualizzare all'utente ("Non e' possibile cambiare lo stato iniziale"); *

* Nome: Modifica stato Esercizio a aperto - OK * Pre: La richiesta di modifica dello stato di un Esercizio da 'Piano di gestione aperto' a 'aperto' è stata generata * e lo stato dell'esercizio precedente per il cds corrente e' chiuso ( provvisoriamente o definitivamente) e * non esistono cds con (esercizio - 2) in stato diverso da chiuso (provvisoriamente o definitivamente) * Post: Lo stato dell'Esercizio viene aggiornato ad 'aperto' *

* Nome: Modifica stato Esercizio a aperto - Errore 1 * Pre: La richiesta di modifica dello stato di un Esercizio da 'iniziale' a 'aperto' è stata generata e lo stato * dell'esercizio precedente per il cds corrente non e' chiuso ( provvisoriamente o definitivamente) * Post: Viene generata una ComponentException che ha come dettaglio l'ApplicationException che descrive l'errore da * visualizzare all'utente ("L'esercizio precedente non è stato chiuso"); *

* Nome: Modifica stato Esercizio a aperto - Errore 2 * Pre: La richiesta di modifica dello stato di un Esercizio da 'iniziale' a 'aperto' è stata generata e esiste almeno * un cds per il quale l'esercizio del secondo anno precedente (esercizio -2) e' in stato non chiuso * provvisoriamente o definitivamente * Post: Viene generata una ComponentException che ha come dettaglio l'ApplicationException che descrive l'errore da * visualizzare all'utente ("Esistono esercizi non chiusi per l'anno XXXX"); *

* Nome: Modifica stato Esercizio a aperto - Esercizio economico CdS in stato chiuso * Pre: E' stato riochiesto di portare lo stato dell'esercizio ad 'Aperto', ma l'esercizio * economico del CdS risulta chiuso. * Post: Viene generata una ComponentException che ha come dettaglio l'ApplicationException che descrive l'errore da * visualizzare all'utente ("L'esercizio economico del CdS risulta in stato chiuso."); *

*

* Nome: Modifica stato Esercizio a aperto - Esercizio Ente in stato chiuso * Pre: E' stato riochiesto di portare lo stato dell'esercizio ad 'Aperto', ma l'esercizio * dell'Ente risulta chiuso. * Post: Viene generata una ComponentException che ha come dettaglio l'ApplicationException che descrive l'errore da * visualizzare all'utente ("L'esercizio dell'Ente risulta in stato chiuso."); *

* Nome: Modifica stato Esercizio chiuso * Pre: La richiesta di modifica dello stato di un Esercizio con stato 'chiuso' è stata generata * la procedura che verifica la chiudibilità dell'esercizio ritorna che l'esercizio non è chiudibile * Post: Viene generata una ComponentException che ha come dettaglio l'ApplicationException che descrive l'errore da * visualizzare all'utente ("Non e' possibile cambiare lo stato"); *

* Nome: Modifica stato Esercizio a chiuso * Pre: La richiesta di modifica dello stato di un Esercizio a 'chiuso' * è stata generata * la procedura che verifica la chiudibilità dell'esercizio ritorna che l'esercizio è chiudibile * Post: Lo stato dell'Esercizio e' stato aggiornato e l'importo della cassa iniziale dell'esercizio successivo * è stato impostato dalla stessa procedura che verifica lachiudibilità dell'esercizio * * @param userContext lo UserContext che ha generato la richiesta * @param esercizio l' EsercizioBulk il cui stato deve essere modificato * @return L'EsercizioBulk risultante dopo l'operazione di modifica stato */ public EsercizioBulk cambiaStatoConBulk(UserContext userContext, EsercizioBulk esercizio) throws it.cnr.jada.comp.ComponentException { try { EsercizioHome esercizioHome = (EsercizioHome) getHome(userContext, esercizio); /* if ( esercizio.getSt_apertura_chiusura().equals(esercizio.STATO_CHIUSO_DEF) || esercizio.getSt_apertura_chiusura().equals(esercizio.STATO_INIZIALE)) throw new it.cnr.jada.comp.ApplicationException( "Non è possibile cambiare lo stato"); */ if (esercizio.getSt_apertura_chiusura().equals(esercizio.STATO_INIZIALE)) throw new it.cnr.jada.comp.ApplicationException("Non è possibile cambiare lo stato"); String next = (String) EsercizioBulk.getProssimoStato().get(esercizio.getSt_apertura_chiusura()); // pdg aperto --> aperto if (esercizio.STATO_PDG_APERTO.equals(esercizio.getSt_apertura_chiusura()) && next.equals(esercizio.STATO_APERTO)) { // EsercizioBulk esercizioPrecedente = esercizioHome.findEsercizioPrecedente( esercizio ); // if ( esercizioPrecedente != null && !esercizioPrecedente.isChiuso() ) // throw new it.cnr.jada.comp.ApplicationException( "L'esercizio precedente non è stato chiuso." ); if (!esercizioHome.verificaEsercizi2AnniPrecedenti(esercizio)) throw new it.cnr.jada.comp.ApplicationException("Esistono esercizi non chiusi per l'anno " + new Integer(esercizio.getEsercizio().intValue() - 2)); } // chiuso --> aperto - Esercizio ENTE chiuso if (esercizio.STATO_CHIUSO_DEF.equals(esercizio.getSt_apertura_chiusura()) && esercizio.STATO_CHIUSO_DEF.equals(getEsercizioEnte(userContext, esercizio).getSt_apertura_chiusura())) { throw new it.cnr.jada.comp.ApplicationException("Attenzione: l'esercizio dell'Ente risulta in stato chiuso."); } // chiuso --> aperto if (esercizio.STATO_CHIUSO_DEF.equals(esercizio.getSt_apertura_chiusura()) && next.equals(esercizio.STATO_APERTO)) { EsercizioBulk esercizioSuccessivo = esercizioHome.findEsercizioSuccessivo(esercizio); if (esercizioSuccessivo != null && esercizioSuccessivo.isChiuso()) throw new it.cnr.jada.comp.ApplicationException("E' possibile mettere in stato aperto solo l'ultimo esercizio chiuso."); } // chiuso --> aperto - Esercizio economico del CdS chiuso if (esercizio.STATO_CHIUSO_DEF.equals(esercizio.getSt_apertura_chiusura()) && isEsercizioCdSChiuso(userContext)) throw new it.cnr.jada.comp.ApplicationException("Attenzione: l'esercizio economico del CdS risulta in stato chiuso."); // aperto --> chiuso if (esercizio.STATO_APERTO.equals(esercizio.getSt_apertura_chiusura()) && next.equals(esercizio.STATO_CHIUSO_DEF)) { EsercizioBulk esercizioPrecedente = esercizioHome.findEsercizioPrecedente(esercizio); if (esercizioPrecedente != null && !esercizioPrecedente.isChiuso()) throw new it.cnr.jada.comp.ApplicationException("E' impossibile mettere in stato chiuso perchè l'esercizio precedente non è ancora chiuso."); verificaChiudibilitaEsercizio(userContext, esercizio); // aggiornaIm_cassa_iniziale( userContext, esercizio ); } esercizio.setSt_apertura_chiusura(next); updateBulk(userContext, esercizio); return esercizio; } catch (Throwable e) { throw handleException(esercizio, e); } } /** * Esegue una operazione di creazione di un EsercizioBulk. *

* Pre-post-conditions: *

* Nome: Creazione dell'esercizio per l'ente * Pre: La richiesta di creazione dell'esercizio per l'ente è stata generata * Post: L'esercizio dell'ente e' stato creato con stato 'iniziale' *

* Nome: Creazione di un esercizio consecutivo ad un esercizio già creato per cds ente * Pre: La richiesta di creazione di un esercizio consecutivo ad un esercizio già creato in precedenza * è stata generata * Post: Il nuovo Esercizio e' stato creato con stato 'iniziale' *

* Nome: Creazione di un esercizio consecutivo ad un esercizio già creato per cds diverso da ente e lo stesso esercizio esiste per l'ente * Pre: La richiesta di creazione di un esercizio consecutivo ad un esercizio già creato per cds diverso da ente e lo stesso esercizio esiste per l'ente * è stata generata * Post: Il nuovo Esercizio e' stato creato con stato 'iniziale' *

* Nome: Creazione di un esercizio consecutivo ad un esercizio già creato per cds diverso da ente e lo stesso esercizio non esiste per l'ente * Pre: La richiesta di creazione di un esercizio consecutivo ad un esercizio già creato per cds diverso da ente e lo stesso esercizio non esiste per l'ente * è stata generata * Post: Viene generata una ComponentException che ha come dettaglio l'ApplicationException che descrive l'errore da * visualizzare all'utente *

* Nome: Creazione di un esercizio non consecutivo agli esercizi già creati * Pre: La richiesta di creazione di un esercizio non consecutivo agli esercizi già creat in precedenza * è stata generata * Post: Viene generata una ComponentException che ha come dettaglio l'ApplicationException che descrive l'errore da * visualizzare all'utente * * @param userContext lo UserContext che ha generato la richiesta * @param bulk l' EsercizioBulk che deve essere creato * @return L'EsercizioBulk risultante dopo l'operazione di creazione. */ public OggettoBulk creaConBulk(UserContext userContext, OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException { try { EsercizioBulk esercizio = (EsercizioBulk) bulk; EsercizioHome esercizioHome = (EsercizioHome) getHome(userContext, esercizio); getEsercizioEnte(userContext, esercizio); it.cnr.jada.persistency.sql.SQLBuilder sql = esercizioHome.createSQLBuilder(); //cerco se la chiave e' già presente nel db sql.addClause("AND", "cd_cds", sql.EQUALS, esercizio.getCd_cds()); sql.addClause("AND", "esercizio", sql.EQUALS, esercizio.getEsercizio()); // se non e' presente la chiave nel db if (sql.executeCountQuery(getConnection(userContext)) == 0) { sql = esercizioHome.createSQLBuilder(); sql.addClause("AND", "cd_cds", sql.EQUALS, esercizio.getCd_cds()); if (sql.executeCountQuery(getConnection(userContext)) != 0) { EsercizioBulk esercizioPrecedente = esercizioHome.findEsercizioPrecedente(esercizio); if (esercizioPrecedente == null) throw new it.cnr.jada.comp.ApplicationException("Non esiste l'esercizio precedente"); } } super.creaConBulk(userContext, esercizio); creaEsplVociEsercizio(userContext, esercizio); return bulk; } catch (Throwable e) { throw handleException(bulk, e); } } /** * Aggiorna il PDC finanziario per inserimento dell'esercizio per un dato CDS *

* Viene invocato il metodo creaEsplVociEsercizio() di CNRCTB001 per l'aggiornamento del PDC finanziario *

* -- Esplosione della struttura organizzativa nel nuovo anno * -- (Funzione di aggiornamento di VOCE_F per la parte strutturale legata a CDS/UO e CDR validi nell'esercizio in definizione) * -- Funzione NON invocabile da trigger AI su ESERCIZIO perchè utilizza le viste V_XXXX_VALIDX sulla struttura organizzativa * -- * -- aEs -> codice esercizio * -- aCdCDS -> codice CDS * -- aUser codice utente che effettua la modifica *

* Creation date: (05/04/2001 14:07:09) * * @param aUC user CONTEXT * @param aEsBulk bulk esercizio contabile in inserimento */ private void creaEsplVociEsercizio(UserContext aUC, EsercizioBulk aEsBulk) throws it.cnr.jada.comp.ComponentException { try { Parametri_cnrBulk parCnr = Utility.createParametriCnrComponentSession().getParametriCnr(aUC, aEsBulk.getEsercizio()); if (!parCnr.getFl_nuovo_pdg()) { LoggableStatement cs = new LoggableStatement(getConnection(aUC), "{call " + it.cnr.jada.util.ejb.EJBCommonServices.getDefaultSchema() + "CNRCTB001.creaEsplVociEsercizio(?,?,?)}", false, this.getClass()); try { cs.setObject(1, aEsBulk.getEsercizio()); cs.setString(2, aEsBulk.getCd_cds()); cs.setString(3, null); // Viene utilizzato l'utcr dell'esercizio appena inserito cs.executeQuery(); } catch (Throwable e) { throw handleException(e); } finally { cs.close(); } } } catch (SQLException e) { throw handleException(e); } catch (Exception e) { throw handleException(e); } } /** * Impedisce la cancellazione di un EsercizioBulk. *

* Pre-post-conditions: *

* Nome: Cancellazione Esercizio * Pre: La richiesta di cancellazione di un Esercizio è stata generata * Post: Viene generata una ComponentException che ha come dettaglio l'ApplicationException che descrive l'errore da * visualizzare all'utente ("Non e' possibile cancellare un Esercizio"); * * @param userContext lo UserContext che ha generato la richiesta * @param bulk l' EsercizioBulk */ public void eliminaConBulk(UserContext userContext, OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException { throw handleException(new ApplicationException("Non e' possibile cancellare un Esercizio")); } protected BigDecimal findIm_disp_cassa(UserContext userContext, EsercizioBulk esercizio) throws it.cnr.jada.comp.ComponentException { try { EnteBulk aEnte = (EnteBulk) getHome(userContext, EnteBulk.class).findAll().get(0); BigDecimal imDispCassa; // Se l'esercizio in processo è per l'ENTE ritorno con successo if (esercizio.getCd_cds().equals(aEnte.getCd_unita_organizzativa())) { SQLBuilder sql = getHome(userContext, V_disp_cassa_cnrBulk.class).createSQLBuilder(); sql.addSQLClause("AND", "ESERCIZIO", sql.EQUALS, esercizio.getEsercizio()); List result = getHome(userContext, V_disp_cassa_cnrBulk.class).fetchAll(sql); if (result == null || result.size() == 0) throw new ApplicationException(" Disponibilità di cassa dell'Ente per esercizio " + esercizio.getEsercizio() + " non è stata trovata"); imDispCassa = ((V_disp_cassa_cnrBulk) result.get(0)).getIm_disponibilta_cassa(); } else //per cds { SQLBuilder sql = getHome(userContext, V_disp_cassa_cdsBulk.class).createSQLBuilder(); sql.addSQLClause("AND", "ESERCIZIO", sql.EQUALS, esercizio.getEsercizio()); sql.addSQLClause("AND", "cd_cdS", sql.EQUALS, esercizio.getCd_cds()); List result = getHome(userContext, V_disp_cassa_cdsBulk.class).fetchAll(sql); if (result == null || result.size() == 0) throw new ApplicationException(" Disponibilità di cassa del Cds " + esercizio.getCd_cds() + " per esercizio " + esercizio.getEsercizio() + " non è stata trovata"); imDispCassa = ((V_disp_cassa_cdsBulk) result.get(0)).getIm_disponibilita_cassa(); } return imDispCassa; } catch (Throwable e) { throw handleException(e); } } /** * Estrae il bulk dell'esercizio dell'ente lockandolo * Nel caso non trovi l'ente o l'esercizio dell'ente nel caso esercizio non corrisponda all'ente, ritorna un'eccezione * * @param userContext contesto * @param esercizio esercizio in processo * @return l'esercizio per l'ente corrispondente all'anno specificato in esercizio */ protected EsercizioBulk getEsercizioEnte(UserContext userContext, EsercizioBulk esercizio) throws it.cnr.jada.comp.ComponentException { try { EsercizioHome home = (EsercizioHome) getHome(userContext, EsercizioBulk.class); EnteHome aEnteHome = (EnteHome) getHome(userContext, EnteBulk.class); EnteBulk aEnte = new EnteBulk(); aEnte.setCd_tipo_unita(it.cnr.contab.config00.sto.bulk.Tipo_unita_organizzativaHome.TIPO_UO_ENTE); List aL = aEnteHome.find(aEnte); if (aL.size() == 0) throw handleException(new ApplicationException("CDS ENTE non trovato!")); aEnte = (EnteBulk) aL.get(0); // Se l'esercizio in processo è per l'ENTE ritorno con successo if (esercizio.getCd_cds().equals(aEnte.getCd_unita_organizzativa())) return esercizio; EsercizioBulk esercizioEnte = new EsercizioBulk(); esercizioEnte.setEsercizio(esercizio.getEsercizio()); esercizioEnte.setCd_cds(aEnte.getCd_unita_organizzativa()); aL = home.find(esercizioEnte); if (aL.size() == 0) throw handleException(new ApplicationException("Esercizio dell'ente non ancora definito!")); esercizioEnte = (EsercizioBulk) aL.get(0); lockBulk(userContext, esercizioEnte); return esercizioEnte; } catch (Throwable e) { throw handleException(esercizio, e); } } /** * Inizializza un esercizio per l'inserimento *

* Pre-post-conditions: *

* Nome: Inizializzazione per inserimento * Pre: La richiesta di inizializzazione di un EsercizioBulk per inserimento e' stata generata * Post: L'esercizio e' stato inizializzato con il Cds padre dell'unita' organizzativa di scrivania * * @param userContext lo UserContext che ha generato la richiesta * @param bulk l' EsercizioBulk */ public OggettoBulk inizializzaBulkPerInserimento(UserContext userContext, OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException { try { EsercizioBulk esercizio = (EsercizioBulk) super.inizializzaBulkPerInserimento(userContext, bulk); CdsBulk cds = (CdsBulk) getHome(userContext, CdsBulk.class).findByPrimaryKey(new CdsBulk(esercizio.getCd_cds())); esercizio.setCds(cds); return esercizio; } catch (Throwable e) { throw handleException(e); } } /** * Inizializza un esercizio per la modifica *

* Pre-post-conditions: *

* Nome: Inizializzazione per modifica * Pre: La richiesta di inizializzazione di un EsercizioBulk per modifica e' stata generata * Post: L'esercizio e' stato inizializzato con il Cds padre dell'unita' organizzativa di scrivania * * @param userContext lo UserContext che ha generato la richiesta * @param bulk l' EsercizioBulk */ public OggettoBulk inizializzaBulkPerModifica(UserContext userContext, OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException { try { EsercizioBulk esercizio = (EsercizioBulk) super.inizializzaBulkPerModifica(userContext, bulk); CdsBulk cds = (CdsBulk) getHome(userContext, CdsBulk.class).findByPrimaryKey(new CdsBulk(esercizio.getCd_cds())); esercizio.setCds(cds); return esercizio; } catch (Throwable e) { throw handleException(e); } } /** * Inizializza un esercizio per ricerca *

* Pre-post-conditions: *

* Nome: Inizializzazione per ricerca * Pre: La richiesta di inizializzazione di un EsercizioBulk per ricerca e' stata generata * Post: L'esercizio e' stato inizializzato con il Cds padre dell'unita' organizzativa di scrivania * * @param userContext lo UserContext che ha generato la richiesta * @param bulk l' EsercizioBulk */ public OggettoBulk inizializzaBulkPerRicerca(UserContext userContext, OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException { try { EsercizioBulk esercizio = (EsercizioBulk) super.inizializzaBulkPerRicerca(userContext, bulk); CdsBulk cds = (CdsBulk) getHome(userContext, CdsBulk.class).findByPrimaryKey(new CdsBulk(esercizio.getCd_cds())); esercizio.setCds(cds); return esercizio; } catch (Throwable e) { throw handleException(e); } } /** * Inizializza un esercizio per ricerca libera *

* Pre-post-conditions: *

* Nome: Inizializzazione per ricerca libera * Pre: La richiesta di inizializzazione di un EsercizioBulk per ricerca libera e' stata generata * Post: L'esercizio e' stato inizializzato con il Cds padre dell'unita' organizzativa di scrivania * * @param userContext lo UserContext che ha generato la richiesta * @param bulk l' EsercizioBulk */ public OggettoBulk inizializzaBulkPerRicercaLibera(UserContext userContext, OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException { try { EsercizioBulk esercizio = (EsercizioBulk) super.inizializzaBulkPerRicercaLibera(userContext, bulk); CdsBulk cds = (CdsBulk) getHome(userContext, CdsBulk.class).findByPrimaryKey(new CdsBulk(esercizio.getCd_cds())); esercizio.setCds(cds); return esercizio; } catch (Throwable e) { throw handleException(e); } } /** * Controlla se l'esercizio economico del CdS di scrivania e' aperto *

* Nome: Controllo chiusura esercizio * Pre: E' stata richiesta la modifica dello stato di un esercizio * Post: Viene chiamata una stored procedure che restituisce * - 'Y' se il campo stato della tabella CHIUSURA_COEP vale C * - 'N' altrimenti * Se l'esercizio e' chiuso e' impossibile proseguire * * @param userContext UserContext * @return boolean : TRUE se stato = C * FALSE altrimenti */ private boolean isEsercizioCdSChiuso(UserContext userContext) throws ComponentException { LoggableStatement cs = null; String status = null; try { cs = new LoggableStatement(getConnection(userContext), "{ ? = call " + it.cnr.jada.util.ejb.EJBCommonServices.getDefaultSchema() + "CNRCTB200.isChiusuraCoepDef(?,?)}", false, this.getClass()); cs.registerOutParameter(1, java.sql.Types.VARCHAR); cs.setObject(2, it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(userContext)); cs.setObject(3, it.cnr.contab.utenze00.bp.CNRUserContext.getCd_cds(userContext)); cs.executeQuery(); status = new String(cs.getString(1)); if (status.compareTo("Y") == 0) return true; } catch (java.sql.SQLException ex) { throw handleException(ex); } return false; } // 09/02/2004 - Aggiunto il parametro USER per aggiornamenti su // cassa iniziale esercizio successivo private void verificaChiudibilitaEsercizio(UserContext userContext, EsercizioBulk esercizio) throws ComponentException { try { /* CNRCTB009.checkEsercizioChiusura(?, ?);) */ LoggableStatement cs = new LoggableStatement(getHome(userContext, EsercizioBulk.class).getConnection(), "{call " + it.cnr.jada.util.ejb.EJBCommonServices.getDefaultSchema() + "CNRCTB009.checkEsercizioChiusura(?,?,?)}", false, this.getClass()); try { cs.setObject(1, esercizio.getEsercizio()); cs.setString(2, esercizio.getCd_cds()); cs.setString(3, esercizio.getUser()); cs.executeQuery(); } catch (SQLException e) { throw handleException(e); } finally { cs.close(); } } catch (SQLException e) { throw handleException(e); } } public boolean isEsercizioChiuso(UserContext userContext) throws ComponentException { try { EsercizioHome home = (EsercizioHome) getHome(userContext, EsercizioBulk.class); return home.isEsercizioChiuso(userContext); } catch (PersistencyException ex) { throw handleException(ex); } } /** * Estrae il bulk dell'esercizio dell'ultimo anno aperto del cds a partire dall'esercizio di scrivania * Nel caso non trovi nulla restituisce valore vuoto * * @param userContext contesto * @return l'esercizio del centro di spesa corrispondente all'ultimo anno aperto */ public EsercizioBulk getLastEsercizioOpen(UserContext userContext) throws it.cnr.jada.comp.ComponentException { try { EsercizioHome home = (EsercizioHome) getHome(userContext, EsercizioBulk.class); EsercizioBulk lastEsercizioOpen = null; for (Iterator esercizi = ((EsercizioHome) getHome(userContext, EsercizioBulk.class)).findEserciziSuccessivi(new EsercizioBulk(CNRUserContext.getCd_cds(userContext), CNRUserContext.getEsercizio(userContext))).iterator(); esercizi.hasNext(); ) { EsercizioBulk esercizio = (EsercizioBulk) esercizi.next(); if (lastEsercizioOpen == null || esercizio.getEsercizio().compareTo(lastEsercizioOpen.getEsercizio()) == 1) lastEsercizioOpen = esercizio; } return lastEsercizioOpen; } catch (Throwable e) { throw handleException(e); } } public boolean isEsercizioAperto(UserContext userContext) throws ComponentException { try { EsercizioHome home = (EsercizioHome) getHome(userContext, EsercizioBulk.class); return home.isEsercizioAperto(userContext, it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(userContext), it.cnr.contab.utenze00.bp.CNRUserContext.getCd_cds(userContext)); } catch (PersistencyException ex) { throw handleException(ex); } } /** * Estrae il bulk dell'esercizio dell'esercizio di scrivania del cds di scrivania * Nel caso non trovi nulla restituisce valore vuoto * * @param userContext contesto * @return l'esercizio del centro di spesa corrispondente all'esercizio di scrivania */ public EsercizioBulk getEsercizio(UserContext userContext) throws it.cnr.jada.comp.ComponentException { try { EsercizioHome home = (EsercizioHome) getHome(userContext, EsercizioBulk.class); final Persistent byPrimaryKey = home.findByPrimaryKey(new EsercizioBulk(CNRUserContext.getCd_cds(userContext), CNRUserContext.getEsercizio(userContext))); getHomeCache(userContext).fetchAll(userContext); return (EsercizioBulk) byPrimaryKey; } catch (Throwable e) { throw handleException(e); } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy