it.cnr.contab.inventario00.comp.InventarioConsegnatarioComponent 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.inventario00.comp;
import it.cnr.contab.inventario00.tabrif.bulk.*;
import it.cnr.contab.config00.sto.bulk.*;
import it.cnr.contab.config00.esercizio.bulk.*;
import it.cnr.jada.UserContext;
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.comp.ComponentException;
import it.cnr.jada.comp.ICRUDMgr;
import it.cnr.jada.persistency.sql.*;
import it.cnr.jada.util.RemoteIterator;
import java.io.Serializable;
import java.rmi.RemoteException;
import java.util.Iterator;
import java.util.List;
/**
* Insert the type's description here.
* Creation date: (04/12/2001 15.25.02)
* @author: Roberto Fantino
*/
public class InventarioConsegnatarioComponent
extends it.cnr.jada.comp.CRUDComponent
implements ICRUDMgr,IInventarioConsegnatarioMgr,Cloneable,Serializable{
/**
* InventarioConsegnatarioComponent constructor comment.
*/
public InventarioConsegnatarioComponent() {
super();
}
/**
* Controlla la data di fine validità
* PreCondition:
* La data specificata di fine validità è superiore alla data di inizio validità
* PostCondition:
* Un messaggio di errore viene visualizzato all'utente per indicare che la data di fine validità
* deve essere posteriore a quella di inizio.
*
* @param aUC lo UserContext che ha generato la richiesta
* @param invC Inventario_consegnatarioBulk l'OggettoBulk che contiene le
* informazioni relative all'Inventario ed al suo Consegnatario
**/
private void checkDataFineValidita(UserContext aUC, Inventario_consegnatarioBulk invC)
throws ComponentException{
if (invC.getDt_fine_validita() != null){
if (invC.getDt_inizio_validita().after(invC.getDt_fine_validita()))
throw new it.cnr.jada.comp.CRUDValidationException("Attenzione: la data di fine validità deve essere superiore alla data di inizio validita");
}
}
/**
* Controlla la data di fine validità - non specificata
* PreCondition:
* La data di inizio validità non è stata specificata
* PostCondition:
* Un messaggio di errore viene visualizzato all'utente per indicare che la data di
* inizio validità è obbligatoria
*
* Controlla la data di fine validità - data non valida
* PreCondition:
* Il periodo specificato si accavalla con uno già esistente. La data di inizio validità
* specificata, è antecedente alla max data di INIZIO validità registrata su DB.
* PostCondition:
* Un messaggio di errore viene visualizzato all'utente per indicare che la data di
* inizio validità deve essere superiore all'ultima data inizio validita.
*
* Controlla la data di fine validità - data non valida
* PreCondition:
* Il periodo specificato si accavalla con uno già esistente. La data di inizio validità
* specificata, è antecedente alla max data di FINE validità registrata su DB.
* PostCondition:
* Un messaggio di errore viene visualizzato all'utente per indicare che la data di
* inizio validità deve essere superiore all'ultima data fine validita.
*
* @param aUC lo UserContext che ha generato la richiesta
* @param invC Inventario_consegnatarioBulk l'OggettoBulk che contiene le
* informazioni relative all'Inventario ed al suo Consegnatario
**/
private void checkDataInizioValidita(it.cnr.jada.UserContext aUC, Inventario_consegnatarioBulk invC)
throws ComponentException, it.cnr.jada.persistency.PersistencyException, it.cnr.jada.persistency.IntrospectionException {
// Data Inizio Validita == null
if (invC.getDt_inizio_validita() == null)
throw new it.cnr.jada.comp.CRUDValidationException("Attenzione: la data inizio validita è un campo obbligatorio");
// Data Inizio Validita < Max Data Inizio Validita
Inventario_consegnatarioHome invCHome = (Inventario_consegnatarioHome)getHome(aUC,Inventario_consegnatarioBulk.class);
java.sql.Timestamp maxDt = (java.sql.Timestamp)invCHome.findMax(invC, "dt_inizio_validita") ;
if ( (maxDt != null) && (!invC.getDt_inizio_validita().after(maxDt)) )
throw new it.cnr.jada.comp.CRUDValidationException("Attenzione: la data inizio validita deve essere superiore all'ultima data inizio validita");
// Data Inizio Validita < Ultima Data Fine Validita
Inventario_consegnatarioBulk tmp = new Inventario_consegnatarioBulk();
tmp.setInventario(invC.getInventario());
tmp.setDt_inizio_validita(maxDt);
maxDt = (java.sql.Timestamp)invCHome.findMax(tmp, "dt_fine_validita") ;
if ( (maxDt != null) && (maxDt.compareTo(EsercizioHome.DATA_INFINITO)!=0) && (invC.getDt_inizio_validita().before(maxDt)) )
throw new it.cnr.jada.comp.CRUDValidationException("Attenzione: la data inizio validita deve essere superiore all'ultima data fine validita");
}
/**
* Errore nella validazione del Consegnatario.
* PreCondition:
* I dati specificati dall'utente per la creazione del onsegnatario non hanno passato
* i controlli di validazione, (metodo validaConsegntario).
* PostCondition:
* Non viene consentito il salvataggio dei dati.
*
* Errore nella validazione della Data di Inizio validità
* PreCondition:
* La data di inizio validità specificata non ha superato i controlli di validità, (metodo checkDataInizioValidita).
* PostCondition:
* Non viene consentito il salvataggio dei dati.
*
* Errore nella validazione della Data di Fine validità
* PreCondition:
* La data di fine validità specificata non ha superato i controlli di validità, (metodo checkDataFineValidita).
* PostCondition:
* Non viene consentito il salvataggio dei dati.
*
* Tutti i controlli superati.
* PreCondition:
* E' stata generata la richiesta di creazione di un Consegnatario per l'Inventario
* associato alla UO di scrivania.
* PostCondition:
* Viene consentito il salvataggio.
*
* @param aUC lo UserContext che ha generato la richiesta
* @param bulk OggettoBulk il Bulk da creare
*
* @return bulk l'oggetto OggettoBulk creato
**/
public OggettoBulk creaConBulk (UserContext aUC,OggettoBulk bulk) throws ComponentException{
try{
Inventario_consegnatarioBulk invC = (Inventario_consegnatarioBulk)bulk;
validaConsegntario(aUC,invC);
checkDataInizioValidita(aUC, invC);
checkDataFineValidita(aUC,invC);
return super.creaConBulk(aUC, invC);
}catch(it.cnr.jada.persistency.PersistencyException ex){
throw handleException(bulk, ex);
}catch(it.cnr.jada.persistency.IntrospectionException ex){
throw handleException(bulk, ex);
}
}
/**
* Elimina l'ultimo Consegnatario.
* PreCondition:
* E' stata generata la richiesta di cancellare fisicamente l'ultimo Consegnatario
* dell'Inventario. L'operazione di cancellazione dal DB del Consegnatario, infatti,
* è possibile solo sull'ultimo Consegnatario specificato, (quello attuale), ossia
* su quel Consegnatario che ha DT_FINE_VALIDITA' = NULL.
* PostCondition:
* Il sistema cancella il Consegnatario specificato. Viene impostato a NULL il valore
* DT_FINE_VALIDITA del Consegnatario "precedente", in modo da indicarlo come Consegnatario
* attuale.
*
* @param userContext lo UserContext che ha generato la richiesta.
* @param bulk OggettoBulk il Bulk da eliminare.
**/
public void eliminaConBulk (UserContext aUC,OggettoBulk bulk) throws ComponentException {
try{
super.eliminaConBulk(aUC, bulk);
Inventario_consegnatarioBulk inv_consegnatario = (Inventario_consegnatarioBulk)bulk;
Inventario_consegnatarioHome home =(Inventario_consegnatarioHome)getHome(aUC,Inventario_consegnatarioBulk.class);
Inventario_consegnatarioBulk inv_con=new Inventario_consegnatarioBulk();
inv_con.setInventario(new Id_inventarioBulk(inv_consegnatario.getPg_inventario()));
SQLBuilder sql = home.createSQLBuilder();
sql.addSQLClause("AND","PG_INVENTARIO",sql.EQUALS,inv_consegnatario.getPg_inventario());
sql.addSQLClause("AND","DT_FINE_VALIDITA",sql.EQUALS,home.findMax(inv_con,"dt_fine_validita"));
List consegnatari = home.fetchAll(sql);
for (Iterator i=consegnatari.iterator();i.hasNext();){
Inventario_consegnatarioBulk consegnatario=(Inventario_consegnatarioBulk )i.next();
consegnatario.setDt_fine_validita(null);
consegnatario.setToBeUpdated();
super.modificaConBulk(aUC,consegnatario);
}
}catch(it.cnr.jada.persistency.PersistencyException ex){
throw handleException(bulk, ex);
}
}
/**
* Cerca l'Inventario di cui la Uo di scrivania è responsabile
* PreCondition:
* La Uo di scrivania non è responsabile di alcun Inventario, (metodo loadInventarioResp).
* PostCondition:
* Viene visualizzato un messaggio all'utente con la spiegazione dell'errore
*
* Inizializzazione di una istanza di Inventario_consegnatarioBulk
* PreCondition:
* E' stata generata la richiesta di inizializzare una istanza di Inventario_consegnatarioBulk.
* PostCondition:
* Viene impostata e proposta la data odierna come data di inizio validità.
*
* @param aUC lo UserContext che ha generato la richiesta.
* @param bulk OggettoBulk il bulk che deve essere inizializzato.
*
* @return bulk OggettoBulk il bulk inizializzato.
**/
public OggettoBulk inizializzaBulkPerInserimento (UserContext aUC,OggettoBulk bulk) throws ComponentException{
try {
Inventario_consegnatarioBulk invC = (Inventario_consegnatarioBulk)super.inizializzaBulkPerInserimento(aUC,bulk);
// carico l'Inventario di cui la U.O. di scrivania è responsabile
loadInventarioResp(aUC,invC);
invC.setDt_inizio_validita(it.cnr.jada.util.ejb.EJBCommonServices.getServerDate());
invC.setConsegnatario(new it.cnr.contab.anagraf00.core.bulk.TerzoBulk());
invC.setDelegato(new it.cnr.contab.anagraf00.core.bulk.TerzoBulk());
return invC;
} catch(it.cnr.jada.persistency.PersistencyException e) {
throw handleException(bulk,e);
} catch(it.cnr.jada.persistency.IntrospectionException e) {
throw handleException(bulk,e);
} catch(javax.ejb.EJBException e) {
throw handleException(bulk,e);
}
}
/**
* Inizializzazione di una istanza di Inventario_consegnatarioBulk per modifica
* PreCondition:
* E' stata richiesta l'inizializzazione di una istanza di Inventario_consegnatarioBulk per modifica.
* PostCondition:
* L'OggettoBulk viene inizializzato con tutti gli oggetti collegati e preparato
* per l'operazione modifica.
*
* @param aUC lo UserContext che ha generato la richiesta.
* @param bulk OggettoBulk l'Inventario che deve essere inizializzato.
*
* @return bulk OggettoBulk l'Inventario inizializzato.
**/
public OggettoBulk inizializzaBulkPerModifica (UserContext aUC,OggettoBulk bulk) throws ComponentException{
try{
Inventario_consegnatarioBulk invC = (Inventario_consegnatarioBulk)super.inizializzaBulkPerInserimento(aUC,bulk);
getHomeCache(aUC).fetchAll(aUC);
return invC;
} catch(it.cnr.jada.persistency.PersistencyException e) {
throw handleException(bulk,e);
}
}
/**
* Cerca l'Inventario di cui la Uo di scrivania è responsabile
* PreCondition:
* La Uo di scrivania non è responsabile di alcun Inventario, (metodo loadInventarioResp).
* PostCondition:
* Viene visualizzato un messaggio all'utente con la spiegazione dell'errore
*
* Inizializzazione di una istanza di Inventario_consegnatarioBulk per Ricerca
* PreCondition:
* E' stata generata la richiesta di inizializzare una istanza di Inventario_consegnatarioBulk per Ricerca.
* PostCondition:
* L'OggettoBulk viene inizializzato con tutti gli oggetti collegati e preparato
* per l'operazione di ricerca.
*
* @param aUC lo UserContext che ha generato la richiesta
* @param bulk OggettoBulk l'Inventario che deve essere istanziato
*
* @return OggettoBulk l'Inventario inizializzato
**/
public OggettoBulk inizializzaBulkPerRicerca(UserContext aUC,OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException {
try {
Inventario_consegnatarioBulk invC = (Inventario_consegnatarioBulk)super.inizializzaBulkPerRicerca(aUC,bulk);
// carico l'Inventario di cui la U.O. di scrivania è responsabile
loadInventarioResp(aUC,invC);
getHomeCache(aUC).fetchAll(aUC);
return invC;
} catch(it.cnr.jada.persistency.PersistencyException e) {
throw handleException(bulk,e);
} catch(it.cnr.jada.persistency.IntrospectionException e) {
throw handleException(bulk,e);
}
}
/**
* Cerca l'Inventario di cui la Uo di scrivania è responsabile
* PreCondition:
* La Uo di scrivania non è responsabile di alcun Inventario, (metodo loadInventarioResp).
* PostCondition:
* Viene visualizzato un messaggio all'utente con la spiegazione dell'errore
*
* Inizializzazione di una istanza di Inventario_consegnatarioBulk per Ricerca
* PreCondition:
* E' stata generata la richiesta di inizializzare una istanza di Inventario_consegnatarioBulk per Ricerca.
* PostCondition:
* L'OggettoBulk viene inizializzato con tutti gli oggetti collegati e preparato
* per l'operazione di ricerca.
*
* @param aUC lo UserContext che ha generato la richiesta
* @param bulk OggettoBulk l'Inventario che deve essere istanziato
*
* @return OggettoBulk l'Inventario inizializzato
**/
public OggettoBulk inizializzaBulkPerRicercaLibera(UserContext aUC,OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException {
try {
Inventario_consegnatarioBulk invC = (Inventario_consegnatarioBulk)super.inizializzaBulkPerRicercaLibera(aUC,bulk);
// carico l'Inventario di cui la U.O. di scrivania è responsabile
loadInventarioResp(aUC,invC);
getHomeCache(aUC).fetchAll(aUC);
return invC;
} catch(it.cnr.jada.persistency.PersistencyException e) {
throw handleException(bulk,e);
} catch(it.cnr.jada.persistency.IntrospectionException e) {
throw handleException(bulk,e);
}
}
/**
* Carica l'inventario di cui la U.O. di scrivania è responsabile.
* PreCondition:
* La UO di scrivania non è responsabile di alcun Inventario.
* PostCondition:
* Un messaggio di errore viene visualizzato all'utente per segnalare l'impossibilità di continuare nelle operazioni.
*
* Carica l'Inventario di competenza
* PreCondition:
* E' stato richiesto di caricare l'Inventario di cui la UO di scrivania è responsabile.
* PostCondition:
* Viene caricato l'Inventario di competenza. Questo viene utilizzato per impostare l'Inventario di riferimento.
*
* @param aUC lo UserContext che ha generato la richiesta
* @param invC Inventario_consegnatarioBulk l'OggettoBulk che contiene le
* informazioni relative all'Inventario ed al suo Consegnatario
**/
private void loadInventarioResp(UserContext userContext, Inventario_consegnatarioBulk invC) throws it.cnr.jada.comp.ComponentException, it.cnr.jada.persistency.IntrospectionException, it.cnr.jada.persistency.PersistencyException{
Id_inventarioHome invHome = (Id_inventarioHome)getHome(userContext,Id_inventarioBulk.class);
Id_inventarioBulk invResp = invHome.findInventarioRespFor(userContext);
if (invResp == null)
throw new it.cnr.jada.comp.ApplicationException("L'Unità organizzativa selezionata non è responsabile di alcun inventario");
invC.setInventario(invResp);
}
/**
* Errore - data fine validità
* PreCondition:
* Le modifiche apportate alla data di fine validità per il Consegnatario non superano
* i controlli di validazione.
* PostCondition:
* Viene visualizzato un messaggio con la spiegazione dell'errore.
*
* Modifica Consegnatario
* PreCondition:
* E' stata generata la richiesta di modificare i dati del Consegnatario dell'Inventario.
* Le modifiche passano le validazioni.
* PostCondition:
* Viene consentito il salvataggio.
*
* @param userContext lo UserContext che ha generato la richiesta
* @param bulk OggettoBulk il Bulk da modificare
*
* @return l'oggetto OggettoBulk modificato
**/
public OggettoBulk modificaConBulk (UserContext aUC,OggettoBulk bulk) throws ComponentException {
Inventario_consegnatarioBulk invC = (Inventario_consegnatarioBulk)bulk;
checkDataFineValidita(aUC,invC);
setDataFineValidita(invC);
return super.modificaConBulk(aUC,invC);
}
/**
* Ricerca di un Consegnatario
* PreCondition:
* E' stata generata la richiesta di ricercare un Consegnatario nello storico dell'Inventario.
* PostCondition:
* E' stato creato il SQLBuilder con le clausole implicite (presenti nell'istanza di Inventario_consegnatarioBulk),
* ed è stata aggiunta la clausola che l'Inventario sia quello associato alla UO di scrivania.
*
* @param userContext lo UserContext che ha generato la richiesta
* @param clauses CompoundFindClause le clausole della selezione
* @param invC Inventario_consegnatarioBulk l'OggettoBulk che contiene le
* informazioni relative all'Inventario ed al suo Consegnatario
*
* @return sql SQLBuilder Risultato della selezione.
**/
protected Query select(UserContext userContext,CompoundFindClause clauses,OggettoBulk bulk) throws ComponentException, it.cnr.jada.persistency.PersistencyException {
Inventario_consegnatarioBulk invcons = (Inventario_consegnatarioBulk)bulk;
SQLBuilder sql = (SQLBuilder)super.select(userContext,clauses, bulk);
sql.addSQLClause("AND", "PG_INVENTARIO", sql.EQUALS, invcons.getInventario().getPg_inventario());
sql.addOrderBy("DT_FINE_VALIDITA");
return sql;
}
/**
* Ricerca di un Terzo Consegnatario per l'Inventario
* PreCondition:
* E' stata generata la richiesta di ricerca di un Terzo Consegnatario per l'Inventario.
* PostCondition:
* Viene restituito il SQLBuilder con l'elenco delle clausole selezionate dall'utente e, in aggiunta, le
* clausole che il Terzo sia ancora valido, ossia abbia Data di fine rapporto e Data
* di cancellazione non valorizzate.
*
* @param userContext lo UserContext che ha generato la richiesta
* @param inv_consegnatario il Inventario_consegnatarioBulk l'oggetto che contiene le
* informazioni relative all'Inventario ed al suo Consegnatario
* @param delegato il TerzoBulk TerzoBulk modello
* @param clauses CompoundFindClause le clausole della selezione
*
* @return sql SQLBuilder Risultato della selezione.
**/
public SQLBuilder selectConsegnatarioByClause(
UserContext userContext,
Inventario_consegnatarioBulk inv_consegnatario,
it.cnr.contab.anagraf00.core.bulk.TerzoBulk delegato,
CompoundFindClause clauses) throws ComponentException {
SQLBuilder sql = getHome(userContext, it.cnr.contab.anagraf00.core.bulk.TerzoBulk.class,"V_TERZO_CF_PI").createSQLBuilder();
sql.addClause( clauses );
sql.addSQLClause("AND", "DT_FINE_RAPPORTO", sql.ISNULL, null);
sql.addSQLClause("AND", "DT_CANC", sql.ISNULL, null);
sql.addOrderBy("CD_TERZO");
return sql;
}
/**
* Ricerca di un Terzo Delegato per l'Inventario
* PreCondition:
* E' stata generata la richiesta di ricerca di un Terzo Delegato per l'Inventario.
* PostCondition:
* Viene restituito il SQLBuilder con l'elenco delle clausole selezionate dall'utente e, in aggiunta, le
* clausole che il Terzo sia ancora valido, ossia abbia Data di fine rapporto e Data
* di cancellazione non valorizzate.
*
* @param userContext lo UserContext che ha generato la richiesta
* @param inv_consegnatario il Inventario_consegnatarioBulk l'oggetto che contiene le
* informazioni relative all'Inventario ed al suo Consegnatario
* @param delegato il TerzoBulk TerzoBulk modello
* @param clauses CompoundFindClause le clausole della selezione
*
* @return sql SQLBuilder Risultato della selezione.
**/
public SQLBuilder selectDelegatoByClause(UserContext userContext, Inventario_consegnatarioBulk inv_consegnatario, it.cnr.contab.anagraf00.core.bulk.TerzoBulk delegato, CompoundFindClause clauses)
throws ComponentException
{
SQLBuilder sql = getHome(userContext, it.cnr.contab.anagraf00.core.bulk.TerzoBulk.class,"V_TERZO_CF_PI").createSQLBuilder();
sql.addClause( clauses );
sql.addSQLClause("AND", "DT_FINE_RAPPORTO", sql.ISNULL, null);
sql.addSQLClause("AND", "DT_CANC", sql.ISNULL, null);
sql.addOrderBy("CD_TERZO");
return sql;
}
/**
* Imposta la data di fine validità del Consegnatario. Se la data non è stata specificata,
* viene impostata come DATA_INFINITO.
*
* @param inv_consegnatario il Inventario_consegnatarioBulk l'oggetto che contiene le
* informazioni relative all'Inventario ed al suo Consegnatario
**/
private void setDataFineValidita(Inventario_consegnatarioBulk invC) {
if(invC.getDt_fine_validita()==null)
invC.setDt_fine_validita(EsercizioHome.DATA_INFINITO);
}
/**
* valida Consegnatario - Consegnatario non specificato
* PreCondition:
* Non è stato specificato alcun Terzo Consegnatario.
* PostCondition:
* Un messaggio di errore viene visualizzato all'utente per segnalare la necessità di
* specificare un Terzo.
*
* valida Consegnatario - Data inizio validità
* PreCondition:
* Non è stata specificata la data inizio validità, oppure la data specificata non è valida.
* PostCondition:
* Un messaggio di errore viene visualizzato all'utente per indicare l'errore.
*
* tutti i controlli superati
* PreCondition:
* Nessuna altra precondition soddisfatta
* PostCondition:
* viene consentito il salvataggio
*
* @param aUC lo UserContext che ha generato la richiesta
* @param inv_consegnatario il Inventario_consegnatarioBulk l'oggetto che contiene le
* informazioni relative all'Inventario ed al suo Consegnatario
**/
private void validaConsegntario (UserContext aUC,Inventario_consegnatarioBulk consegnatario) throws ComponentException{
try{
if (consegnatario.getConsegnatario()==null || consegnatario.getCd_consegnatario()==null){
throw new it.cnr.jada.comp.ApplicationException("Attenzione: specificare un Consegnatario");
}
if (consegnatario.getDt_inizio_validita()==null){
throw new it.cnr.jada.comp.ApplicationException("Attenzione: specificare una Data di inizio Validità");
}
Inventario_consegnatarioHome consH = (Inventario_consegnatarioHome)getHome(aUC,Inventario_consegnatarioBulk.class);
consH.checkInserimentoSuccessivo(consegnatario);
}
catch (Exception e)
{
throw new ComponentException(e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy