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

it.cnr.contab.config00.comp.PDCFinComponent 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.compensi00.docs.bulk.VCompensoSIPBulk;
import it.cnr.contab.compensi00.docs.bulk.VCompensoSIPHome;
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.latt.bulk.WorkpackageBulk;
import it.cnr.contab.config00.pdcfin.bulk.*;
import it.cnr.contab.config00.pdcfin.cla.bulk.V_classificazione_vociBulk;
import it.cnr.contab.config00.sto.bulk.Tipo_unita_organizzativaHome;
import it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk;
import it.cnr.contab.config00.sto.bulk.Unita_organizzativaHome;
import it.cnr.contab.docamm00.docs.bulk.VFatturaPassivaSIPBulk;
import it.cnr.contab.docamm00.docs.bulk.VFatturaPassivaSIPHome;
import it.cnr.contab.missioni00.docs.bulk.VMissioneSIPBulk;
import it.cnr.contab.missioni00.docs.bulk.VMissioneSIPHome;
import it.cnr.contab.utenze00.bp.CNRUserContext;
import it.cnr.contab.util.RemoveAccent;
import it.cnr.jada.UserContext;
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.comp.ApplicationException;
import it.cnr.jada.comp.CRUDDuplicateKeyException;
import it.cnr.jada.comp.ComponentException;
import it.cnr.jada.comp.IPrintMgr;
import it.cnr.jada.persistency.PersistencyException;
import it.cnr.jada.persistency.sql.CompoundFindClause;
import it.cnr.jada.persistency.sql.LoggableStatement;
import it.cnr.jada.persistency.sql.SQLBuilder;

import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;


/**
 * Classe che ridefinisce alcune operazioni di CRUD su Elemento_voceBulk
 */
public class PDCFinComponent extends it.cnr.jada.comp.CRUDComponent implements IPDCFinMgr, java.io.Serializable, Cloneable, IPrintMgr {


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

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

//<< CONSTRUCTORCSTT

    }

    /**
     * Esegue una operazione di ricerca di un Elemento_voceBulk
     * 

* Pre-post-conditions: *

* Nome: Ricerca di Elemento voce * Pre: La richiesta di ricerca di un Elemento voce è stata generata * Post: La lista di Elemento_vocebulk che soddisfano i criteri di ricerca sono stati recuperati * * @param uc lo UserContext che ha generato la richiesta * @param clausole eventuali clausole di ricerca specificate dall'utente * @param bulk l'Elemento_voceBulk che deve essere ricercato * @return la lista di Elemento_voceBulk risultante dopo l'operazione di ricerca. */ public it.cnr.jada.util.RemoteIterator cerca(UserContext userContext, it.cnr.jada.persistency.sql.CompoundFindClause clausole, OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException { Elemento_voceBulk ev = (Elemento_voceBulk) bulk; Elemento_voceHome evHome = (Elemento_voceHome) getHomeCache(userContext).getHome(ev.getClass()); try { if (!((Parametri_cnrBulk) getHome(userContext, Parametri_cnrBulk.class).findByPrimaryKey(new Parametri_cnrBulk(CNRUserContext.getEsercizio(userContext)))).getFl_nuovo_pdg().booleanValue()) ev.setCd_proprio_elemento(evHome.formatKey(ev.getCd_proprio_elemento(), ev.getTi_appartenenza(), ev.getTi_gestione(), ev.getTi_elemento_voce())); else ev.setCd_parte(null); } catch (PersistencyException e) { throw handleException(bulk, e); } /* DA FARE se si vuole permettere una ricerca impostando il titolo padre if ( ev instanceof EV_cnr_spese_capitoloBulk ) return leggiCnrSpeseCapitoloBulk ( (EV_cnr_spese_capitoloBulk) ev ); */ return super.cerca(userContext, clausole, bulk); } /** * Esegue una operazione di creazione di un capitolo di spesa del CNR. Come elemento padre viene assegnata la categoria * con Codice = 2 sotto al Titolo specificato dall'utente * * @param uc lo UserContext che ha generato la richiesta * @param bulk capitolo di spesa del Cnr da creare * @return OggettoBulk capitolo di spesa del cnr con elemento_padre impostato */ private OggettoBulk creaCnrSpeseCapitoloBulk(UserContext userContext, EV_cnr_spese_capitoloBulk bulk) throws it.cnr.jada.comp.ComponentException { Elemento_voceHome evHome = (Elemento_voceHome) getHome(userContext, Elemento_voceBulk.class); try { // cerca la categoria padre con codice = 2 Elemento_voceBulk categoriaBulk = (Elemento_voceBulk) evHome.findAndLock( new Elemento_voceKey(bulk.getTitolo_padre().getCd_elemento_voce().concat(".").concat(evHome.CD_CNR_SPESE_CATEGORIA_2), bulk.getEsercizio(), bulk.getTi_appartenenza(), bulk.getTi_gestione())); bulk.setElemento_padre(categoriaBulk); if (bulk.getCd_proprio_elemento() == null || bulk.getCd_proprio_elemento().equals("")) { // genero il codice String codice = evHome.creaNuovoCodice(bulk); bulk.setCd_proprio_elemento(evHome.formatKey(codice, bulk.getTi_appartenenza(), bulk.getTi_gestione(), bulk.getTi_elemento_voce())); } else bulk.setCd_proprio_elemento(evHome.formatKey(bulk.getCd_proprio_elemento(), bulk.getTi_appartenenza(), bulk.getTi_gestione(), bulk.getTi_elemento_voce())); bulk.setCd_elemento_voce(bulk.getElemento_padre().getCd_elemento_voce().concat(".").concat(bulk.getCd_proprio_elemento())); insertBulk(userContext, bulk); return bulk; } catch (it.cnr.jada.persistency.FindException e) { throw handleException(new ApplicationException("Il titolo o la categoria non esistono")); } catch (it.cnr.jada.persistency.sql.DuplicateKeyException e) { if (e.getPersistent() != bulk) throw handleException(bulk, e); try { throw handleException(new CRUDDuplicateKeyException("Errore di chiave duplicata", e, bulk, (OggettoBulk) getHome(userContext, bulk).findByPrimaryKey(bulk))); } catch (Throwable ex) { throw handleException(bulk, ex); } } catch (Exception e) { throw handleException(e); } } /** * Esegue una operazione di creazione di un Elemento_voceBulk. *

* Pre-post-conditions: *

* Nome: Creazione di Elemento_voce senza codice proprio * Pre: La richiesta di creazione di un Elemento_voce senza aver specificato un codice proprio è stata generata * Post: Un Elemento_voceBulk stato creato con i dati inseriti dall'utente e il suo codice e' stato generato * automaticamente *

* Nome: Creazione di Elemento_voce con codice proprio * Pre: La richiesta di creazione di un Elemento_voce con codice proprio specificato è stata generata * Post: Un Elemento_voceBulk stato creato con i dati inseriti dall'utente e il suo codice e' stato formattato *

* Nome: Creazione di Elemento_voce di tipo CNR Spese Capitolo * Pre: La richiesta di creazione di un Elemento_voce di tipo Capitolo di Spesa CNR è stata generata * Post: Un Capitolo di Spesa del CNR viene creato con i dati inseriti dall'utente; come elemento padre di tale capitolo * viene ricercata la categoria con Codice = 2 (già creata in automatico) sotto al Titolo specificato dall'utente; . *

* Nome: Creazione di Elemento_voce di tipo CDS Spese Capitolo * Pre: La richiesta di creazione di un Elemento_voce di tipo CDS Spese Capitolo è stata generata * Post: Un capitolo di spesa del CDS e' stato creato e tutte le associazioni Ass_ev_funz_tipoCdsBulk * selezionate dall'utente sono state create *

* Nome: Errore di elemento_voce padre inesistente * Pre: L'elemento voce specificato come padre dell'elemento voce da creare non esiste * Post: Viene generata una ComponentException che ha come dettaglio l'ApplicationException che descrive l'errore da * visualizzare all'utente *

* Nome: Errore di chiave duplicata * Pre: Esiste già un Elemento_voceBulk persistente che possiede la stessa chiave * primaria di quello specificato. * Post: Viene generata una ComponentException che ha come dettaglio l'ApplicationException che descrive l'errore da * visualizzare all'utente * * @param uc lo UserContext che ha generato la richiesta * @param bulk l'Elemento_voceBulk che deve essere creato * @return il Elemento_voceBulk risultante dopo l'operazione di creazione. */ public OggettoBulk creaConBulk(UserContext userContext, OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException { // 05/09/2003 // Aggiunto controllo sulla chiusura dell'esercizio if (isEsercizioChiuso(userContext)) throw new ApplicationException("Non è possibile creare nuove voci ad esercizio chiuso."); Elemento_voceBulk evBulk = (Elemento_voceBulk) bulk; Elemento_voceHome subEvHome = (Elemento_voceHome) getHome(userContext, evBulk); try { if (evBulk.getFl_prelievo().booleanValue() && findElementoVocePrelievo(userContext) != null) throw new it.cnr.jada.comp.ApplicationException("Attenzione: esiste già un elemento voce di prelievo per l'esercizio."); if (!((Parametri_cnrBulk) getHome(userContext, Parametri_cnrBulk.class).findByPrimaryKey(new Parametri_cnrBulk(CNRUserContext.getEsercizio(userContext)))).getFl_nuovo_pdg().booleanValue()) { if (evBulk instanceof EV_cnr_spese_capitoloBulk) return creaCnrSpeseCapitoloBulk(userContext, (EV_cnr_spese_capitoloBulk) evBulk); if (evBulk instanceof EV_cds_spese_capitoloBulk && evBulk.getElemento_padre() == null || OggettoBulk.isNullOrEmpty(evBulk.getElemento_padre().getCd_elemento_voce())) throw new it.cnr.jada.comp.ApplicationException("Inserire il codice titolo."); if (evBulk instanceof EV_cnr_entrate_capitoloBulk && evBulk.getElemento_padre() == null || OggettoBulk.isNullOrEmpty(evBulk.getElemento_padre().getCd_elemento_voce())) throw new it.cnr.jada.comp.ApplicationException("Inserire il codice categoria."); //lock sul padre lockBulk(userContext, evBulk.getElemento_padre()); //generazione e formattazione del codice if (evBulk.getCd_proprio_elemento() == null || evBulk.getCd_proprio_elemento().equals("")) { String codice = subEvHome.creaNuovoCodice(evBulk); evBulk.setCd_proprio_elemento(subEvHome.formatKey(codice, evBulk.getTi_appartenenza(), evBulk.getTi_gestione(), evBulk.getTi_elemento_voce())); } else evBulk.setCd_proprio_elemento(subEvHome.formatKey(evBulk.getCd_proprio_elemento(), evBulk.getTi_appartenenza(), evBulk.getTi_gestione(), evBulk.getTi_elemento_voce())); evBulk.setCd_elemento_voce(evBulk.getElemento_padre().getCd_elemento_voce().concat(".").concat(evBulk.getCd_proprio_elemento())); if (evBulk instanceof EV_cds_spese_capitoloBulk) inizializzaCdsSpeseCapitoloBulk((EV_cds_spese_capitoloBulk) evBulk); } else { if (evBulk.getCd_proprio_elemento() == null || evBulk.getCd_proprio_elemento().equals("")) throw new it.cnr.jada.comp.ApplicationException("Inserire il campo Codice Proprio."); evBulk.setCd_elemento_voce(evBulk.getCd_proprio_elemento()); } makeBulkPersistent(userContext, evBulk); return evBulk; } catch (it.cnr.jada.persistency.FindException e) { throw handleException(new ApplicationException("L'elemento voce padre non è definito", e)); } catch (it.cnr.jada.persistency.sql.DuplicateKeyException e) { if (e.getPersistent() != bulk) throw handleException(bulk, e); try { throw handleException(new CRUDDuplicateKeyException("Errore di chiave duplicata", e, bulk, (OggettoBulk) getHome(userContext, bulk).findByPrimaryKey(bulk))); } catch (Throwable ex) { throw handleException(bulk, ex); } } catch (Exception e) { throw handleException(bulk, e); } } /** * Esegue una operazione di eliminazione di Elemento_voceBulk *

* Pre-post-conditions: *

* Nome: Cancellazione di un Elemento voce senza altri elementi voce a lui associati * Pre: La richiesta di cancellazione di un Elemento voce che non ha altri elementi voce associati * e' stata generata * Post: L'Elemento_voceBulk e' stato cancellato *

* Nome: Cancellazione di un Elemento voce con altri elementi a lui associati * Pre: La richiesta di cancellazione di un Elemento voce che ha elementi voce associati * e' stata generata * Post: Viene generata una ComponentException che ha come dettaglio l'ApplicationException che descrive l'errore da * visualizzare all'utente *

* Nome: Cancellazione di un Elemento voce di tipo CNR Spese Capitolo * Pre: La richiesta di cancellazione di un Elemento voce di tipo CNR Spese Capitolo e' stata generata * Post: L'Elemento_voceBulk e' stato cancellato e tutte le associazioni Ass_ev_funz_tipoCds a lui associato sono * state cancellate * * @param userContext lo userContext che ha generato la richiesta * @param bulk l'istanza di Elemento_voceBulk che deve essere cancellata */ public void eliminaConBulk(UserContext userContext, OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException { // 05/09/2003 // Aggiunto controllo sulla chiusura dell'esercizio if (isEsercizioChiuso(userContext)) throw new ApplicationException("Non è possibile eliminare voci ad esercizio chiuso."); try { Elemento_voceBulk evBulk = (Elemento_voceBulk) bulk; // lockBulk( evBulk ); lo fa la makeBulkPersistent() if (esistonoReferenzeAElementoVoce(userContext, evBulk)) throw new ApplicationException("Non è possibile cancellare l'elemento voce perchè utilizzato nelle associazioni"); if (evBulk instanceof EV_cds_spese_capitoloBulk) { for (Iterator i = ((EV_cds_spese_capitoloBulk) evBulk).getAssociazioni().iterator(); i.hasNext(); ) ((Ass_ev_funz_tipocdsBulk) i.next()).setToBeDeleted(); } makeBulkPersistent(userContext, evBulk); /* if ( evBulk instanceof EV_cnr_spese_capitoloBulk ) { // cancella anche la sezione se non ha altri capitoli figlio Elemento_voceBulk sezione = new Elemento_voceBulk(); sezione.setTi_appartenenza( Elemento_voceHome.APPARTENENZA_CNR ); sezione.setTi_gestione(Elemento_voceHome.GESTIONE_SPESE); sezione.setTi_elemento_voce(Elemento_voceHome.TIPO_SEZIONE); sezione.setEsercizio( evBulk.getEsercizio()); sezione.setCd_elemento_voce( evBulk.getElemento_padre().getCd_elemento_voce()); sezione = (Elemento_voceBulk) getHome(userContext,Elemento_voceBulk.class).findByPrimaryKey( sezione ); if ( sezione == null ) throw new ApplicationException( "Non esiste la sezione padre del capitolo" ); if (!esistonoReferenzeAElementoVoce( userContext,sezione )) { sezione.setToBeDeleted(); makeBulkPersistent(userContext,sezione); } } */ } catch (it.cnr.jada.persistency.FindException e) { throw handleException(new ApplicationException("Elemento voce non trovato")); } catch (Throwable e) { throw handleException(bulk, e); } } /** * verifica se l'elemnto voce e' stato utilizzato nelle associazioni, in tal caso ne impedisce la cancellazione */ private boolean esistonoReferenzeAElementoVoce(UserContext userContext, Elemento_voceBulk evBulk) throws it.cnr.jada.comp.ComponentException { try { Ass_ev_evBulk find = new Ass_ev_evBulk(); find.setEsercizio(evBulk.getEsercizio()); find.setTi_appartenenza_coll(evBulk.getTi_appartenenza()); find.setTi_gestione_coll(evBulk.getTi_gestione()); find.setCd_elemento_voce_coll(evBulk.getCd_elemento_voce()); List results = getHome(userContext, find.getClass()).find(find, false); if (results.isEmpty()) return false; else return true; } catch (Throwable e) { throw handleException(e); } } /** * Esegue l'inizializzazione di una istanza di Elemento_voceBulk *

* Pre-post-conditions: *

* Nome: Inizializzazione Elemento_voceBulk di tipo CDS spese capitolo * Pre: L'inizializzazione di un Elemento_voceBulk per eventuale modifica e' stata generata * Post: L'elenco di funzioni e di tipologie di CDS viene caricato * * @param userContext lo userContext che ha generato la richiesta * @param bulk l'istanza di Elemento_voceBulk che deve essere inizializzata * @return l' Elemento_voceBulk inizializzato */ public OggettoBulk inizializzaBulkPerInserimento(UserContext userContext, OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException { try { super.inizializzaBulkPerInserimento(userContext, bulk); if (bulk instanceof EV_cds_spese_capitoloBulk) { EV_cds_spese_capitoloBulk capitolo = (EV_cds_spese_capitoloBulk) bulk; capitolo.setFunzioni(((EV_cds_spese_capitoloHome) getHome(userContext, bulk.getClass())).loadFunzioni(capitolo)); capitolo.setTipiCds(((EV_cds_spese_capitoloHome) getHome(userContext, bulk.getClass())).loadTipiCds((EV_cds_spese_capitoloBulk) bulk)); } return bulk; } catch (Throwable e) { throw handleException(e); } } /** * Esegue l'inizializzazione di una istanza di Elemento_voceBulk *

* Pre-post-conditions: *

* Nome: Inizializzazione Elemento_voceBulk di tipo CDS spese capitolo * Pre: L'inizializzazione di un Elemento_voceBulk per eventuale modifica e' stata generata * Post: L' Elemento_voceBulk viene aggiornato con l'elenco delle istanze di Ass_ev_funz_tipoCdsBulk assegnate in * precedenza a questo Elemento voce * * @param userContext lo userContext che ha generato la richiesta * @param bulk l'istanza di Elemento_voceBulk che deve essere inizializzata * @return l' Elemento_voceBulk inizializzato */ public OggettoBulk inizializzaBulkPerModifica(UserContext userContext, OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException { try { bulk = super.inizializzaBulkPerModifica(userContext, bulk); if (bulk instanceof EV_cds_spese_capitoloBulk) { // carica funzioni e tipi cds EV_cds_spese_capitoloBulk capitolo = (EV_cds_spese_capitoloBulk) bulk; capitolo.setFunzioni(((EV_cds_spese_capitoloHome) getHome(userContext, bulk.getClass())).loadFunzioni(capitolo)); capitolo.setTipiCds(((EV_cds_spese_capitoloHome) getHome(userContext, bulk.getClass())).loadTipiCds((EV_cds_spese_capitoloBulk) bulk)); //carica le associazioni per i capitoli di spesa cnr Ass_ev_funz_tipocdsBulk ass = new Ass_ev_funz_tipocdsBulk(); ass.setEsercizio(((EV_cds_spese_capitoloBulk) bulk).getEsercizio()); ass.setCd_conto(((EV_cds_spese_capitoloBulk) bulk).getCd_elemento_voce()); List result = getHome(userContext, Ass_ev_funz_tipocdsBulk.class).find(ass); for (Iterator i = result.iterator(); i.hasNext(); ) { ass = (Ass_ev_funz_tipocdsBulk) i.next(); ((EV_cds_spese_capitoloBulk) bulk).getAssociazioni().put(ass.getMapKey(), ass); } } // 05/09/2003 // Aggiunto controllo sulla chiusura dell'esercizio if (isEsercizioChiuso(userContext)) bulk = asRO(bulk, "Non è possibile modificare voci ad esercizio chiuso."); return bulk; } catch (Exception e) { throw handleException(e); } } /** * Esegue l'inizializzazione di una istanza di Elemento_voceBulk *

* Pre-post-conditions: *

* Nome: Inizializzazione Elemento_voceBulk di tipo CDS spese capitolo * Pre: L'inizializzazione di un Elemento_voceBulk per eventuale modifica e' stata generata * Post: L'elenco di funzioni e di tipologie di CDS viene caricato * * @param userContext lo userContext che ha generato la richiesta * @param bulk l'istanza di Elemento_voceBulk che deve essere inizializzata * @return l' Elemento_voceBulk inizializzato */ public OggettoBulk inizializzaBulkPerRicerca(UserContext userContext, OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException { try { super.inizializzaBulkPerRicerca(userContext, bulk); if (bulk instanceof EV_cds_spese_capitoloBulk) { EV_cds_spese_capitoloBulk capitolo = (EV_cds_spese_capitoloBulk) bulk; capitolo.setFunzioni(((EV_cds_spese_capitoloHome) getHome(userContext, bulk.getClass())).loadFunzioni(capitolo)); capitolo.setTipiCds(((EV_cds_spese_capitoloHome) getHome(userContext, bulk.getClass())).loadTipiCds((EV_cds_spese_capitoloBulk) bulk)); } return bulk; } catch (Throwable e) { throw handleException(e); } } /** * Esegue l'inizializzazione di una istanza di Elemento_voceBulk *

* Pre-post-conditions: *

* Nome: Inizializzazione Elemento_voceBulk di tipo CDS spese capitolo * Pre: L'inizializzazione di un Elemento_voceBulk per eventuale modifica e' stata generata * Post: L'elenco di funzioni e di tipologie di CDS viene caricato * * @param userContext lo userContext che ha generato la richiesta * @param bulk l'istanza di Elemento_voceBulk che deve essere inizializzata * @return l' Elemento_voceBulk inizializzato */ public OggettoBulk inizializzaBulkPerRicercaLibera(UserContext userContext, OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException { try { super.inizializzaBulkPerRicercaLibera(userContext, bulk); if (bulk instanceof EV_cds_spese_capitoloBulk) { EV_cds_spese_capitoloBulk capitolo = (EV_cds_spese_capitoloBulk) bulk; capitolo.setFunzioni(((EV_cds_spese_capitoloHome) getHome(userContext, bulk.getClass())).loadFunzioni(capitolo)); capitolo.setTipiCds(((EV_cds_spese_capitoloHome) getHome(userContext, bulk.getClass())).loadTipiCds((EV_cds_spese_capitoloBulk) bulk)); } return bulk; } catch (Throwable e) { throw handleException(e); } } /** * Imposta il codice conto alle associazioni definite per un capitolo di spesa cds */ private void inizializzaCdsSpeseCapitoloBulk(EV_cds_spese_capitoloBulk evBulk) throws it.cnr.jada.comp.ComponentException { // imposta il codice conto alle associazioni definite per capitolo spesa cds Ass_ev_funz_tipocdsBulk ass; for (Iterator i = evBulk.getAssociazioni().iterator(); i.hasNext(); ) { ass = (Ass_ev_funz_tipocdsBulk) i.next(); ass.setCd_conto(evBulk.getCd_elemento_voce()); } } protected boolean isEsercizioChiuso(UserContext userContext) throws ComponentException { try { EsercizioHome home = (EsercizioHome) getHome(userContext, EsercizioBulk.class); return home.isEsercizioChiusoPerAlmenoUnCds(userContext); } catch (it.cnr.jada.persistency.PersistencyException e) { throw handleException(e); } } /** * Carica in una hashtable l'elenco di Tipologie di CDS presenti nel database * * @return it.cnr.jada.util.OrderedHashtable */ public it.cnr.jada.util.OrderedHashtable loadTipologieCdsKeys(UserContext userContext) throws ComponentException { it.cnr.contab.config00.sto.bulk.Tipo_unita_organizzativaHome home = (it.cnr.contab.config00.sto.bulk.Tipo_unita_organizzativaHome) getHome(userContext, it.cnr.contab.config00.sto.bulk.Tipo_unita_organizzativaBulk.class); return home.loadTipologiaCdsKeys(); } public OggettoBulk modificaConBulk(UserContext userContext, OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException { // 05/09/2003 // Aggiunto controllo sulla chiusura dell'esercizio if (isEsercizioChiuso(userContext)) throw new ApplicationException("Non è possibile modificare voci ad esercizio chiuso."); try { Elemento_voceBulk evBulk = (Elemento_voceBulk) bulk; if (evBulk.getFl_prelievo().booleanValue() && findElementoVocePrelievo(userContext) != null) throw new it.cnr.jada.comp.ApplicationException("Attenzione: esiste già un elemento voce di prelievo per l'esercizio."); } catch (it.cnr.jada.persistency.PersistencyException pe) { throw handleException(pe); } return super.modificaConBulk(userContext, bulk); } /* Selezione dei soli record * presenti sulle tabelle delle classificazioni * definiti mastrino (FL_MASTRINO=Y) per * l'anno in scrivania * */ public SQLBuilder selectClassificazione_entrateByClause(UserContext userContext, OggettoBulk bulk, Classificazione_entrateBulk classificazione, CompoundFindClause clause) throws ComponentException, PersistencyException { if (clause == null) clause = classificazione.buildFindClauses(null); SQLBuilder sql = getHome(userContext, classificazione).createSQLBuilder(); sql.addSQLClause("AND", "ESERCIZIO", sql.EQUALS, ((it.cnr.contab.utenze00.bp.CNRUserContext) userContext).getEsercizio()); sql.addSQLClause("AND", "FL_MASTRINO", sql.EQUALS, "Y"); if (clause != null) sql.addClause(clause); return sql; } public SQLBuilder selectClassificazione_speseByClause(UserContext userContext, OggettoBulk bulk, Classificazione_speseBulk classificazione, CompoundFindClause clause) throws ComponentException, PersistencyException { if (clause == null) clause = classificazione.buildFindClauses(null); SQLBuilder sql = getHome(userContext, classificazione).createSQLBuilder(); sql.addSQLClause("AND", "ESERCIZIO", sql.EQUALS, ((it.cnr.contab.utenze00.bp.CNRUserContext) userContext).getEsercizio()); sql.addSQLClause("AND", "FL_MASTRINO", sql.EQUALS, "Y"); if (clause != null) sql.addClause(clause); return sql; } //^^@@ /** * Normale * PreCondition: * Viene richiesto l'elenco delle Classificazioni Ufficiali * PostCondition: * Viene restituita una query sulla vista V_CLASSIFICAZIONE_VOCI che contiene solo le classificazioni * associabili al piano dei conti finanziario */ //^^@@ public SQLBuilder selectV_classificazione_vociByClause(UserContext userContext, Elemento_voceBulk elementoVoce, V_classificazione_vociBulk classificazioneVoci, CompoundFindClause clause) throws ComponentException, PersistencyException { SQLBuilder sql = getHome(userContext, classificazioneVoci).createSQLBuilder(); sql.addClause(clause); sql.addSQLClause("AND", "ESERCIZIO", sql.EQUALS, it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(userContext)); sql.addSQLClause("AND", "TI_GESTIONE", sql.EQUALS, elementoVoce.getTi_gestione()); sql.addClause("AND", "fl_mastrino", sql.EQUALS, Boolean.TRUE); if (clause != null) sql.addClause(clause); return sql; } /* * Recupero della voce di bilancio del CNR * PreCondition: * E' stata generata la richiesta di recuperare la voce di bilancio del CNR * PostCondition: * Viene recuperata la voce di bilancio CNR in base alla linea di attività e la voce del CDS indicati * * @param userContext lo UserContext che ha generato la richiesta * @param voceCds Elemento_voceBulk la voce del CDS * @param linea_attivita WorkpackageBulk la linea di attività del CDS * * @return voceCnr String il codice della voce CNR individuata */ public String getVoceCnr(UserContext userContext, Elemento_voceBulk voceCds, WorkpackageBulk linea_attivita) throws it.cnr.jada.comp.ComponentException { try { LoggableStatement cs = new LoggableStatement(getConnection(userContext), "{? = call " + it.cnr.jada.util.ejb.EJBCommonServices.getDefaultSchema() + "CNRCTB075.getvocecnrfromvocecds(?,?,?,?,?,?,?)}", false, this.getClass()); try { cs.registerOutParameter(1, java.sql.Types.VARCHAR); cs.setObject(2, voceCds.getEsercizio()); cs.setString(3, linea_attivita.getCd_centro_responsabilita()); cs.setString(4, linea_attivita.getCd_linea_attivita()); cs.setObject(5, voceCds.getEsercizio()); cs.setString(6, voceCds.getTi_gestione()); cs.setString(7, voceCds.getTi_appartenenza()); cs.setString(8, voceCds.getCd_elemento_voce()); cs.execute(); return cs.getString(1); } finally { cs.close(); } } catch (Throwable e) { throw handleException(e); } } public java.util.List findListaVociWS(UserContext userContext, String uo, String tipo, String query, String dominio, String tipoRicerca) throws ComponentException { return findListaVociWS(userContext, uo, tipo, query, dominio, tipoRicerca, null); } public java.util.List findListaVociWS(UserContext userContext, String uo, String tipo, String query, String dominio, String tipoRicerca, String tipoFiltro) throws ComponentException { try { Unita_organizzativaHome uo_home = (Unita_organizzativaHome) getHome(userContext, Unita_organizzativaBulk.class); Unita_organizzativaBulk u_org = (Unita_organizzativaBulk) uo_home.findByPrimaryKey(new Unita_organizzativaBulk(uo)); SQLBuilder sql; if (tipo.compareTo(Elemento_voceHome.GESTIONE_SPESE) == 0) { Elemento_voceHome home = (Elemento_voceHome) getHome(userContext, Elemento_voceBulk.class); //sql=home.createSQLBuilder(); sql = (SQLBuilder) super.select(userContext, null, new Elemento_voceBulk()); sql.addSQLClause("AND", "ESERCIZIO", sql.EQUALS, CNRUserContext.getEsercizio(userContext)); sql.addSQLClause("AND", "ti_gestione", SQLBuilder.EQUALS, Elemento_voceHome.GESTIONE_SPESE); sql.addSQLClause("AND", "ti_appartenenza", SQLBuilder.EQUALS, Elemento_voceHome.APPARTENENZA_CDS); sql.addSQLClause("AND", "ti_elemento_voce", SQLBuilder.EQUALS, Elemento_voceHome.TIPO_CAPITOLO); sql.addSQLClause("AND", "cd_parte", SQLBuilder.EQUALS, Elemento_voceHome.PARTE_1); sql.addSQLClause("AND", "FL_INV_BENI_PATR", SQLBuilder.EQUALS, "N"); if (u_org.getCd_cds() != null && u_org.getCd_tipo_unita() != null && !u_org.getCd_tipo_unita().equalsIgnoreCase(Tipo_unita_organizzativaHome.TIPO_UO_SAC)) sql.addSQLClause("AND", "fl_voce_sac", SQLBuilder.EQUALS, "N"); if (dominio.equalsIgnoreCase("codice")) sql.addSQLClause("AND", "cd_elemento_voce", SQLBuilder.EQUALS, query); else if (dominio.equalsIgnoreCase("descrizione")) { sql.openParenthesis("AND"); for (StringTokenizer stringtokenizer = new StringTokenizer(query, " "); stringtokenizer.hasMoreElements(); ) { String queryDetail = stringtokenizer.nextToken(); if ((tipoRicerca != null && tipoRicerca.equalsIgnoreCase("selettiva")) || tipoRicerca == null) { if (queryDetail.equalsIgnoreCase(RemoveAccent.convert(queryDetail))) sql.addSQLClause("AND", "ds_elemento_voce", SQLBuilder.CONTAINS, queryDetail); else { sql.openParenthesis("AND"); sql.addSQLClause("OR", "ds_elemento_voce", SQLBuilder.CONTAINS, queryDetail); sql.addSQLClause("OR", "ds_elemento_voce", SQLBuilder.CONTAINS, RemoveAccent.convert(queryDetail)); sql.closeParenthesis(); } } else if (tipoRicerca.equalsIgnoreCase("puntuale")) { if (queryDetail.equalsIgnoreCase(RemoveAccent.convert(queryDetail))) { sql.openParenthesis("AND"); sql.addSQLClause("AND", "UPPER(ds_elemento_voce)", SQLBuilder.EQUALS, queryDetail.toUpperCase()); sql.addSQLClause("OR", "ds_elemento_voce", SQLBuilder.STARTSWITH, queryDetail + " "); sql.addSQLClause("OR", "ds_elemento_voce", SQLBuilder.ENDSWITH, " " + queryDetail); sql.closeParenthesis(); } else { sql.openParenthesis("AND"); sql.openParenthesis("AND"); sql.addSQLClause("OR", "UPPER(ds_elemento_voce)", SQLBuilder.EQUALS, queryDetail.toUpperCase()); sql.addSQLClause("OR", "UPPER(ds_elemento_voce)", SQLBuilder.EQUALS, RemoveAccent.convert(queryDetail).toUpperCase()); sql.closeParenthesis(); sql.openParenthesis("OR"); sql.addSQLClause("OR", "ds_elemento_voce", SQLBuilder.STARTSWITH, queryDetail + " "); sql.addSQLClause("OR", "ds_elemento_voce", SQLBuilder.STARTSWITH, RemoveAccent.convert(queryDetail) + " "); sql.closeParenthesis(); sql.openParenthesis("OR"); sql.addSQLClause("OR", "ds_elemento_voce", SQLBuilder.ENDSWITH, " " + queryDetail); sql.addSQLClause("OR", "ds_elemento_voce", SQLBuilder.ENDSWITH, " " + RemoveAccent.convert(queryDetail)); sql.closeParenthesis(); sql.closeParenthesis(); } } } sql.closeParenthesis(); sql.addOrderBy("cd_elemento_voce,ds_elemento_voce"); } if (tipoFiltro != null && tipoFiltro.equalsIgnoreCase("fattura")) { VFatturaPassivaSIPHome homeFat = (VFatturaPassivaSIPHome) getHome(userContext, VFatturaPassivaSIPBulk.class, "VFATTURAPASSIVASIP_RID"); SQLBuilder sql2 = homeFat.createSQLBuilder(); sql2.setDistinctClause(true); sql2.addSQLJoin("ELEMENTO_VOCE.ESERCIZIO", "VFATTURAPASSIVASIP.ESERCIZIO"); sql2.addSQLJoin("ELEMENTO_VOCE.CD_ELEMENTO_VOCE", "VFATTURAPASSIVASIP.CD_ELEMENTO_VOCE"); sql2.addSQLClause("AND", "VFATTURAPASSIVASIP.CD_UNITA_ORGANIZZATIVA", SQLBuilder.EQUALS, uo); sql.addSQLExistsClause("AND", sql2); } else if (tipoFiltro != null && tipoFiltro.equalsIgnoreCase("compenso")) { VCompensoSIPHome homeComp = (VCompensoSIPHome) getHome(userContext, VCompensoSIPBulk.class, "VCOMPENSOSIP_RID"); SQLBuilder sql2 = homeComp.createSQLBuilder(); sql2.setDistinctClause(true); sql2.addSQLJoin("ELEMENTO_VOCE.ESERCIZIO", "VCOMPENSOSIP.ESERCIZIO"); sql2.addSQLJoin("ELEMENTO_VOCE.CD_ELEMENTO_VOCE", "VCOMPENSOSIP.CD_ELEMENTO_VOCE"); sql2.addSQLClause("AND", "VCOMPENSOSIP.CD_UNITA_ORGANIZZATIVA", SQLBuilder.EQUALS, uo); sql.addSQLExistsClause("AND", sql2); } else if (tipoFiltro != null && tipoFiltro.equalsIgnoreCase("missione")) { VMissioneSIPHome homeMis = (VMissioneSIPHome) getHome(userContext, VMissioneSIPBulk.class, "VMISSIONESIP_RID"); SQLBuilder sql2 = homeMis.createSQLBuilder(); sql2.setDistinctClause(true); sql2.addSQLJoin("ELEMENTO_VOCE.ESERCIZIO", "VMISSIONESIP.ESERCIZIO"); sql2.addSQLJoin("ELEMENTO_VOCE.CD_ELEMENTO_VOCE", "VMISSIONESIP.CD_ELEMENTO_VOCE"); sql2.addSQLClause("AND", "VMISSIONESIP.CD_UNITA_ORGANIZZATIVA", SQLBuilder.EQUALS, uo); sql.addSQLExistsClause("AND", sql2); } return home.fetchAll(sql); } else { V_voce_f_partita_giroHome home = (V_voce_f_partita_giroHome) getHome(userContext, V_voce_f_partita_giroBulk.class); //sql=home.createSQLBuilder(); sql = (SQLBuilder) super.select(userContext, null, new V_voce_f_partita_giroBulk()); sql.addTableToHeader("ELEMENTO_VOCE"); sql.addSQLClause("AND", "V_VOCE_F_PARTITA_GIRO.ESERCIZIO", sql.EQUALS, CNRUserContext.getEsercizio(userContext)); sql.openParenthesis("AND"); sql.openParenthesis("AND"); sql.addSQLClause("AND", "V_VOCE_F_PARTITA_GIRO.cd_unita_organizzativa", sql.EQUALS, u_org.getCd_unita_organizzativa()); sql.addSQLClause("OR", "V_VOCE_F_PARTITA_GIRO.cd_unita_organizzativa", sql.ISNULL, null); sql.closeParenthesis(); sql.closeParenthesis(); sql.addSQLClause("AND", "V_VOCE_F_PARTITA_GIRO.FL_SOLO_RESIDUO", sql.EQUALS, "N"); sql.addSQLClause("AND", "V_VOCE_F_PARTITA_GIRO.ti_appartenenza", sql.EQUALS, Elemento_voceHome.APPARTENENZA_CNR); sql.addSQLClause("AND", "V_VOCE_F_PARTITA_GIRO.ti_gestione", sql.EQUALS, Elemento_voceHome.GESTIONE_ENTRATE); sql.addSQLClause("AND", "V_VOCE_F_PARTITA_GIRO.ti_voce", sql.EQUALS, Elemento_voceHome.TIPO_ARTICOLO); sql.addSQLClause("AND", "V_VOCE_F_PARTITA_GIRO.FL_PARTITA_GIRO", sql.EQUALS, "N"); sql.addSQLJoin("V_VOCE_F_PARTITA_GIRO.ESERCIZIO", sql.EQUALS, "ELEMENTO_VOCE.ESERCIZIO"); sql.addSQLJoin("V_VOCE_F_PARTITA_GIRO.ti_appartenenza", sql.EQUALS, "ELEMENTO_VOCE.ti_appartenenza"); sql.addSQLJoin("V_VOCE_F_PARTITA_GIRO.ti_gestione", sql.EQUALS, "ELEMENTO_VOCE.ti_gestione"); sql.addSQLJoin("V_VOCE_F_PARTITA_GIRO.CD_TITOLO_CAPITOLO", sql.EQUALS, "ELEMENTO_VOCE.CD_ELEMENTO_VOCE"); sql.addSQLClause("AND", "FL_INV_BENI_PATR", SQLBuilder.EQUALS, "N"); SQLBuilder sqlExist = ((Ass_ev_evHome) getHome(userContext, Ass_ev_evBulk.class)).createSQLBuilder(); sqlExist.addSQLClause("AND", "CD_NATURA", SQLBuilder.ISNOTNULL, null); sqlExist.addSQLJoin("V_VOCE_F_PARTITA_GIRO.TI_GESTIONE", SQLBuilder.EQUALS, "ASS_EV_EV.TI_GESTIONE"); sqlExist.addSQLJoin("V_VOCE_F_PARTITA_GIRO.TI_APPARTENENZA", SQLBuilder.EQUALS, "ASS_EV_EV.TI_APPARTENENZA"); sqlExist.addSQLJoin("V_VOCE_F_PARTITA_GIRO.CD_TITOLO_CAPITOLO", SQLBuilder.EQUALS, "ASS_EV_EV.CD_ELEMENTO_VOCE"); sqlExist.addSQLJoin("V_VOCE_F_PARTITA_GIRO.ESERCIZIO", SQLBuilder.EQUALS, "ASS_EV_EV.ESERCIZIO"); sql.addSQLExistsClause("AND", sqlExist); if (u_org.getCd_cds() != null && u_org.getCd_tipo_unita() != null && !u_org.getCd_tipo_unita().equalsIgnoreCase(Tipo_unita_organizzativaHome.TIPO_UO_SAC)) sql.addSQLClause("AND", "V_VOCE_F_PARTITA_GIRO.fl_voce_sac", SQLBuilder.EQUALS, "N"); if (dominio.equalsIgnoreCase("codice")) sql.addSQLClause("AND", "V_VOCE_F_PARTITA_GIRO.cd_voce", SQLBuilder.EQUALS, query); else if (dominio.equalsIgnoreCase("descrizione")) { sql.openParenthesis("AND"); for (StringTokenizer stringtokenizer = new StringTokenizer(query, " "); stringtokenizer.hasMoreElements(); ) { String queryDetail = stringtokenizer.nextToken(); if ((tipoRicerca != null && tipoRicerca.equalsIgnoreCase("selettiva")) || tipoRicerca == null) { if (queryDetail.equalsIgnoreCase(RemoveAccent.convert(queryDetail))) sql.addSQLClause("AND", "ds_titolo_capitolo", SQLBuilder.CONTAINS, queryDetail); else { sql.openParenthesis("AND"); sql.addSQLClause("OR", "ds_titolo_capitolo", SQLBuilder.CONTAINS, queryDetail); sql.addSQLClause("OR", "ds_titolo_capitolo", SQLBuilder.CONTAINS, RemoveAccent.convert(queryDetail)); sql.closeParenthesis(); } } else if (tipoRicerca.equalsIgnoreCase("puntuale")) { if (queryDetail.equalsIgnoreCase(RemoveAccent.convert(queryDetail))) { sql.openParenthesis("AND"); sql.addSQLClause("AND", "UPPER(ds_titolo_capitolo)", SQLBuilder.EQUALS, queryDetail.toUpperCase()); sql.addSQLClause("OR", "ds_titolo_capitolo", SQLBuilder.STARTSWITH, queryDetail + " "); sql.addSQLClause("OR", "ds_titolo_capitolo", SQLBuilder.ENDSWITH, " " + queryDetail); sql.closeParenthesis(); } else { sql.openParenthesis("AND"); sql.openParenthesis("AND"); sql.addSQLClause("OR", "UPPER(ds_titolo_capitolo)", SQLBuilder.EQUALS, queryDetail.toUpperCase()); sql.addSQLClause("OR", "UPPER(ds_titolo_capitolo)", SQLBuilder.EQUALS, RemoveAccent.convert(queryDetail).toUpperCase()); sql.closeParenthesis(); sql.openParenthesis("OR"); sql.addSQLClause("OR", "ds_titolo_capitolo", SQLBuilder.STARTSWITH, queryDetail + " "); sql.addSQLClause("OR", "ds_titolo_capitolo", SQLBuilder.STARTSWITH, RemoveAccent.convert(queryDetail) + " "); sql.closeParenthesis(); sql.openParenthesis("OR"); sql.addSQLClause("OR", "ds_titolo_capitolo", SQLBuilder.ENDSWITH, " " + queryDetail); sql.addSQLClause("OR", "ds_titolo_capitolo", SQLBuilder.ENDSWITH, " " + RemoveAccent.convert(queryDetail)); sql.closeParenthesis(); sql.closeParenthesis(); } } } sql.closeParenthesis(); sql.addOrderBy("cd_voce,ds_titolo_capitolo"); } if (tipoFiltro != null && tipoFiltro.equalsIgnoreCase("fattura")) { VFatturaPassivaSIPHome homeFat = (VFatturaPassivaSIPHome) getHome(userContext, VFatturaPassivaSIPBulk.class, "VFATTURAPASSIVASIP_RID"); SQLBuilder sql2 = homeFat.createSQLBuilder(); sql2.setDistinctClause(true); sql2.addSQLJoin("V_VOCE_F_PARTITA_GIRO.ESERCIZIO", "VFATTURAPASSIVASIP.ESERCIZIO"); sql2.addSQLJoin("V_VOCE_F_PARTITA_GIRO.CD_VOCE", "VFATTURAPASSIVASIP.CD_ELEMENTO_VOCE"); sql2.addSQLClause("AND", "VFATTURAPASSIVASIP.CD_UNITA_ORGANIZZATIVA", SQLBuilder.EQUALS, uo); sql.addSQLExistsClause("AND", sql2); } else if (tipoFiltro != null && tipoFiltro.equalsIgnoreCase("compenso")) { VCompensoSIPHome homeComp = (VCompensoSIPHome) getHome(userContext, VCompensoSIPBulk.class, "VCOMPENSOSIP_RID"); SQLBuilder sql2 = homeComp.createSQLBuilder(); sql2.setDistinctClause(true); sql2.addSQLJoin("V_VOCE_F_PARTITA_GIRO.ESERCIZIO", "VCOMPENSOSIP.ESERCIZIO"); sql2.addSQLJoin("V_VOCE_F_PARTITA_GIRO.CD_VOCE", "VCOMPENSOSIP.CD_ELEMENTO_VOCE"); sql2.addSQLClause("AND", "VCOMPENSOSIP.CD_UNITA_ORGANIZZATIVA", SQLBuilder.EQUALS, uo); sql.addSQLExistsClause("AND", sql2); } else if (tipoFiltro != null && tipoFiltro.equalsIgnoreCase("missione")) { VMissioneSIPHome homeMis = (VMissioneSIPHome) getHome(userContext, VMissioneSIPBulk.class, "VMISSIONESIP_RID"); SQLBuilder sql2 = homeMis.createSQLBuilder(); sql2.setDistinctClause(true); sql2.addSQLJoin("V_VOCE_F_PARTITA_GIRO.ESERCIZIO", "VMISSIONESIP.ESERCIZIO"); sql2.addSQLJoin("V_VOCE_F_PARTITA_GIRO.CD_VOCE", "VMISSIONESIP.CD_ELEMENTO_VOCE"); sql2.addSQLClause("AND", "VMISSIONESIP.CD_UNITA_ORGANIZZATIVA", SQLBuilder.EQUALS, uo); sql.addSQLExistsClause("AND", sql2); } return home.fetchAll(sql); } } catch (it.cnr.jada.persistency.PersistencyException ex) { throw handleException(ex); } } public it.cnr.jada.bulk.OggettoBulk inizializzaBulkPerStampa(it.cnr.jada.UserContext userContext, it.cnr.jada.bulk.OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException { if (bulk instanceof V_stampa_pdc_fin_ent_speBulk) inizializzaBulkPerStampa(userContext, (V_stampa_pdc_fin_ent_speBulk) bulk); return bulk; } public it.cnr.jada.bulk.OggettoBulk inizializzaBulkPerStampa(UserContext userContext, V_stampa_pdc_fin_ent_speBulk stampa) throws ComponentException { stampa.setEsercizio(CNRUserContext.getEsercizio(userContext)); stampa.setTi_gestione(stampa.TI_GESTIONE_ENTRATE); return stampa; } public OggettoBulk stampaConBulk(UserContext aUC, OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException { if (bulk instanceof V_stampa_pdc_fin_ent_speBulk) return stampaConBulk(aUC, (V_stampa_pdc_fin_ent_speBulk) bulk); return bulk; } public OggettoBulk stampaConBulk(UserContext userContext, V_stampa_pdc_fin_ent_speBulk stampa) throws ComponentException { if (stampa.getEsercizio() == null) throw new ApplicationException("Il campo ESERCIZIO e' obbligatorio"); return stampa; } private Elemento_voceBulk findElementoVocePrelievo(UserContext userContext) throws ComponentException, it.cnr.jada.persistency.PersistencyException { Elemento_voceHome home = (Elemento_voceHome) getHome(userContext, Elemento_voceBulk.class); SQLBuilder sql = home.createSQLBuilder(); sql.addSQLClause("AND", "ESERCIZIO", sql.EQUALS, it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(userContext)); sql.addSQLClause("AND", "FL_PRELIEVO", sql.EQUALS, "Y"); it.cnr.jada.persistency.Broker broker = home.createBroker(sql); if (!broker.next()) return null; return (Elemento_voceBulk) broker.fetch(Elemento_voceBulk.class); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy