it.cnr.contab.compensi00.comp.DetrazioniFamiliariComponent Maven / Gradle / Ivy
/*
* Copyright (C) 2019 Consiglio Nazionale delle Ricerche
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
package it.cnr.contab.compensi00.comp;
/**
* Insert the type's description here.
* Creation date: (05/12/2001 12.02.34)
* @author: CNRADM
*/
import java.io.Serializable;
import java.rmi.RemoteException;
import it.cnr.contab.compensi00.tabrif.bulk.*;
import it.cnr.contab.docamm00.tabrif.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;
public class DetrazioniFamiliariComponent extends it.cnr.jada.comp.CRUDComponent implements IDetrazioniFamiliariMgr,Cloneable,Serializable{
/**
* DetrazioniFamiliariComponent constructor comment.
*/
public DetrazioniFamiliariComponent() {
super();
}
/**
* Insert the method's description here.
* Creation date: (05/12/2001 12.03.36)
*/
/**
* Tutti i controlli per la cancellazione del record sono stati superati
* PreCondition:
* Deve esistere un record con chiave uguale a quella del record da cancellare e con data fine validita
* uguale a data di inizio validita del record da cancellare meno un giorno
* PostCondition:
* Cancello il record ed aggiorno il record di periodo precendente a quello cancvellato
* mettendo la sua data di fine ad infinito (31/12/2200)
*
* Riscontrata condizione di errore.
* PreCondition:
* la tabella non contiene un altro record con stessa chiave di quello che sto cancellando
* e con data fine validita uguale alla data inizio validita del record da cancellare meno un giorno
* PostCondition:
* Viene inviato il messaggio "Attenzione, deve esistere almeno un periodo".
**/
public void eliminaConBulk (UserContext userContext,OggettoBulk bulk) throws ComponentException {
Detrazioni_familiariBulk detr = (Detrazioni_familiariBulk)bulk;
if (!isCancellabile(userContext,detr))
throw new it.cnr.jada.comp.ApplicationException("Attenzione, deve esistere almeno un periodo");
super.eliminaConBulk(userContext, detr);
}
private boolean isCancellabile(UserContext aUC,OggettoBulk bulk) throws ComponentException {
try {
int rc = -1;
boolean cancellabile = true;
Detrazioni_familiariBulk detr = (Detrazioni_familiariBulk)bulk;
Detrazioni_familiariHome detrHome = (Detrazioni_familiariHome)getHome(aUC,detr);
it.cnr.jada.persistency.sql.SQLBuilder sql = detrHome.createSQLBuilder();
sql.addSQLClause("AND","TI_PERSONA",sql.EQUALS,detr.getTi_persona());
sql.addSQLClause("AND","IM_INFERIORE",sql.EQUALS,detr.getIm_inferiore());
sql.addSQLClause("AND","NUMERO",sql.EQUALS,detr.getNumero());
rc = sql.executeCountQuery(getHomeCache(aUC).getConnection());
if (rc == 1)
cancellabile = false;
else{
if (!detr.getDt_fine_validita().equals(it.cnr.contab.config00.esercizio.bulk.EsercizioHome.DATA_INFINITO) && (detr.isToBeUpdated() || detr.isToBeDeleted()))
throw new it.cnr.jada.comp.ApplicationException("Attenzione, l'unico intervallo che è possibile cancellare/modificare è l'ultimo");
else{
sql.addSQLClause("AND","DT_FINE_VALIDITA",sql.EQUALS,it.cnr.contab.compensi00.docs.bulk.CompensoBulk.decrementaData(detr.getDt_inizio_validita()));
Detrazioni_lavoroBulk penultimoRimborso = (Detrazioni_lavoroBulk)detrHome.fetchAll(detrHome.createBroker(sql)).get(0);
penultimoRimborso.setDt_fine_validita(it.cnr.contab.config00.esercizio.bulk.EsercizioHome.DATA_INFINITO);
updateBulk(aUC, penultimoRimborso);
}
}
return cancellabile;
} catch (Throwable e){
throw handleException(e);
}
}
public void validaCreaConBulk(UserContext userContext,OggettoBulk bulk) throws ComponentException {
checkSQLConstraints(userContext,bulk,true,false);
super.validaCreaConBulk(userContext, bulk);
validaDetrazione(userContext, (Detrazioni_familiariBulk)bulk);
validaDate(userContext, (Detrazioni_familiariBulk)bulk);
}
/**
* Tutti i controlli del periodo di inizio/fine validita del nuovo Detrazioni superati.
* PreCondition:
* Nessuna condizione di errore rilevata.
* PostCondition:
* Viene consentito il salvataggio del nuovo Detrazioni
* Periodo di Inizio/Fine validita del nuovo Detrazioni non valido.
* PreCondition:
* Si è verificato un errore non salvo.
* PostCondition:
* Viene inviato il messaggio : "Attenzione sovrapposizione con intervalli di validità preesistenti"
**/
private void validaDate(UserContext userContext,Detrazioni_familiariBulk detraz) throws ComponentException{
try{
Detrazioni_familiariHome home = (Detrazioni_familiariHome)getHome(userContext,Detrazioni_familiariBulk.class);
if (!home.checkValidita(userContext,detraz))
throw new it.cnr.jada.comp.ApplicationException("Attenzione sovrapposizione con intervalli di validità preesistenti");
}catch(it.cnr.jada.persistency.PersistencyException ex){
throw handleException(ex);
}
}
/**
* Tutti i controlli del periodo di inizio/fine validita del nuovo Detrazioni superati.
* PreCondition:
* Nessuna condizione di errore rilevata.
* PostCondition:
* Viene consentito il salvataggio del nuovo Detrazioni
* Periodo di Inizio/Fine validita del nuovo Detrazioni non valido.
* PreCondition:
* Si è verificato un errore non salvo.
* PostCondition:
* Viene inviato il messaggio : "Attenzione sovrapposizione con intervalli di validità preesistenti"
**/
private void validaDetrazione(UserContext userContext,Detrazioni_familiariBulk detraz) throws ComponentException{
try{
if (detraz.getNumero()==null)
throw new it.cnr.jada.comp.ApplicationException("Il campo Numero non può essere vuoto");
if (detraz.getNumero()!=null && detraz.getNumero().intValue()==0)
throw new it.cnr.jada.comp.ApplicationException("Il campo Numero deve essere maggiore di zero");
detraz.validaImporti();
}catch(it.cnr.jada.bulk.ValidationException ex){
throw new it.cnr.jada.comp.ApplicationException(ex);
}
}
public void validaModificaConBulk(UserContext userContext,OggettoBulk bulk) throws ComponentException {
checkSQLConstraints(userContext,bulk,true,false);
super.validaModificaConBulk(userContext, bulk);
validaDetrazione(userContext, (Detrazioni_familiariBulk)bulk);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy