it.cnr.contab.anagraf00.comp.TerzoComponent 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.anagraf00.comp;
import it.cnr.contab.anagraf00.core.bulk.*;
import it.cnr.contab.anagraf00.tabrif.bulk.AbicabBulk;
import it.cnr.contab.anagraf00.tabrif.bulk.Rif_modalita_pagamentoBulk;
import it.cnr.contab.anagraf00.tabter.bulk.ComuneBulk;
import it.cnr.contab.anagraf00.tabter.bulk.NazioneBulk;
import it.cnr.contab.anagraf00.tabter.bulk.NazioneHome;
import it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk;
import it.cnr.contab.docamm00.docs.bulk.Documento_generico_rigaBulk;
import it.cnr.contab.missioni00.docs.bulk.AnticipoBulk;
import it.cnr.contab.util.RemoveAccent;
import it.cnr.jada.UserContext;
import it.cnr.jada.bulk.BulkList;
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.comp.ApplicationException;
import it.cnr.jada.comp.ComponentException;
import it.cnr.jada.comp.ICRUDMgr;
import it.cnr.jada.persistency.Broker;
import it.cnr.jada.persistency.sql.*;
import it.cnr.jada.util.RemoteIterator;
import java.sql.Timestamp;
import java.util.*;
/**
* Questa classe svolge le operazioni fondamentali di lettura, scrittura e filtro dei dati
* immessi o richiesti dall'utente. In oltre sovrintende alla gestione e creazione dati a cui
* l'utente stesso non ha libero accesso e/o non gli sono trasparenti.
*/
public class TerzoComponent extends UtilitaAnagraficaComponent implements ICRUDMgr, ITerzoMgr {
public TerzoComponent() {
}
public RemoteIterator cercaBanchePerTerzoCessionario(UserContext userContext, Modalita_pagamentoBulk modalita_pagamento) throws ComponentException, it.cnr.jada.persistency.PersistencyException {
SQLBuilder sql = getHome(userContext, BancaBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, modalita_pagamento.getTerzo_delegato().getCd_terzo());
sql.addSQLClause("AND", "TI_PAGAMENTO", SQLBuilder.EQUALS, modalita_pagamento.getRif_modalita_pagamento().getTi_pagamento());
sql.addSQLClause("AND", "FL_CANCELLATO", SQLBuilder.EQUALS, "N");
return iterator(userContext, sql, BancaBulk.class, null);
}
public RemoteIterator cercaModalita_pagamento_disponibiliByClause(UserContext userContext, TerzoBulk terzo) throws ComponentException, it.cnr.jada.persistency.PersistencyException {
try {
return iterator(
userContext,
selectModalita_pagamento_disponibiliByClause(userContext, terzo),
Rif_modalita_pagamentoBulk.class,
null);
} catch (it.cnr.jada.persistency.PersistencyException e) {
throw handleException(e);
}
}
public TerzoBulk cercaTerzoPerUnitaOrganizzativa(UserContext userContext, Unita_organizzativaBulk unita_organizzativa) throws ComponentException {
try {
SQLBuilder sql = getHome(userContext, TerzoBulk.class).createSQLBuilder();
sql.addClause("AND", "cd_unita_organizzativa", SQLBuilder.EQUALS, unita_organizzativa.getCd_unita_organizzativa());
sql.addSQLClause("AND", "(DT_CANC >= SYSDATE OR DT_CANC IS NULL)");
sql.addSQLClause("AND", "(DT_FINE_RAPPORTO >= SYSDATE OR DT_FINE_RAPPORTO IS NULL)");
it.cnr.jada.persistency.Broker broker = getHome(userContext, TerzoBulk.class).createBroker(sql);
if (!broker.next()) return null;
TerzoBulk terzo = (TerzoBulk) broker.fetch(TerzoBulk.class);
// eliminato controllo terzo unico per UO
//if (broker.next())
//throw new ApplicationException("Esistono più terzi associati a questa Unità Organizzativa");
return terzo;
} catch (it.cnr.jada.persistency.PersistencyException ex) {
throw new ComponentException(ex);
}
}
/**
* Viene sottomessa la richiesta di cancellazione dell'OggettoBulk passato in
* ingresso. Se viene rilevata una ReferentialIntegrityException si effettua
* l'assegnazione, in cascata, della data di fine rapporto, per l'elemento e i sui "figli".
*
* Nome: Eliminare un oggetto anagrafico;
* Pre: Effettuare l'eliminazione dell'oggetto anagrafico;
* Post: Se l'anagrafica ha ancora dei riferimenti anziche effettuare una cancellazione fisica si procede a impostare
* la data di fine rapporto per tutti gli elementi associati e l'anagrafica stessa.
*
* @param bulk OggettoBulk da eliminare.
*/
public void eliminaConBulk(UserContext userContext, OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException {
try {
try {
TerzoBulk terzo = (TerzoBulk) bulk;
terzo.setCrudStatus(OggettoBulk.TO_BE_UPDATED);
terzo.setDt_fine_rapporto(getHome(userContext, terzo).getServerDate());
makeBulkPersistent(userContext, bulk);
} catch (Throwable e) {
throw handleException(bulk, e);
}
//makeBulkPersistent(userContext,bulk);
//} catch (it.cnr.jada.persistency.sql.ReferentialIntegrityException rie) {
/* Angelo 03/01/05 Se ci sono dei dettagli non imposto la data di fine
try {
TerzoBulk terzo = (TerzoBulk)bulk;
terzo.setCrudStatus(bulk.TO_BE_UPDATED);
terzo.setDt_fine_rapporto(getHome(userContext,terzo).getServerDate());
makeBulkPersistent(userContext,bulk);
} catch(Throwable e) {
throw handleException(bulk,rie);
}*/
//throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (Throwable e) {
throw handleException(bulk, e);
}
}
public AnagraficoBulk getAnagEnte(UserContext userContext) throws it.cnr.jada.comp.ComponentException {
try {
it.cnr.contab.config00.ejb.Configurazione_cnrComponentSession configurazione = (it.cnr.contab.config00.ejb.Configurazione_cnrComponentSession) it.cnr.jada.util.ejb.EJBCommonServices.createEJB("CNRCONFIG00_EJB_Configurazione_cnrComponentSession", it.cnr.contab.config00.ejb.Configurazione_cnrComponentSession.class);
AnagraficoBulk ente = (AnagraficoBulk) getHome(userContext, AnagraficoBulk.class).findByPrimaryKey(
new AnagraficoBulk(
new Integer(
configurazione.getIm01(userContext, new Integer(0), null, "COSTANTI", "CODICE_ANAG_ENTE").toString()
)
)
);
return ente;
} catch (Throwable e) {
throw handleException(e);
}
}
public OggettoBulk inizializzaBulkPerInserimento(UserContext userContext, OggettoBulk bulk) throws ComponentException {
try {
TerzoBulk terzo = (TerzoBulk) super.inizializzaBulkPerInserimento(userContext, bulk);
TerzoHome home = (TerzoHome) getHome(userContext, terzo);
terzo.setFlSbloccoFatturaElettronica(false);
terzo.setRif_termini_pagamento_disponibili(new BulkList(home.findRif_termini_pagamento_disponibili(terzo)));
terzo.setTi_terzo(TerzoBulk.ENTRAMBI);
return terzo;
} catch (Throwable e) {
throw handleException(e);
}
}
public OggettoBulk inizializzaBulkPerModifica(UserContext userContext, OggettoBulk bulk) throws ComponentException {
try {
TerzoBulk terzo = (TerzoBulk) super.inizializzaBulkPerModifica(userContext, bulk);
if (terzo.getCd_unita_organizzativa() != null) {
terzo.setUnita_organizzativa((it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk) getHome(userContext, it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk.class).findByPrimaryKey(new it.cnr.contab.config00.sto.bulk.Unita_organizzativaKey(terzo.getCd_unita_organizzativa())));
if (terzo.getUnita_organizzativa() == null) {
terzo.setUnita_organizzativa(new it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk());
terzo.getUnita_organizzativa().setCd_unita_organizzativa(terzo.getCd_unita_organizzativa());
terzo.getUnita_organizzativa().setCrudStatus(OggettoBulk.NORMAL);
}
}
TerzoHome home = (TerzoHome) getHome(userContext, terzo);
AnagraficoHome anagraficoHome = (AnagraficoHome) getHome(userContext, terzo.getAnagrafico());
terzo.setContatti(new BulkList(home.findContatti(terzo)));
terzo.setBanche(new BulkList(home.findBanca(terzo)));
terzo.setTelefoni(new BulkList(home.findTelefoni(terzo, TelefonoBulk.TEL)));
terzo.setEmail(new BulkList(home.findTelefoni(terzo, TelefonoBulk.EMAIL)));
terzo.setPec(new BulkList(home.findTelefoni(terzo, TelefonoBulk.PEC)));
terzo.setFax(new BulkList(home.findTelefoni(terzo, TelefonoBulk.FAX)));
terzo.setTermini_pagamento(new BulkList(home.findTermini_pagamento(terzo)));
terzo.setModalita_pagamento(new BulkList(home.findModalita_pagamento(terzo)));
initializeKeysAndOptionsInto(userContext, terzo);
for (Iterator i = terzo.getBanche().iterator(); i.hasNext(); )
initializeKeysAndOptionsInto(userContext, (OggettoBulk) i.next());
terzo.setRif_termini_pagamento_disponibili(new BulkList(home.findRif_termini_pagamento_disponibili(terzo)));
terzo.setTerzo_speciale(isTerzoSpeciale(userContext, terzo));
// terzo non modificabile(Telecom) sfruttato lo stesso flag dei terzi che rappresentano le UO
if (terzo.getAnagrafico() != null && terzo.getAnagrafico().isSpeciale())
terzo.setTerzo_speciale(true);
terzo.setDipendente(anagraficoHome.findRapportoDipendenteFor(terzo.getAnagrafico()));
getHomeCache(userContext).fetchAll(userContext);
return terzo;
} catch (Exception e) {
throw handleException(e);
}
}
public TerzoBulk inizializzaTerzoPerUnitaOrganizzativa(UserContext userContext, Unita_organizzativaBulk unita_organizzativa) throws ComponentException {
TerzoBulk terzo = new TerzoBulk();
terzo.setUnita_organizzativa(unita_organizzativa);
terzo.setAnagrafico(getAnagEnte(userContext));
terzo.setDenominazione_sede(unita_organizzativa.getDs_unita_organizzativa());
terzo.setFlSbloccoFatturaElettronica(false);
// Imposto il Tipo del Terzo come ENTRAMBI, di default
// Questo mi permette, nel caso di una UO che non ha Terzi, di visualizzare i raidoButton relativi al terzo
terzo.setTi_terzo(TerzoBulk.ENTRAMBI);
return terzo;
}
public Query select(UserContext userContext, CompoundFindClause clauses, OggettoBulk bulk) throws ComponentException, it.cnr.jada.persistency.PersistencyException {
TerzoBulk terzo = (TerzoBulk) bulk;
SQLBuilder sql = getHome(userContext, terzo, "V_TERZO_CF_PI").createSQLBuilder();
sql.addClause(bulk.buildFindClauses(true));
//SQLBuilder sql = (SQLBuilder)super.select(userContext,clauses,bulk);
if (terzo.getCd_anag() == null) {
sql.addTableToHeader("ANAGRAFICO");
sql.addSQLJoin("V_TERZO_CF_PI.CD_ANAG", "ANAGRAFICO.CD_ANAG");
sql.addSQLClause("AND", "ANAGRAFICO.TI_ENTITA", SQLBuilder.NOT_EQUALS, AnagraficoBulk.STRUT_CNR);
sql.addClause(clauses);
} else {
sql.addClause("AND", "cd_anag", SQLBuilder.EQUALS, terzo.getCd_anag());
sql.addClause(clauses);
}
return sql;
}
public SQLBuilder selectAbi_cabByClause(UserContext userContext, BancaBulk banca, AbicabBulk abiCab, CompoundFindClause clauses) throws ComponentException, it.cnr.jada.persistency.PersistencyException {
SQLBuilder sql = getHome(userContext, AbicabBulk.class).createSQLBuilder();
//TODO da sostituire
if (Optional.ofNullable(banca)
.flatMap(bancaBulk -> Optional.ofNullable(banca.getTipo_pagamento_siope()))
.filter(s -> s.equals(Rif_modalita_pagamentoBulk.TipoPagamentoSiopePlus.ACCREDITOTESORERIAPROVINCIALESTATOPERTABB.value()))
.isPresent())
sql.addClause(FindClause.AND, "abi", SQLBuilder.EQUALS, "01000");
sql.addClause(clauses);
return sql;
}
public SQLBuilder selectComune_fiscaleByClause(UserContext userContext,
AnagraficoBulk anag,
ComuneBulk comune,
CompoundFindClause clause)
throws ComponentException, it.cnr.jada.persistency.PersistencyException {
if (clause == null) clause = comune.buildFindClauses(null);
SQLBuilder sql = getHome(userContext, comune).createSQLBuilder();
if (clause != null) sql.addClause(clause);
if (NazioneBulk.EXTRA_CEE.equals(anag.getTi_italiano_estero()))
sql.addSQLClause("AND", "TI_ITALIANO_ESTERO", SQLBuilder.NOT_EQUALS, NazioneBulk.ITALIA);
sql.openParenthesis("AND");
sql.addSQLClause("AND", "DT_CANC", SQLBuilder.ISNULL, null);
sql.addSQLClause("OR", "DT_CANC", SQLBuilder.GREATER, it.cnr.jada.util.ejb.EJBCommonServices.getServerDate());
sql.closeParenthesis();
return sql;
}
public SQLBuilder selectModalita_pagamento_disponibiliByClause(UserContext userContext, TerzoBulk terzo) throws ComponentException, it.cnr.jada.persistency.PersistencyException {
SQLBuilder sql = getHome(userContext, Rif_modalita_pagamentoBulk.class).createSQLBuilder();
if (terzo.getAnagrafico() != null && terzo.getAnagrafico().isStrutturaCNR())
sql.addSQLClause("AND", "FL_PER_CESSIONE", SQLBuilder.EQUALS, "N");
sql.addSQLClause("AND", "FL_CANCELLATO", SQLBuilder.EQUALS, "N");
//SQLBuilder sql2 = getHome(userContext,Modalita_pagamentoBulk.class).createSQLBuilder();
//sql2.addClause("AND","cd_terzo",sql.EQUALS,terzo.getCd_terzo());
//sql2.addSQLJoin("MODALITA_PAGAMENTO.CD_MODALITA_PAG","RIF_MODALITA_PAGAMENTO.CD_MODALITA_PAG");
//sql.addSQLNotExistsClause("AND",sql2);
return sql;
}
public SQLBuilder selectTerzo_delegatoByClause(UserContext userContext, Modalita_pagamentoBulk mod_pagamento, TerzoBulk terzo, CompoundFindClause clauses) throws ComponentException, it.cnr.jada.persistency.PersistencyException {
SQLBuilder sql = getHome(userContext, TerzoBulk.class, "V_TERZO_CF_PI").createSQLBuilder();
sql.addClause(clauses);
if (mod_pagamento != null && mod_pagamento.getTerzo() != null)
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.NOT_EQUALS, mod_pagamento.getTerzo().getCd_terzo());
return sql;
}
/**
* Imposta il comune della sede di un terzo.
*
* Nome: Gestione comune sede;
* Pre: Ricerca del comune e acricamenti dei cap relativi;
* Post: Viene assegnato il comune e lanciato l'aggornamento dell'elenco dei cap associati.
*
* @param anagrafico AnagraficoBulk a cui abbartiene il terzo.
* @param terzo TerzoBulk su cui va impostato il comunedella sede.
* @param comune il ComuneBulk del comune da impostare.
* @return AnagraficoBulk AnagraficoBulk completo.
*/
public TerzoBulk setComune_sede(UserContext userContext, TerzoBulk terzo, it.cnr.contab.anagraf00.tabter.bulk.ComuneBulk comune) throws it.cnr.jada.comp.ComponentException {
terzo.setComune_sede(comune);
terzo.setCaps_comune(null);
super.initializeKeysAndOptionsInto(userContext, terzo);
if (comune != null)
terzo.setCap_comune_sede(comune.getCd_cap());
else
terzo.setCap_comune_sede(null);
return terzo;
}
/**
* Insert the method's description here.
* Creation date: (11/11/2002 14.12.02)
*
* @param param it.cnr.contab.anagraf00.core.bulk.TerzoBulk
*/
private void validaCreaModificaBanche(TerzoBulk terzo) throws ComponentException {
try {
BulkList banche = terzo.getBanche();
boolean isCcd = false;
boolean isBancaItalia = false;
if (banche != null) {
for (java.util.Iterator i = banche.iterator(); i.hasNext(); ) {
BancaBulk banca = (BancaBulk) i.next();
boolean deleted = banca.getFl_cancellato() != null && banca.getFl_cancellato().booleanValue();
if (!deleted) {
if (banca.getFl_cc_cds() != null && banca.getFl_cc_cds().booleanValue() && isCcd) {
throw new ApplicationException("Attenzione: è possibile definire solamente una Banca come CCD.\nControllare le Banche indicate per le Modalità di Pagamento di tipo Bancario, (B).");
} else if (banca.getFl_cc_cds().booleanValue()) {
isCcd = true;
}
if (banca.getTi_pagamento() != null && banca.getTi_pagamento().equals(Rif_modalita_pagamentoBulk.BANCA_ITALIA)) {
if (isBancaItalia) {
throw new ApplicationException("Attenzione: è possibile definire solamente una Banca come Banca d'Italia.\nControllare le Banche indicate per le Modalità di Pagamento di tipo (I).");
} else {
isBancaItalia = true;
}
}
// Rich. 695: Borriello Gennaro - 15.01.2004
// Per le banche che NON sono da ORIGINE STIPENDI
/* Se TI_PAGAMENTO è di tipo 'B':
* - che il campo CIN sia stato valorizzato;
* - il numero di conto corrente DEVE essere al massimo di 12 caratteri:
* se l'utente inserisce un numero di lunghezza maggiore viene visualizzato
* un messaggio di errore. Se la lunghezza è minore, vengono aggiunti tanti
* zeri quanti ne servono per arrivare a 12 carat.
*/
if (!banca.isOrigineStipendi() && banca.getTi_pagamento() != null && banca.getTi_pagamento().equals(Rif_modalita_pagamentoBulk.BANCARIO) && !banca.getFl_cancellato()) {
if (banca.getNazione_iban() != null && banca.getNazione_iban().getCd_iso().equals("IT")) {
// Controllo su campo CIN
if (banca.getCin() == null || banca.getCin().trim().equals("")) {
throw new ApplicationException("Attenzione: il campo CIN è obbligatorio per i Tipi Pagamento B.");
}
if (!Character.isLetterOrDigit(banca.getCin().charAt(0))) {
throw new ApplicationException("Attenzione: il campo CIN non è valido.");
}
// Controllo su num. C/C
String cc = banca.getNumero_conto().trim();
if (cc.length() > 12) {
throw new ApplicationException("Attenzione: il numero di conto corrente può essere al massimo di 12 caratteri per i Tipi Pagamento B.");
}
if (cc.length() < 12) {
StringBuffer buf = new StringBuffer("000000000000");
buf.replace(buf.length() - cc.length(), buf.length(), cc);
cc = buf.toString();
}
banca.setNumero_conto(cc);
}
}
}
}
}
} catch (Throwable t) {
throw handleException(terzo, t);
}
}
protected void validaCreaModificaConBulk(UserContext userContext, OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException {
try {
super.validaCreaModificaConBulk(userContext, bulk);
TerzoBulk terzo = (TerzoBulk) bulk;
// Controllo che il terzo non sia un terzo speciale
if (terzo.getCd_terzo() != null && isTerzoSpeciale(userContext, terzo))
throw new ApplicationException("Terzo non modificabile (terzo speciale)");
// se anagrafica di tipo Struttura CNR aggiorno nome_unita_organizzativa
if (terzo.getUnita_organizzativa() != null &&
terzo.getAnagrafico().isStrutturaCNR())
terzo.setNome_unita_organizzativa(terzo.getUnita_organizzativa().getDs_unita_organizzativa());
// verifica valorizzazione Comune Sede
if (terzo.getComune_sede() == null)
throw new it.cnr.jada.comp.ApplicationException("Comune sede è obbligatorio");
// verifica che esistano Banche associate al tipo di modalità di pagamento delle modalità di pagamento */
for (java.util.Iterator i = terzo.getModalita_pagamento().iterator(); i.hasNext(); ) {
Modalita_pagamentoBulk modalita_pagamento = (Modalita_pagamentoBulk) i.next();
if (terzo.getBanche(modalita_pagamento).isEmpty()) {
modalita_pagamento.setToBeDeleted();
i.remove();
}
}
java.sql.Timestamp dt_odierna = getHome(userContext, terzo).getServerDate();
TerzoBulk terzo_bck = (TerzoBulk) getHome(userContext, terzo).findByPrimaryKey(terzo);
if (terzo_bck != null) {
if (terzo.getDt_fine_rapporto() == null) {
if (terzo_bck.getDt_fine_rapporto() != null)
throw new ApplicationException("Non è possibile togliere la data di fine rapporto di un terzo.");
} else if (!terzo.getDt_fine_rapporto().equals(terzo_bck.getDt_fine_rapporto())) {
if (terzo.getDt_fine_rapporto().before(dt_odierna))
throw new ApplicationException("La data di fine rapporto del terzo non può essere anteriore alla data odierna");
AnagraficoBulk anagrafico_bck = (AnagraficoBulk) getHome(userContext, terzo.getAnagrafico()).findByPrimaryKey(terzo.getAnagrafico());
if (anagrafico_bck.getDt_fine_rapporto() != null && anagrafico_bck.getDt_fine_rapporto().before(terzo.getDt_fine_rapporto()))
throw new ApplicationException("La data di fine rapporto del terzo non può essere posteriore alla data di fine rapporto dell'anagrafico");
}
}
if (terzo.getCrudStatus() == OggettoBulk.TO_BE_CREATED) {
// Controlla che la UO specificata non sia già utilizzata
if (terzo.getAnagrafico() != null && terzo.getAnagrafico().isStrutturaCNR())
validaUnitaOrganizzativa(userContext, terzo);
}
/* Se l'utente non ha specificato una data di fine rapporto,
eredita quella eventuale dell'Anagrafica
*/
if (terzo.getDt_fine_rapporto() == null
&& terzo.getAnagrafico() != null
&& terzo.getAnagrafico().getDt_fine_rapporto() != null) {
terzo.setDt_fine_rapporto(terzo.getAnagrafico().getDt_fine_rapporto());
}
validaCreaModificaBanche(terzo);
if (terzo.getAnagrafico().getDataAvvioFattElettr() == null) {
if (terzo.getCodiceDestinatarioFatt() != null) {
throw new ApplicationException("Dato che in anagrafico non è avviata la fatturazione elettronica non è possibile indicare il codice destinatario fattura");
}
if (terzo.esistePecFatturazioneElettronica()) {
throw new ApplicationException("Dato che in anagrafico non è avviata la fatturazione elettronica non è possibile indicare la pec per la fatturazione elettronica");
}
if (terzo.getEmailFatturazioneElettronica() != null) {
throw new ApplicationException("Dato che in anagrafico non è avviata la fatturazione elettronica non è possibile indicare la e-mail per la fatturazione elettronica");
}
}
if (terzo.inseriteDiverseMailFatturazioneElettronica()) {
throw new ApplicationException("Non è possibile indicare più e-mail per la fatturazione elettronica");
}
if (terzo.inseriteDiversePecFatturazioneElettronica()) {
throw new ApplicationException("Non è possibile indicare più PEC per la fatturazione elettronica");
}
if (terzo.getCodiceUnivocoUfficioIpa() != null){
if (!terzo.getCodiceUnivocoUfficioIpa().equals(terzo.getCodiceUnivocoUfficioIpa().toUpperCase())){
throw new ApplicationException("Il codice IPA deve essere inserito con caratteri in maiuscolo");
}
if (!terzo.getCodiceUnivocoUfficioIpa().equals(terzo.getCodiceUnivocoUfficioIpa().replaceAll("\\s+",""))){
throw new ApplicationException("Il codice IPA deve essere senza spazi");
}
}
if (terzo.getCodiceDestinatarioFatt() != null){
if (terzo.getCodiceDestinatarioFatt().length() != 7){
throw new ApplicationException("Il codice destinatario deve essere di 7 caratteri");
}
if (!terzo.getCodiceDestinatarioFatt().equals(terzo.getCodiceDestinatarioFatt().toUpperCase())){
throw new ApplicationException("Il codice destinatario deve essere inserito con caratteri in maiuscolo");
}
if (!terzo.getCodiceDestinatarioFatt().equals(terzo.getCodiceDestinatarioFatt().replaceAll("\\s+",""))){
throw new ApplicationException("Il codice destinatario deve essere senza spazi");
}
}
} catch (Throwable e) {
throw handleException(e);
}
}
public Date getSystemDate() {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
Date data = cal.getTime();
return data;
}
public void validaModificaConBulk(UserContext userContext, OggettoBulk bulk) throws it.cnr.jada.comp.ComponentException {
try {
boolean hasAccesso = ((it.cnr.contab.utente00.nav.ejb.GestioneLoginComponentSession) it.cnr.jada.util.ejb.EJBCommonServices.createEJB("CNRUTENZE00_NAV_EJB_GestioneLoginComponentSession")).controllaAccesso(userContext, TerzoBulk.ACCESSO_PER_CANCELLAZIONE_BANCA);
TerzoBulk terzo = (TerzoBulk) bulk;
for (java.util.Iterator it = terzo.getBanche().deleteIterator(); it.hasNext(); ) {
BancaBulk banca = (BancaBulk) it.next();
try {
makeBulkPersistent(userContext, banca);
} catch (ReferentialIntegrityException ex) {
if (hasAccesso || banca.getCd_terzo_delegato() != null) {
banca.setFl_cancellato(new Boolean(true));
banca.setCrudStatus(OggettoBulk.TO_BE_UPDATED);
// (19/06/2002 14:49:07) CNRADM
//v.add(banca);
} else
throw new ApplicationException("Attenzione: non è possibile cancellare fisicamente le banche selezionate.\nL'Utente non ha l'autorizzazione per la cancellazione logica.");
}
}
// Controlla che la UO specificata non sia già utilizzata
//validaUnitaOrganizzativa(userContext, terzo);
super.validaModificaConBulk(userContext, bulk);
} catch (java.rmi.RemoteException re) {
throw handleException(re);
} catch (javax.ejb.EJBException ejbe) {
throw handleException(ejbe);
} catch (it.cnr.jada.persistency.PersistencyException e) {
throw handleException(e);
}
}
/**
* Controlla che l'Unità Organizzativa indicata per il Terzo non sia già stata utilizzata:
* infatti, non è possibile associare una UO a più terzi.
*
* Creation date: (22/08/2002 12.10.44)
* Author: Gennaro Borriello
*
* @param userContext lo UserContext che ha generato la richiesta
* @param terzo il TerzoBulk da controllare
*/
private void validaUnitaOrganizzativa(UserContext userContext, TerzoBulk terzo) throws it.cnr.jada.comp.ComponentException {
try {
if (terzo.getCd_unita_organizzativa() == null)
throw new ApplicationException("Attenzione: Unità Organizzativa non specificata");
SQLBuilder sql = getHome(userContext, TerzoBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_UNITA_ORGANIZZATIVA", SQLBuilder.EQUALS, terzo.getCd_unita_organizzativa());
//if (sql.executeExistsQuery(getConnection(userContext)))
//throw new ApplicationException("Attenzione: l'Unità Organizzativa selezionata è già stata utilizzata.");
} catch (Throwable e) {
throw handleException(e);
}
}
public void verificaIntegritaBanche(UserContext userContext, TerzoBulk terzo) throws it.cnr.jada.comp.ComponentException {
try {
boolean hasAccesso = ((it.cnr.contab.utente00.nav.ejb.GestioneLoginComponentSession) it.cnr.jada.util.ejb.EJBCommonServices.createEJB("CNRUTENZE00_NAV_EJB_GestioneLoginComponentSession")).controllaAccesso(userContext, "CFGANAGCFCOREDELBANM");
for (java.util.Iterator it = terzo.getBanche().deleteIterator(); it.hasNext(); ) {
BancaBulk banca = (BancaBulk) it.next();
/* Se la Banca ha ORIGINE = 'S', (è stata creata dalla migrazioen per un dipendente)
viene lanciata una eccezione di tipo ReferentialIntegrityException.
*/
//if (banca.getOrigine().equals(BancaBulk.ORIGINE_STIPENDI))
//throw new ReferentialIntegrityException();
try {
deleteBulk(userContext, banca);
} catch (ReferentialIntegrityException ex) {
if (hasAccesso) {
banca.setFl_cancellato(new Boolean(true));
banca.setCrudStatus(OggettoBulk.TO_BE_UPDATED);
// (19/06/2002 14:49:07) CNRADM
//v.add(banca);
} else
throw new ApplicationException("Attenzione: l'Utente non ha l'autorizzazione a compiere questa operazione");
}
}
} catch (java.rmi.RemoteException re) {
throw handleException(re);
} catch (javax.ejb.EJBException ejbe) {
throw handleException(ejbe);
} catch (it.cnr.jada.persistency.PersistencyException e) {
throw handleException(e);
}
}
/*Angelo 03/01/2005*/
public OggettoBulk modificaConBulk(UserContext aUC, OggettoBulk bulk)
throws ComponentException {
TerzoBulk terBulk = (TerzoBulk) bulk;
/* ***************************************************** *
* ***************************************************** *
* ** Se la data di fine rapporto è stata valorizzata ** *
* ** controllo i dettagli del Terzo ** *
* ***************************************************** *
* ***************************************************** */
Timestamp today = it.cnr.jada.util.ejb.EJBCommonServices.getServerDate();
if (terBulk.getDt_fine_rapporto() != null && !terBulk.getDt_fine_rapporto().after(today)) {
/*Accertamento*/
SQLBuilder sql = getHome(aUC, it.cnr.contab.doccont00.core.bulk.AccertamentoBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Anticipo*/
sql = getHome(aUC, AnticipoBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Banca*/
sql = getHome(aUC, BancaBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Compenso*/
sql = getHome(aUC, it.cnr.contab.compensi00.docs.bulk.CompensoBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Conguaglio*/
sql = getHome(aUC, it.cnr.contab.compensi00.docs.bulk.ConguaglioBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Documento_Generico_Riga*/
sql = getHome(aUC, Documento_generico_rigaBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Fattura_Attiva*/
sql = getHome(aUC, it.cnr.contab.docamm00.docs.bulk.Fattura_attivaBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Fattura_Passiva*/
sql = getHome(aUC, it.cnr.contab.docamm00.docs.bulk.Fattura_passivaBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Fondo_Assegnatario*/
sql = getHome(aUC, it.cnr.contab.fondiric00.core.bulk.Fondo_assegnatarioBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_RESPONSABILE_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Fondo_Attivita_Vincolata*/
sql = getHome(aUC, it.cnr.contab.fondiric00.core.bulk.Fondo_attivita_vincolataBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_RESPONSABILE_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Fondo_Economale*/
sql = getHome(aUC, it.cnr.contab.fondecon00.core.bulk.Fondo_economaleBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Fondo_Spesa*/
sql = getHome(aUC, it.cnr.contab.fondecon00.core.bulk.Fondo_spesaBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Inventario_Beni*/
sql = getHome(aUC, it.cnr.contab.inventario00.docs.bulk.Inventario_beniBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_ASSEGNATARIO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Inventario_Consegnatario*/
sql = getHome(aUC, it.cnr.contab.inventario00.tabrif.bulk.Inventario_consegnatarioBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_CONSEGNATARIO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
sql.addSQLClause("OR", "CD_DELEGATO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Linea_Attivita*/
sql = getHome(aUC, it.cnr.contab.config00.latt.bulk.WorkpackageBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_RESPONSABILE_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Mandato_Riga*/
sql = getHome(aUC, it.cnr.contab.doccont00.core.bulk.Mandato_rigaBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Mandato_Terzo*/
sql = getHome(aUC, it.cnr.contab.doccont00.core.bulk.Mandato_terzoBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Minicarriera*/
sql = getHome(aUC, it.cnr.contab.compensi00.docs.bulk.MinicarrieraBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Missione*/
sql = getHome(aUC, it.cnr.contab.missioni00.docs.bulk.MissioneBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Modalita_Pagamento*/
sql = getHome(aUC, Modalita_pagamentoBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Obbligazione*/
sql = getHome(aUC, it.cnr.contab.doccont00.core.bulk.ObbligazioneBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Progetto*/
sql = getHome(aUC, it.cnr.contab.progettiric00.core.bulk.ProgettoBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_RESPONSABILE_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Progetto_Finanziatore*/
sql = getHome(aUC, it.cnr.contab.progettiric00.core.bulk.Progetto_finanziatoreBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_FINANZIATORE_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Progetto_Partner_Esterno*/
sql = getHome(aUC, it.cnr.contab.progettiric00.core.bulk.Progetto_partner_esternoBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_PARTNER_ESTERNO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Reversale_Riga*/
sql = getHome(aUC, it.cnr.contab.doccont00.core.bulk.Reversale_rigaBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Reversale_Terzo*/
sql = getHome(aUC, it.cnr.contab.doccont00.core.bulk.Reversale_terzoBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Tabella Rimborso*/
sql = getHome(aUC, it.cnr.contab.missioni00.docs.bulk.RimborsoBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Termini_Pagamento*/
sql = getHome(aUC, Termini_pagamentoBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
sql = null;
/*Unita_Organizzativa*/
sql = getHome(aUC, Unita_organizzativaBulk.class).createSQLBuilder();
sql.addSQLClause("AND", "CD_RESPONSABILE", SQLBuilder.EQUALS, terBulk.getCd_terzo());
sql.addSQLClause("OR", "CD_RESPONSABILE_AMM", SQLBuilder.EQUALS, terBulk.getCd_terzo());
try {
if (sql.executeCountQuery(getConnection(aUC)) > 0)
throw new ApplicationException("Impossibile cancellare l'anagrafica perchè risulta utilizzata nei documenti contabili o amministrativi.");
} catch (java.sql.SQLException e) {
throw handleSQLException(e);
}
}
super.modificaConBulk(aUC, bulk);
return bulk;
}
public java.util.List findListaTerziSIP(UserContext userContext, String query, String dominio, String tipoterzo, String tipoRicerca) throws ComponentException {
try {
V_terzo_anagrafico_sipHome home = (V_terzo_anagrafico_sipHome) getHome(userContext, V_terzo_anagrafico_sipBulk.class);
SQLBuilder sql = home.createSQLBuilder();
if (dominio.equalsIgnoreCase("cd_terzo"))
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, query);
else if (dominio.equalsIgnoreCase("denominazione")) {
if (tipoterzo.equalsIgnoreCase("fisica")) {
sql.openParenthesis("AND");
sql.addSQLClause("AND", "TI_ENTITA", SQLBuilder.EQUALS, AnagraficoBulk.FISICA);
sql.addSQLClause("OR", "TI_ENTITA", SQLBuilder.EQUALS, AnagraficoBulk.DIVERSI);
sql.closeParenthesis();
sql.openParenthesis("AND");
for (StringTokenizer stringtokenizer = new StringTokenizer(query, " "); stringtokenizer.hasMoreElements(); ) {
String queryDetail = stringtokenizer.nextToken();
if (tipoRicerca == null || tipoRicerca.equalsIgnoreCase("selettiva")) {
if (queryDetail.equalsIgnoreCase(RemoveAccent.convert(queryDetail)))
sql.addSQLClause("AND", "COGNOME", SQLBuilder.CONTAINS, queryDetail);
else {
sql.openParenthesis("AND");
sql.addSQLClause("OR", "COGNOME", SQLBuilder.CONTAINS, queryDetail);
sql.addSQLClause("OR", "COGNOME", 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(COGNOME)", SQLBuilder.EQUALS, queryDetail.toUpperCase());
sql.addSQLClause("OR", "COGNOME", SQLBuilder.STARTSWITH, queryDetail + " ");
sql.addSQLClause("OR", "COGNOME", SQLBuilder.ENDSWITH, " " + queryDetail);
sql.closeParenthesis();
} else {
sql.openParenthesis("AND");
sql.openParenthesis("AND");
sql.addSQLClause("OR", "UPPER(COGNOME)", SQLBuilder.EQUALS, queryDetail.toUpperCase());
sql.addSQLClause("OR", "UPPER(COGNOME)", SQLBuilder.EQUALS, RemoveAccent.convert(queryDetail).toUpperCase());
sql.closeParenthesis();
sql.openParenthesis("OR");
sql.addSQLClause("OR", "COGNOME", SQLBuilder.STARTSWITH, queryDetail + " ");
sql.addSQLClause("OR", "COGNOME", SQLBuilder.STARTSWITH, RemoveAccent.convert(queryDetail) + " ");
sql.closeParenthesis();
sql.openParenthesis("OR");
sql.addSQLClause("OR", "COGNOME", SQLBuilder.ENDSWITH, " " + queryDetail);
sql.addSQLClause("OR", "COGNOME", SQLBuilder.ENDSWITH, " " + RemoveAccent.convert(queryDetail));
sql.closeParenthesis();
sql.closeParenthesis();
}
}
}
sql.closeParenthesis();
sql.addOrderBy("UPPER(COGNOME)");
sql.addOrderBy("UPPER(NOME)");
} else if (tipoterzo.equalsIgnoreCase("giuridica")) {
sql.openParenthesis("AND");
sql.addSQLClause("AND", "TI_ENTITA", SQLBuilder.EQUALS, AnagraficoBulk.GIURIDICA);
sql.addSQLClause("OR", "TI_ENTITA", SQLBuilder.EQUALS, AnagraficoBulk.DIVERSI);
sql.addSQLClause("OR", "TI_ENTITA", SQLBuilder.EQUALS, AnagraficoBulk.STRUT_CNR);
sql.closeParenthesis();
sql.openParenthesis("AND");
for (StringTokenizer stringtokenizer = new StringTokenizer(query, " "); stringtokenizer.hasMoreElements(); ) {
String queryDetail = stringtokenizer.nextToken();
if (tipoRicerca == null || tipoRicerca.equalsIgnoreCase("selettiva")) {
if (queryDetail.equalsIgnoreCase(RemoveAccent.convert(queryDetail)))
sql.addSQLClause("AND", "DENOMINAZIONE_SEDE", SQLBuilder.CONTAINS, queryDetail);
else {
sql.openParenthesis("AND");
sql.addSQLClause("OR", "DENOMINAZIONE_SEDE", SQLBuilder.CONTAINS, queryDetail);
sql.addSQLClause("OR", "DENOMINAZIONE_SEDE", 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(DENOMINAZIONE_SEDE)", SQLBuilder.EQUALS, queryDetail.toUpperCase());
sql.addSQLClause("OR", "DENOMINAZIONE_SEDE", SQLBuilder.STARTSWITH, queryDetail + " ");
sql.addSQLClause("OR", "DENOMINAZIONE_SEDE", SQLBuilder.ENDSWITH, " " + queryDetail);
sql.closeParenthesis();
} else {
sql.openParenthesis("AND");
sql.openParenthesis("AND");
sql.addSQLClause("OR", "UPPER(DENOMINAZIONE_SEDE)", SQLBuilder.EQUALS, queryDetail.toUpperCase());
sql.addSQLClause("OR", "UPPER(DENOMINAZIONE_SEDE)", SQLBuilder.EQUALS, RemoveAccent.convert(queryDetail).toUpperCase());
sql.closeParenthesis();
sql.openParenthesis("OR");
sql.addSQLClause("OR", "DENOMINAZIONE_SEDE", SQLBuilder.STARTSWITH, queryDetail + " ");
sql.addSQLClause("OR", "DENOMINAZIONE_SEDE", SQLBuilder.STARTSWITH, RemoveAccent.convert(queryDetail) + " ");
sql.closeParenthesis();
sql.openParenthesis("OR");
sql.addSQLClause("OR", "DENOMINAZIONE_SEDE", SQLBuilder.ENDSWITH, " " + queryDetail);
sql.addSQLClause("OR", "DENOMINAZIONE_SEDE", SQLBuilder.ENDSWITH, " " + RemoveAccent.convert(queryDetail));
sql.closeParenthesis();
sql.closeParenthesis();
}
}
}
sql.closeParenthesis();
sql.addOrderBy("UPPER(DENOMINAZIONE_SEDE)");
}
}
return home.fetchAll(sql);
} catch (it.cnr.jada.persistency.PersistencyException ex) {
throw handleException(ex);
}
}
public java.util.List findListaTerziSIP_rendicontazione(UserContext userContext, String query, String dominio, String tipoterzo, String tipoRicerca, Timestamp data_inizio, Timestamp data_fine, String Dip) throws ComponentException {
try {
V_terzo_sipHome home = (V_terzo_sipHome) getHome(userContext, V_terzo_sipBulk.class);
SQLBuilder sql = home.createSQLBuilder();
if (data_inizio != null && data_fine != null) {
GregorianCalendar data_da = (GregorianCalendar) GregorianCalendar.getInstance();
data_da.setTime(data_inizio);
GregorianCalendar data_a = (GregorianCalendar) GregorianCalendar.getInstance();
data_a.setTime(data_fine);
int month1 = data_da.get(java.util.GregorianCalendar.MONTH) + 1;
int year1 = data_da.get(java.util.GregorianCalendar.YEAR);
int month2 = data_a.get(java.util.GregorianCalendar.MONTH) + 1;
int year2 = data_a.get(java.util.GregorianCalendar.YEAR);
sql.openParenthesis("AND");
sql.addSQLClause("AND", "DATA_CESSAZIONE", SQLBuilder.ISNULL, null);
sql.addSQLClause("OR", "DATA_CESSAZIONE", SQLBuilder.GREATER_EQUALS, data_inizio);
sql.closeParenthesis();
sql.openParenthesis("AND");
sql.addSQLClause("AND", "ANNO_MESE", SQLBuilder.GREATER_EQUALS, new java.math.BigDecimal(year1).toString() + (new java.math.BigDecimal(month1).toString().length() == 1 ? "0".concat(new java.math.BigDecimal(month1).toString()) : new java.math.BigDecimal(month1).toString()));
sql.addSQLClause("AND", "ANNO_MESE", SQLBuilder.LESS_EQUALS, new java.math.BigDecimal(year2).toString() + (new java.math.BigDecimal(month2).toString().length() == 1 ? "0".concat(new java.math.BigDecimal(month2).toString()) : new java.math.BigDecimal(month2).toString()));
sql.addSQLClause("OR", "ANNO_MESE", SQLBuilder.ISNULL, null);
sql.closeParenthesis();
sql.addSQLClause("AND", "DT_INI_VALIDITA", SQLBuilder.LESS_EQUALS, data_fine);
sql.addSQLClause("AND", "DT_FIN_VALIDITA", SQLBuilder.GREATER_EQUALS, data_inizio);
}
if (dominio.equalsIgnoreCase("cd_terzo"))
sql.addSQLClause("AND", "CD_TERZO", SQLBuilder.EQUALS, query);
else if (dominio.equalsIgnoreCase("matricola")) {
sql.addSQLClause("AND", "MATRICOLA", SQLBuilder.EQUALS, new Long(query));
} else if (dominio.equalsIgnoreCase("denominazione")) {
if (tipoterzo.equalsIgnoreCase("fisica")) {
sql.openParenthesis("AND");
sql.addSQLClause("AND", "TI_ENTITA", SQLBuilder.EQUALS, AnagraficoBulk.FISICA);
sql.addSQLClause("OR", "TI_ENTITA", SQLBuilder.EQUALS, AnagraficoBulk.DIVERSI);
sql.closeParenthesis();
sql.openParenthesis("AND");
for (StringTokenizer stringtokenizer = new StringTokenizer(query, " "); stringtokenizer.hasMoreElements(); ) {
String queryDetail = stringtokenizer.nextToken();
if (tipoRicerca == null || tipoRicerca.equalsIgnoreCase("selettiva")) {
if (queryDetail.equalsIgnoreCase(RemoveAccent.convert(queryDetail)))
sql.addSQLClause("AND", "COGNOME", SQLBuilder.CONTAINS, queryDetail);
else {
sql.openParenthesis("AND");
sql.addSQLClause("OR", "COGNOME", SQLBuilder.CONTAINS, queryDetail);
sql.addSQLClause("OR", "COGNOME", 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(COGNOME)", SQLBuilder.EQUALS, queryDetail.toUpperCase());
sql.addSQLClause("OR", "COGNOME", SQLBuilder.STARTSWITH, queryDetail + " ");
sql.addSQLClause("OR", "COGNOME", SQLBuilder.ENDSWITH, " " + queryDetail);
sql.closeParenthesis();
} else {
sql.openParenthesis("AND");
sql.openParenthesis("AND");
sql.addSQLClause("OR", "UPPER(COGNOME)", SQLBuilder.EQUALS, queryDetail.toUpperCase());
sql.addSQLClause("OR", "UPPER(COGNOME)", SQLBuilder.EQUALS, RemoveAccent.convert(queryDetail).toUpperCase());
sql.closeParenthesis();
sql.openParenthesis("OR");
sql.addSQLClause("OR", "COGNOME", SQLBuilder.STARTSWITH, queryDetail + " ");
sql.addSQLClause("OR", "COGNOME", SQLBuilder.STARTSWITH, RemoveAccent.convert(queryDetail) + " ");
sql.closeParenthesis();
sql.openParenthesis("OR");
sql.addSQLClause("OR", "COGNOME", SQLBuilder.ENDSWITH, " " + queryDetail);
sql.addSQLClause("OR", "COGNOME", SQLBuilder.ENDSWITH, " " + RemoveAccent.convert(queryDetail));
sql.closeParenthesis();
sql.closeParenthesis();
}
}
}
sql.closeParenthesis();
sql.addOrderBy("COGNOME");
sql.addOrderBy("NOME");
} else if (tipoterzo.equalsIgnoreCase("giuridica")) {
sql.openParenthesis("AND");
sql.addSQLClause("AND", "TI_ENTITA", SQLBuilder.EQUALS, AnagraficoBulk.GIURIDICA);
sql.addSQLClause("OR", "TI_ENTITA", SQLBuilder.EQUALS, AnagraficoBulk.DIVERSI);
sql.closeParenthesis();
sql.openParenthesis("AND");
for (StringTokenizer stringtokenizer = new StringTokenizer(query, " "); stringtokenizer.hasMoreElements(); ) {
String queryDetail = stringtokenizer.nextToken();
if (tipoRicerca == null || tipoRicerca.equalsIgnoreCase("selettiva")) {
if (queryDetail.equalsIgnoreCase(RemoveAccent.convert(queryDetail)))
sql.addSQLClause("AND", "DENOMINAZIONE_SEDE", SQLBuilder.CONTAINS, queryDetail);
else {
sql.openParenthesis("AND");
sql.addSQLClause("OR", "DENOMINAZIONE_SEDE", SQLBuilder.CONTAINS, queryDetail);
sql.addSQLClause("OR", "DENOMINAZIONE_SEDE", 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(DENOMINAZIONE_SEDE)", SQLBuilder.EQUALS, queryDetail.toUpperCase());
sql.addSQLClause("OR", "DENOMINAZIONE_SEDE", SQLBuilder.STARTSWITH, queryDetail + " ");
sql.addSQLClause("OR", "DENOMINAZIONE_SEDE", SQLBuilder.ENDSWITH, " " + queryDetail);
sql.closeParenthesis();
} else {
sql.openParenthesis("AND");
sql.openParenthesis("AND");
sql.addSQLClause("OR", "UPPER(DENOMINAZIONE_SEDE)", SQLBuilder.EQUALS, queryDetail.toUpperCase());
sql.addSQLClause("OR", "UPPER(DENOMINAZIONE_SEDE)", SQLBuilder.EQUALS, RemoveAccent.convert(queryDetail).toUpperCase());
sql.closeParenthesis();
sql.openParenthesis("OR");
sql.addSQLClause("OR", "DENOMINAZIONE_SEDE", SQLBuilder.STARTSWITH, queryDetail + " ");
sql.addSQLClause("OR", "DENOMINAZIONE_SEDE", SQLBuilder.STARTSWITH, RemoveAccent.convert(queryDetail) + " ");
sql.closeParenthesis();
sql.openParenthesis("OR");
sql.addSQLClause("OR", "DENOMINAZIONE_SEDE", SQLBuilder.ENDSWITH, " " + queryDetail);
sql.addSQLClause("OR", "DENOMINAZIONE_SEDE", SQLBuilder.ENDSWITH, " " + RemoveAccent.convert(queryDetail));
sql.closeParenthesis();
sql.closeParenthesis();
}
}
}
sql.closeParenthesis();
sql.addOrderBy("DENOMINAZIONE_SEDE");
}
}
if (Dip != null && Dip.toUpperCase().compareTo("S") == 0)
sql.addSQLClause("AND", "MATRICOLA", SQLBuilder.ISNOTNULL, null);
else if (Dip != null && Dip.toUpperCase().compareTo("N") == 0)
sql.addSQLClause("AND", "MATRICOLA", SQLBuilder.ISNULL, null);
return home.fetchAll(sql);
} catch (it.cnr.jada.persistency.PersistencyException ex) {
throw handleException(ex);
}
}
public List findNazioniIban(UserContext userContext, BancaBulk bulk) throws it.cnr.jada.comp.ComponentException {
List lista;
try {
NazioneHome home = (NazioneHome) getHome(userContext, NazioneBulk.class);
SQLBuilder sql = home.createSQLBuilder();
sql.addClause("AND", "fl_iban", SQLBuilder.EQUALS, Boolean.TRUE);
sql.addClause("AND", "struttura_iban", SQLBuilder.ISNOTNULL, null);
sql.addOrderBy("cd_iso");
Broker broker = home.createBroker(sql);
lista = home.fetchAll(broker);
broker.close();
} catch (it.cnr.jada.persistency.PersistencyException pe) {
throw new ComponentException(pe);
} catch (Exception e) {
throw handleException(e);
}
return lista;
}
@SuppressWarnings("unchecked")
public TerzoBulk completaTerzo(UserContext userContext, TerzoBulk terzo) throws it.cnr.jada.comp.ComponentException {
try {
terzo.setDipendente(((AnagraficoHome) getHome(userContext, AnagraficoBulk.class)).findRapportoDipendenteFor(terzo.getAnagrafico()));
return terzo;
} catch (Exception e) {
throw handleException(e);
}
}
}