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

it.cnr.contab.prevent01.bulk.Pdg_modulo_speseHome 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 .
 */

/*
* Created by Generator 1.0
* Date 29/09/2005
*/
package it.cnr.contab.prevent01.bulk;
import it.cnr.contab.pdg01.bulk.Pdg_modulo_spese_gestBulk;
import it.cnr.contab.prevent00.bulk.Voce_f_saldi_cdr_lineaBulk;

import org.apache.poi.hssf.record.formula.functions.Find;

import it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk;
import it.cnr.contab.config00.pdcfin.bulk.Elemento_voceHome;
import it.cnr.contab.config00.pdcfin.bulk.Voce_fBulk;
import it.cnr.contab.config00.pdcfin.cla.bulk.V_classificazione_vociBulk;
import it.cnr.contab.config00.pdcfin.cla.bulk.V_classificazione_vociHome;
import it.cnr.contab.config00.sto.bulk.Tipo_unita_organizzativaHome;
import it.cnr.contab.config00.sto.bulk.V_struttura_organizzativaBulk;
import it.cnr.contab.prevent00.bulk.Voce_f_saldi_cmpBulk;
import it.cnr.contab.utenze00.bp.CNRUserContext;
import it.cnr.jada.UserContext;
import it.cnr.jada.bulk.BulkHome;
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.comp.ComponentException;
import it.cnr.jada.persistency.IntrospectionException;
import it.cnr.jada.persistency.PersistencyException;
import it.cnr.jada.persistency.PersistentCache;
import it.cnr.jada.persistency.sql.CompoundFindClause;
import it.cnr.jada.persistency.sql.FindClause;
import it.cnr.jada.persistency.sql.PersistentHome;
import it.cnr.jada.persistency.sql.SQLBuilder;
public class Pdg_modulo_speseHome extends BulkHome {
	public Pdg_modulo_speseHome(java.sql.Connection conn) {
		super(Pdg_modulo_speseBulk.class, conn);
	}
	public Pdg_modulo_speseHome(java.sql.Connection conn, PersistentCache persistentCache) {
		super(Pdg_modulo_speseBulk.class, conn, persistentCache);
	}
	public SQLBuilder calcolaPrevisioneAssestataAnnoPrecedente(it.cnr.jada.UserContext userContext,Pdg_modulo_speseBulk pdg_modulo_spese, Integer anno_precedente, String tipo_natura) throws IntrospectionException, PersistencyException {
		SQLBuilder sql = calcolaPrevisioneAssestataAnnoPrecedente( userContext,pdg_modulo_spese, anno_precedente);
		sql.addSQLClause("AND", "NATURA.TIPO",SQLBuilder.EQUALS, tipo_natura);
		return sql;		
	}
	public SQLBuilder calcolaPrevisioneAssestataAnnoPrecedente(it.cnr.jada.UserContext userContext,Pdg_modulo_speseBulk pdg_modulo_spese, Integer anno_precedente) throws IntrospectionException, PersistencyException {
		String nomeColonnaLivello = "V_CLASSIFICAZIONE_VOCI_ALL.CD_LIV"+pdg_modulo_spese.getClassificazione().getNr_livello();	
		PersistentHome dettHome = getHomeCache().getHome(Voce_f_saldi_cdr_lineaBulk.class);
		SQLBuilder sql = dettHome.createSQLBuilder();
		sql.resetColumns();
		sql.addColumn("SUM(VOCE_F_SALDI_CDR_LINEA.IM_STANZ_INIZIALE_A1 + VOCE_F_SALDI_CDR_LINEA.VARIAZIONI_PIU - VOCE_F_SALDI_CDR_LINEA.VARIAZIONI_MENO) TOTALE");
		sql.addTableToHeader("LINEA_ATTIVITA");
		sql.addTableToHeader("V_CLASSIFICAZIONE_VOCI_ALL");
		sql.addTableToHeader("ELEMENTO_VOCE");
		sql.addTableToHeader("NATURA");
		sql.addTableToHeader("CDR");
		sql.addTableToHeader("UNITA_ORGANIZZATIVA");		
		sql.addSQLClause("AND","LINEA_ATTIVITA.PG_PROGETTO",sql.EQUALS,pdg_modulo_spese.getPg_progetto());
		sql.addSQLClause("AND","VOCE_F_SALDI_CDR_LINEA.ESERCIZIO",sql.EQUALS,anno_precedente);
		sql.addSQLJoin("VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA","CDR.CD_CENTRO_RESPONSABILITA");
		sql.addSQLJoin("CDR.CD_UNITA_ORGANIZZATIVA","UNITA_ORGANIZZATIVA.CD_UNITA_ORGANIZZATIVA");		
		sql.addSQLClause("AND","UNITA_ORGANIZZATIVA.CD_UNITA_PADRE",sql.EQUALS,pdg_modulo_spese.getPdg_modulo_costi().getPdg_modulo().getCdr().getCd_cds());
		sql.addSQLJoin("LINEA_ATTIVITA.CD_LINEA_ATTIVITA","VOCE_F_SALDI_CDR_LINEA.CD_LINEA_ATTIVITA");
		sql.addSQLJoin("LINEA_ATTIVITA.CD_CENTRO_RESPONSABILITA","VOCE_F_SALDI_CDR_LINEA.CD_CENTRO_RESPONSABILITA");
		sql.addSQLJoin("LINEA_ATTIVITA.CD_NATURA","NATURA.CD_NATURA");
		sql.addSQLClause("AND","VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA",sql.EQUALS,Voce_f_saldi_cdr_lineaBulk.TIPO_APPARTENENZA_CDS);
		sql.addSQLClause("AND","VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE",sql.EQUALS,Elemento_voceHome.GESTIONE_SPESE);
		sql.addSQLClause("AND", nomeColonnaLivello,SQLBuilder.EQUALS, pdg_modulo_spese.getClassificazione().getCd_classificazione());
		sql.addSQLClause("AND", "V_CLASSIFICAZIONE_VOCI_ALL.FL_MASTRINO",SQLBuilder.EQUALS, "Y");
		sql.addSQLClause("AND", "V_CLASSIFICAZIONE_VOCI_ALL.ESERCIZIO",SQLBuilder.EQUALS, anno_precedente);
		sql.addSQLJoin("V_CLASSIFICAZIONE_VOCI_ALL.ID_CLASSIFICAZIONE","ELEMENTO_VOCE.ID_CLASSIFICAZIONE");
		sql.addSQLJoin("ELEMENTO_VOCE.ESERCIZIO","VOCE_F_SALDI_CDR_LINEA.ESERCIZIO");				
		sql.addSQLJoin("ELEMENTO_VOCE.TI_APPARTENENZA","VOCE_F_SALDI_CDR_LINEA.TI_APPARTENENZA");				
		sql.addSQLJoin("ELEMENTO_VOCE.TI_GESTIONE","VOCE_F_SALDI_CDR_LINEA.TI_GESTIONE");						
		sql.addSQLJoin("ELEMENTO_VOCE.CD_ELEMENTO_VOCE","VOCE_F_SALDI_CDR_LINEA.CD_ELEMENTO_VOCE");				
		return sql;
	}
	public void initializePrimaryKeyForInsert(UserContext  usercontext,OggettoBulk oggettobulk)throws PersistencyException, ComponentException {
		try {
			Pdg_modulo_speseBulk pdg_modulo_spese = (Pdg_modulo_speseBulk)oggettobulk;
			if (pdg_modulo_spese.getCd_cds_area() == null)
			  pdg_modulo_spese.setArea(pdg_modulo_spese.getPdg_modulo_costi().getPdg_modulo().getCdr().getUnita_padre().getUnita_padre());
			pdg_modulo_spese.setPg_dettaglio(
					new Integer(((Integer)findAndLockMax( oggettobulk, "pg_dettaglio", new Integer(0) )).intValue()+1));
			super.initializePrimaryKeyForInsert(usercontext, pdg_modulo_spese);
		} catch(it.cnr.jada.bulk.BusyResourceException e) {
			throw new PersistencyException(e);
		}
	}
	
	/**
	 * Ritorna la lista delle classificazioni Mastrino
	 * @param classificazione
	 * @return
	 * @throws IntrospectionException
	 * @throws PersistencyException
	 */
	public java.util.List findClassificazioneMastrinoList( V_classificazione_vociBulk classificazione ) throws IntrospectionException,PersistencyException 
	{
		String nomeColonnaLivello = "CD_LIV"+classificazione.getNr_livello();
		PersistentHome asHome = getHomeCache().getHome(V_classificazione_vociBulk.class);
		SQLBuilder sql = asHome.createSQLBuilder();
		sql.addClause("AND", nomeColonnaLivello,SQLBuilder.EQUALS, classificazione.getCd_classificazione());
		sql.addClause("AND", "FL_MASTRINO",SQLBuilder.EQUALS, Boolean.TRUE);
		return asHome.fetchAll(sql);
	}
	/**
	 * Ritorna la lista degli elemento voce legati alla classificazione
	 * @param classificazione
	 * @return
	 * @throws IntrospectionException
	 * @throws PersistencyException
	 */
	public java.util.List findElemento_voceList( V_classificazione_vociBulk classificazione ) throws IntrospectionException,PersistencyException 
	{
		PersistentHome asHome = getHomeCache().getHome(Elemento_voceBulk.class);
		SQLBuilder sql = asHome.createSQLBuilder();
		sql.addClause("AND", "TI_GESTIONE",SQLBuilder.EQUALS, Elemento_voceHome.GESTIONE_SPESE);
		sql.addClause("AND", "ID_CLASSIFICAZIONE",SQLBuilder.EQUALS, classificazione.getId_classificazione());
		return asHome.fetchAll(sql);
	}
	/**
	 * Ritorna una lista di Voce_f legate all'elemento voce
	 * @param elemento_voce
	 * @return
	 * @throws IntrospectionException
	 * @throws PersistencyException
	 */
	public java.util.List findVoceByElementoList( Elemento_voceBulk elemento_voce, Integer esercizio ) throws IntrospectionException,PersistencyException 
	{
		PersistentHome asHome = getHomeCache().getHome(Voce_fBulk.class);
		SQLBuilder sql = asHome.createSQLBuilder();
		sql.addSQLClause("AND", "ESERCIZIO",SQLBuilder.EQUALS, esercizio);
		sql.addSQLClause("AND", "CD_ELEMENTO_VOCE",SQLBuilder.EQUALS, elemento_voce.getCd_elemento_voce());
		return asHome.fetchAll(sql);
	}
	/**
	 * 
	 * @param voce
	 * @param cd_cds
	 * @return
	 * @throws IntrospectionException
	 * @throws PersistencyException
	 */
	public java.util.List findSaldiForVoceList( Voce_fBulk voce , String cd_cds) throws IntrospectionException,PersistencyException 
	{
		PersistentHome asHome = getHomeCache().getHome(Voce_f_saldi_cmpBulk.class);
		SQLBuilder sql = asHome.createSQLBuilder();
		sql.addSQLClause("AND", "ESERCIZIO",SQLBuilder.EQUALS, voce.getEsercizio());
		sql.addSQLClause("AND", "CD_CDS",SQLBuilder.EQUALS, cd_cds);
		sql.addSQLClause("AND", "TI_APPARTENENZA",SQLBuilder.EQUALS, voce.getTi_appartenenza());
		sql.addSQLClause("AND", "TI_GESTIONE",SQLBuilder.EQUALS, voce.getTi_gestione());
		sql.addSQLClause("AND", "CD_VOCE",SQLBuilder.EQUALS, voce.getCd_voce());
		return asHome.fetchAll(sql);
	}		

	/**
	 * Ritorna l'SQLBuilder utile per recuperare tutti i dati nella tabella PDG_MODULO_SPESE_GEST 
	 * relativi alla testata in uso.
	 *
	 * @param testata La testata in uso.
	 *
	 * @return SQLBuilder
	 */
	private SQLBuilder sqlBuilderDettagliGestionali(Pdg_modulo_speseBulk testata) throws PersistencyException {
		PersistentHome dettHome = getHomeCache().getHome(Pdg_modulo_spese_gestBulk.class);
		SQLBuilder sql = dettHome.createSQLBuilder();
		sql.addClause("AND","esercizio",sql.EQUALS,testata.getEsercizio());
		sql.addClause("AND","cd_centro_responsabilita",sql.EQUALS,testata.getCd_centro_responsabilita());
		sql.addClause("AND","pg_progetto",sql.EQUALS,testata.getPg_progetto());
		sql.addClause("AND","id_classificazione",sql.EQUALS,testata.getId_classificazione());
		sql.addClause("AND","cd_cds_area",sql.EQUALS,testata.getCd_cds_area());
		sql.addClause("AND","pg_dettaglio",sql.EQUALS,testata.getPg_dettaglio());
		return sql;
	}	
	/**
	 * Ritorna l'SQLBuilder utile per recuperare i dati originali nella tabella PDG_MODULO_SPESE_GEST individuati
	 * dal fatto che il CDR_Assegnatario appartiene allo stesso CDS del Centro di responsabilità principale  
	 * relativi alla testata in uso.
	 *
	 * @param testata La testata in uso.
	 *
	 * @return SQLBuilder
	 */
	private SQLBuilder sqlBuilderDettagliGestionaliOriginali(Pdg_modulo_speseBulk testata) throws PersistencyException {
		SQLBuilder sql = sqlBuilderDettagliGestionali(testata);

		sql.addTableToHeader("V_STRUTTURA_ORGANIZZATIVA", "A");
		sql.addSQLJoin("PDG_MODULO_SPESE_GEST.ESERCIZIO","A.ESERCIZIO");
		sql.addSQLJoin("PDG_MODULO_SPESE_GEST.CD_CENTRO_RESPONSABILITA","A.CD_ROOT");

		sql.addTableToHeader("V_STRUTTURA_ORGANIZZATIVA", "B");
		sql.addSQLJoin("PDG_MODULO_SPESE_GEST.ESERCIZIO","B.ESERCIZIO");
		sql.addSQLJoin("PDG_MODULO_SPESE_GEST.CD_CDR_ASSEGNATARIO","B.CD_ROOT");

		sql.addSQLJoin("A.CD_CDS","B.CD_CDS");

		return sql;
	}	

	/**
	 * Recupera tutti i dati nella tabella PDG_MODULO_SPESE_GEST relativi alla testata in uso.
	 *
	 * @param testata La testata in uso.
	 *
	 * @return java.util.Collection Collezione di oggetti Pdg_modulo_spese_gestBulk
	 */
	public java.util.Collection findDettagliGestionali(Pdg_modulo_speseBulk testata) throws PersistencyException {
		PersistentHome dettHome = getHomeCache().getHome(Pdg_modulo_spese_gestBulk.class);
		return dettHome.fetchAll(sqlBuilderDettagliGestionali(testata));
	}	
	/**
	 * Recupera tutti i dati originali nella tabella PDG_MODULO_SPESE_GEST individuati
	 * dal fatto che il CDR_Assegnatario appartiene allo stesso CDS del Centro di responsabilità principale  
	 * relativi alla testata in uso.
	 * 
	 * @param testata La testata in uso.
	 *
	 * @return java.util.Collection Collezione di oggetti Pdg_modulo_spese_gestBulk
	 */
	public java.util.Collection findDettagliGestionaliOriginali(Pdg_modulo_speseBulk testata) throws PersistencyException {
		PersistentHome dettHome = getHomeCache().getHome(Pdg_modulo_spese_gestBulk.class);
		return dettHome.fetchAll(sqlBuilderDettagliGestionaliOriginali(testata));
	}	
	/**
	 * Calcola il totale della colonna IM_SPESE_GEST_ACCENTRATA_INT nella tabella PDG_MODULO_SPESE_GEST 
	 * relativi alla testata in uso.
	 *
	 * @param testata La testata in uso.
	 *
	 * @return java.util.Collection Collezione di oggetti Pdg_modulo_spese_gestBulk
	 */
	public SQLBuilder calcolaTotaleDettagliGestionaliAccInt(it.cnr.jada.UserContext userContext,Pdg_modulo_speseBulk testata) throws PersistencyException {
		SQLBuilder sql = sqlBuilderDettagliGestionaliOriginali(testata);
		sql.resetColumns();
		sql.addColumn("SUM(PDG_MODULO_SPESE_GEST.IM_SPESE_GEST_ACCENTRATA_INT) TOTALE");
		return sql;
	}
	/**
	 * Calcola il totale della colonna IM_SPESE_GEST_ACCENTRATA_EST nella tabella PDG_MODULO_SPESE_GEST 
	 * relativi alla testata in uso.
	 *
	 * @param testata La testata in uso.
	 *
	 * @return java.util.Collection Collezione di oggetti Pdg_modulo_spese_gestBulk
	 */
	public SQLBuilder calcolaTotaleDettagliGestionaliAccEst(it.cnr.jada.UserContext userContext,Pdg_modulo_speseBulk testata) throws PersistencyException {
		SQLBuilder sql = sqlBuilderDettagliGestionaliOriginali(testata);
		sql.resetColumns();
		sql.addColumn("SUM(PDG_MODULO_SPESE_GEST.IM_SPESE_GEST_ACCENTRATA_EST) TOTALE");
		return sql;
	}
	/**
	 * Calcola il totale della colonna IM_SPESE_GEST_DECENTRATA_INT nella tabella PDG_MODULO_SPESE_GEST 
	 * relativi alla testata in uso.
	 *
	 * @param testata La testata in uso.
	 *
	 * @return java.util.Collection Collezione di oggetti Pdg_modulo_spese_gestBulk
	 */
	public SQLBuilder calcolaTotaleDettagliGestionaliDecInt(it.cnr.jada.UserContext userContext,Pdg_modulo_speseBulk testata) throws PersistencyException {
		SQLBuilder sql = sqlBuilderDettagliGestionaliOriginali(testata);
		sql.resetColumns();
		sql.addColumn("SUM(PDG_MODULO_SPESE_GEST.IM_SPESE_GEST_DECENTRATA_INT) TOTALE");
		return sql;
	}
	/**
	 * Calcola il totale della colonna IM_SPESE_GEST_DECENTRATA_EST nella tabella PDG_MODULO_SPESE_GEST 
	 * relativi alla testata in uso.
	 *
	 * @param testata La testata in uso.
	 *
	 * @return java.util.Collection Collezione di oggetti Pdg_modulo_spese_gestBulk
	 */
	public SQLBuilder calcolaTotaleDettagliGestionaliDecEst(it.cnr.jada.UserContext userContext,Pdg_modulo_speseBulk testata) throws PersistencyException {
		SQLBuilder sql = sqlBuilderDettagliGestionaliOriginali(testata);
		sql.resetColumns();
		sql.addColumn("SUM(PDG_MODULO_SPESE_GEST.IM_SPESE_GEST_DECENTRATA_EST) TOTALE");
		return sql;
	}

	public SQLBuilder selectClassificazioneByClause(Integer esercizio, String cdr, Integer nrLivello) throws ComponentException, PersistencyException {
		SQLBuilder sql = ((V_classificazione_vociHome)getHomeCache().getHome(V_classificazione_vociBulk.class)).createSQLBuilder();
		sql.addTableToHeader("CDR");
		sql.addTableToHeader("UNITA_ORGANIZZATIVA");
		sql.addSQLClause(FindClause.AND, "V_CLASSIFICAZIONE_VOCI.NR_LIVELLO", SQLBuilder.EQUALS, nrLivello);
		sql.addSQLClause(FindClause.AND, "CDR.CD_CENTRO_RESPONSABILITA", SQLBuilder.EQUALS, cdr);
		sql.addSQLJoin("CDR.CD_UNITA_ORGANIZZATIVA","UNITA_ORGANIZZATIVA.CD_UNITA_ORGANIZZATIVA");
	    sql.openParenthesis(FindClause.AND);
	      sql.addSQLClause(FindClause.AND, "V_CLASSIFICAZIONE_VOCI.FL_ACCENTRATO", SQLBuilder.EQUALS, "Y");
	      sql.addSQLClause(FindClause.OR, "V_CLASSIFICAZIONE_VOCI.FL_DECENTRATO", SQLBuilder.EQUALS, "Y");
	    sql.closeParenthesis();
		sql.openParenthesis(FindClause.AND);
			sql.addSQLClause(FindClause.AND, "UNITA_ORGANIZZATIVA.CD_TIPO_UNITA", SQLBuilder.EQUALS, Tipo_unita_organizzativaHome.TIPO_UO_SAC);
			//sql.addClause("AND", "V_CLASSIFICAZIONE_VOCI.FL_CLASS_SAC", sql.EQUALS, Boolean.TRUE);
			sql.openParenthesis(FindClause.OR);		        
			  sql.addSQLClause(FindClause.AND, "UNITA_ORGANIZZATIVA.CD_TIPO_UNITA", SQLBuilder.NOT_EQUALS, Tipo_unita_organizzativaHome.TIPO_UO_SAC);
			  sql.addSQLClause(FindClause.AND, "V_CLASSIFICAZIONE_VOCI.FL_CLASS_SAC", SQLBuilder.EQUALS, "N");
			sql.closeParenthesis();  		      
		sql.closeParenthesis();
	    sql.addSQLClause(FindClause.AND, "V_CLASSIFICAZIONE_VOCI.ESERCIZIO", SQLBuilder.EQUALS, esercizio);
	    sql.addSQLClause(FindClause.AND, "V_CLASSIFICAZIONE_VOCI.TI_GESTIONE", SQLBuilder.EQUALS, Elemento_voceHome.GESTIONE_SPESE);
	    sql.addSQLClause(FindClause.AND, "V_CLASSIFICAZIONE_VOCI.FL_SOLO_GESTIONE", SQLBuilder.EQUALS,"N");
		return sql;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy