use of it.cnr.jada.comp.ComponentException in project sigla-main by consiglionazionaledellericerche.
the class MandatoComponent method aggiungiDocPassivi.
/**
* aggiungiDocPassivi PreCondition: E' stata generata la richiesta di
* aggiungere ad un mandato nuovi documenti amministrativi passivi ( fatture
* passive o domenti generici passivi). Tali documenti hanno lo stesso terzo
* e la stessa classe di pagamento. PostCondition: Per ogni documento
* passivo viene creata una o piu' righe di mandato (metodo creaMandatoRiga)
* secondo la seguente regola: - per ogni documento generico viene creata
* una sola riga di mandato - per ogni fattura passiva viene creata una riga
* di mandato ed eventualmente righe aggiuntive se tale fattura e' associata
* a note di debito e/o note di credito Viene creata una istanza di
* MandatoTerzoBulk (metodo creaMandatoTerzo) coi dati del terzo presente
* nei documenti amministrativi errore - beneficiari diversi PreCondition:
* Il codice terzo dei documenti amministrativi passivi da aggiungere al
* mandato non e' lo stesso per tutti i documenti PostCondition: Un
* messaggio di errore segnala all'utente l'impossibilità di aggiungere i
* documenti al mandato errore - classe di pagamento PreCondition: La classe
* di pagamento (Bancario,Postale,etc.) dei documenti amministrativi passivi
* da aggiungere al mandato non e' lo stesso per tutti i documenti.
* PostCondition: Un messaggio di errore segnala all'utente l'impossibilità
* di aggiungere i documenti al mandato errore - mandato di regolarizzazione
* PreCondition: I documenti amministrativi passivi selezionati per essere
* aggiunti ad un mandato di regolarizzazione sono stati contabilizzati in
* parte su obbligazioni relative a capitoli di bilancio e in parte su
* obbligazioni relative a partite di giro. PostCondition: Un messaggio di
* errore segnala all'utente l'impossibilità di aggiungere i documenti al
* mandato
* <p>
* errore - mandato competenza/residuo PreCondition: I documenti
* amministrativi passivi selezionati per essere aggiunti ad un mandato sono
* stati contabilizzati in parte su impegni residui e in parte su impegni di
* competenza PostCondition: Un messaggio di errore segnala all'utente
* l'impossibilità di aggiungere i documenti al mandato
*
* @param aUC lo <code>UserContext</code> che ha generato la richiesta
* @param mandato <code>MandatoBulk</code> il mandato da aggiornare
* @param docPassivi <code>List</code> la lista dei documenti passivi selezionati
* dall'utente
* @return mandato <code>MandatoBulk</code> il Mandato aggiornato
*/
public MandatoBulk aggiungiDocPassivi(UserContext aUC, MandatoBulk mandato, List docPassivi) throws ComponentException {
Integer cd_terzo;
String ti_pagamento, ti_competenza_residuo;
Boolean pGiro;
V_doc_passivo_obbligazioneBulk docPassivo;
Mandato_rigaBulk riga;
Collection docPassiviCollegati;
try {
if (mandato.getMandato_rigaColl().size() == 0)
mandato.setMandato_terzo(null);
if (mandato.getMandato_terzo() == null) {
cd_terzo = ((V_doc_passivo_obbligazioneBulk) docPassivi.get(0)).getCodice_terzo_o_cessionario();
ti_pagamento = ((V_doc_passivo_obbligazioneBulk) docPassivi.get(0)).getTi_pagamento();
pGiro = ((V_doc_passivo_obbligazioneBulk) docPassivi.get(0)).getFl_pgiro();
ti_competenza_residuo = ((V_doc_passivo_obbligazioneBulk) docPassivi.get(0)).getTi_competenza_residuo();
} else {
cd_terzo = mandato.getMandato_terzo().getCd_terzo();
ti_pagamento = mandato.getMandato_rigaColl().get(0).getBanca().getTi_pagamento();
pGiro = mandato.getMandato_rigaColl().get(0).getFl_pgiro();
ti_competenza_residuo = mandato.getTi_competenza_residuo();
}
for (Iterator i = docPassivi.iterator(); i.hasNext(); ) {
docPassivo = (V_doc_passivo_obbligazioneBulk) i.next();
if (!cd_terzo.equals(docPassivo.getCodice_terzo_o_cessionario()))
throw new ApplicationException("E' possibile selezionare solo doc passivi relativi ad un unico beneficiario");
if (!MandatoBulk.TIPO_REGOLARIZZAZIONE.equals(mandato.getTi_mandato()) && !ti_pagamento.equals(docPassivo.getTi_pagamento()))
throw new ApplicationException("E' possibile selezionare solo doc passivi relativi ad una stessa classe di pagamento");
/*
* simona 9.10.02 if ( mandato.getTi_mandato().equals(
* mandato.TIPO_REGOLARIZZAZIONE ) &&
* !docPassivo.getFl_pgiro().equals( pGiro )) throw new
* ApplicationException(
* "Per il mandato di regolarizzaione non e' possibile selezionare doc passivi su partite di giro e doc passivi su capitoli di bilancio"
* );
*/
if (!ti_competenza_residuo.equals(docPassivo.getTi_competenza_residuo()))
throw new ApplicationException("E' possibile selezionare solo doc passivi dello stesso tipo COMPETENZA/RESIDUO.");
// creo mandato_riga
riga = creaMandatoRiga(aUC, mandato, docPassivo);
// controllo cap /swift
if (riga.getBanca() != null && ((Rif_modalita_pagamentoBulk.BANCARIO.equals(riga.getBanca().getTi_pagamento()) || (Rif_modalita_pagamentoBulk.IBAN.equals(riga.getBanca().getTi_pagamento()))))) {
BancaBulk banca = (BancaBulk) getHome(aUC, BancaBulk.class).findByPrimaryKey(new BancaBulk(riga.getCd_terzo(), riga.getPg_banca()));
if (banca != null && banca.getCodice_iban() != null && riga.getBanca().getAbi() != null && banca.getCodice_iban().startsWith("IT")) {
if (riga.getCd_terzo() != null) {
TerzoBulk terzo = (TerzoBulk) getHome(aUC, TerzoBulk.class).findByPrimaryKey(new TerzoBulk(riga.getCd_terzo()));
if (terzo.getPg_comune_sede() != null) {
ComuneBulk comune = (ComuneBulk) getHome(aUC, ComuneBulk.class).findByPrimaryKey(new ComuneBulk(terzo.getPg_comune_sede()));
if (comune.getTi_italiano_estero().equals(NazioneBulk.ITALIA) && terzo.getCap_comune_sede() == null)
throw new ApplicationException("Attenzione per la modalità di pagamento presente sul documento è necessario indicare il cap sul terzo.");
}
}
} else if (banca != null && banca.getCodice_iban() != null && riga.getBanca().getAbi() == null) {
NazioneHome nazioneHome = (NazioneHome) getHome(aUC, NazioneBulk.class);
SQLBuilder sqlExists = nazioneHome.createSQLBuilder();
sqlExists.addSQLClause("AND", "NAZIONE.CD_ISO", SQLBuilder.EQUALS, banca.getCodice_iban().substring(0, 2));
sqlExists.addSQLClause("AND", "NAZIONE.FL_SEPA", SQLBuilder.EQUALS, "Y");
if (sqlExists.executeCountQuery(getConnection(aUC)) != 0 && riga.getBanca().getCodice_swift() == null)
throw new ApplicationException("Attenzione per la modalità di pagamento presente sul documento è necessario indicare il codice swift/bic.");
}
}
// estrae le eventuali note di credito/debito
docPassiviCollegati = ((MandatoIHome) getHome(aUC, mandato.getClass())).findDocPassiviCollegati(docPassivo);
for (Iterator j = docPassiviCollegati.iterator(); j.hasNext(); ) creaMandatoRigaCollegato(aUC, mandato, (V_doc_passivo_obbligazioneBulk) j.next(), riga);
}
// creo mandato terzo
if (mandato.getMandato_terzo() == null) {
Mandato_terzoBulk mTerzo = creaMandatoTerzo(aUC, mandato, cd_terzo);
mandato.setMandato_terzo(mTerzo);
}
mandato.setTi_competenza_residuo(ti_competenza_residuo);
mandato.refreshImporto();
return mandato;
} catch (Exception e) {
throw handleException(e);
}
}
use of it.cnr.jada.comp.ComponentException in project sigla-main by consiglionazionaledellericerche.
the class MandatoComponent method verificaMandatoDiRegolarizzazione.
/**
* verifica mandato di regolarizzazione PreCondition: E' stata richiesta la
* creazione di un mandato di regolarizzazione e l'accertamento selezionato
* dall'utente ha un importo disponibile (somma degli importi delle scadenze
* non associate a doc. amministrativi) da associare ai documenti
* amministrativi/contabili uguale all'importo del mandato PostCondition: Il
* mandato ha superato la validazione e può pertanto essere salvato verifica
* mandato di regolarizzazione - errore PreCondition: E' stata richiesta la
* creazione di un mandato di regolarizzazione e l'accertamento selezionato
* dall'utente ha un importo disponibile (somma degli importi delle scadenze
* non associate a doc. amministrativi) da associare ai documenti
* amministrativi/contabili diverso dall'importo del mandato PostCondition:
* Un messaggio di errore viene visualizzato all'utente per segnalare
* l'impossibilità di salvare il mandato verifica mandato di
* regolarizzazione - errore sospesi PreCondition: E' stata richiesta la
* creazione/modifica di un mandato di regolarizzazione e sono stati
* associati dei sospesi al mandato PostCondition: Un messaggio di errore
* viene visualizzato all'utente per segnalare l'impossibilità di salvare un
* mandato di regolarizzazione con sospesi associati verifica mandato di
* regolarizzazione - errore partite di giro PreCondition: E' stata
* richiesta la creazione/modifica di un mandato di regolarizzazione e sono
* stati associati al mandato sia impegni su partita di giro che impegni
* generici PostCondition: Un messaggio di errore viene visualizzato
* all'utente per segnalare l'impossibilità di salvare un mandato di
* regolarizzazione con sia impegni su partita di giro che impegni generici
*
* @param aUC lo <code>UserContext</code> che ha generato la richiesta
* @param mandato <code>MandatoIBulk</code> il mandato di regolarizzazione di
* cui si verifica la correttezza
*/
private void verificaMandatoDiRegolarizzazione(UserContext aUC, MandatoIBulk mandato) throws ComponentException {
try {
if (mandato.isToBeCreated() && !mandato.isGeneraReversaleDaDocAmm()) {
// Locko l'accertamento selezionato dall'utente: in tal modo
// garantisco che nessuno lo modifichi mentre
// vengono effettuati i controlli e, nello stesso tempo, posso
// controllare che il PG_VER_REC dell'accertamento
// non sia cambiato da quando è stato selezionato.
lockBulk(aUC, mandato.getAccertamentoPerRegolarizzazione());
// verifica l'importo dell'accertamento
BigDecimal im_accertamento_disponibile = new BigDecimal(0);
AccertamentoBulk accertamento = (AccertamentoBulk) createAccertamentoAbstractComponentSession().inizializzaBulkPerModifica(aUC, mandato.getAccertamentoPerRegolarizzazione());
mandato.setAccertamentoPerRegolarizzazione(accertamento);
Set<Accertamento_scadenzarioBulk> newSet = new HashSet<Accertamento_scadenzarioBulk>();
for (Iterator i = mandato.getScadenzeAccertamentoSelezionatePerRegolarizzazione().iterator(); i.hasNext(); ) {
Accertamento_scadenzarioBulk asMandato = (Accertamento_scadenzarioBulk) i.next();
Accertamento_scadenzarioBulk asDB = accertamento.getAccertamento_scadenzarioColl().get(accertamento.getAccertamento_scadenzarioColl().indexOfByPrimaryKey(asMandato));
if (asDB != null) {
newSet.add(asDB);
if (asDB.getIm_scadenza().subtract(asDB.getIm_associato_doc_contabile()).compareTo(new BigDecimal(0)) > 0)
im_accertamento_disponibile = im_accertamento_disponibile.add(asDB.getIm_scadenza().subtract(asDB.getIm_associato_doc_contabile()));
}
}
if (mandato.getIm_mandato().compareTo(im_accertamento_disponibile) != 0)
throw new ApplicationException("L'importo del mandato e l'importo disponibile dell'accertamento non corrispondono");
mandato.setScadenzeAccertamentoSelezionatePerRegolarizzazione(newSet);
} else if (mandato.isToBeCreated() && mandato.isGeneraReversaleDaDocAmm()) {
// verifica l'importo dei doc amm selezioanti e il terzo
BigDecimal im_documento_disponibile = new BigDecimal(0);
Integer cd_terzo = ((V_doc_attivo_accertamentoBulk) mandato.getDocGenericiSelezionatiPerRegolarizzazione().iterator().next()).getCd_terzo();
for (Iterator i = mandato.getDocGenericiSelezionatiPerRegolarizzazione().iterator(); i.hasNext(); ) {
V_doc_attivo_accertamentoBulk docAttivo = (V_doc_attivo_accertamentoBulk) i.next();
im_documento_disponibile = im_documento_disponibile.add(docAttivo.getIm_totale_doc_amm());
if (!(cd_terzo.intValue() == docAttivo.getCd_terzo().intValue()))
throw new ApplicationException("Sono stati selezionati documenti amministrativi intestati a terzi diversi!");
}
if (mandato.getIm_mandato().compareTo(im_documento_disponibile) != 0)
throw new ApplicationException("L'importo del mandato e la somma degli importi dei documenti amministrativi selezionati non corrispondono");
/*
* //verifica competenza/residuo String ti_competenza_residuo =
* mandato.getDocGenericiSelezionatiPerRegolarizzazione()(
* Documento_generico_rigaBulk
* )documento.getDocumento_generico_dettColl
* ().get(0)).getAccertamento_scadenziario
* ().getAccertamento().getTi_competenza_residuo(); for (
* Iterator i =
* documento.getDocumento_generico_dettColl().iterator();
* i.hasNext(); ) { Documento_generico_rigaBulk dr =
* (Documento_generico_rigaBulk) i.next(); if (
* !dr.getAccertamento_scadenziario
* ().getAccertamento().getTi_competenza_residuo
* ().equals(ti_competenza_residuo)) throw new
* ApplicationException(
* "Non e' possibile creare la reversale perchè il documento amministrativo selezionato e' stato contabilizzato in parte su accertamenti di competenza e in parte su accertamenti a residuo"
* ); }
*/
}
// non deve essere possibile collegare contemporaneamente impegni su
// partita di giro e impegni normali
Boolean PGiro = null;
for (Iterator i = mandato.getMandato_rigaColl().iterator(); i.hasNext(); ) {
Mandato_rigaBulk riga = (Mandato_rigaBulk) i.next();
ObbligazioneBulk obbligazione = (ObbligazioneBulk) getHome(aUC, ObbligazioneBulk.class).findByPrimaryKey(new ObbligazioneBulk(riga.getCd_cds(), riga.getEsercizio_obbligazione(), riga.getEsercizio_ori_obbligazione(), riga.getPg_obbligazione()));
if (PGiro == null)
PGiro = obbligazione.getFl_pgiro();
if (!PGiro.equals(obbligazione.getFl_pgiro()))
throw new ApplicationException("Non e' possibile associare ad un mandato di regolarizzazione sia impegni su partita di giro che impegni generici.");
}
if (mandato.getSospeso_det_uscColl().size() > 0)
throw new ApplicationException("Il mandato di regolarizzazione non può avere sospesi associati");
} catch (Exception e) {
throw handleException(e);
}
}
use of it.cnr.jada.comp.ComponentException in project sigla-main by consiglionazionaledellericerche.
the class MandatoComponent method annullaReversaleDiRegolarizzazione.
/**
* annullamento PreCondition: E' stata generata la richiesta di annullare un
* Mandato di Regolarizzazione PostCondition: Viene richiesta alla Component
* che gestisce la Reversale l'annullamento della reversale di
* regolarizzazione associata al mandato
*
* @param userContext lo <code>UserContext</code> che ha generato la richiesta
* @param mandato <code>MandatoBulk</code> il mandato di regolarizzazione
* (associato alla reversale) da annullare
*/
private void annullaReversaleDiRegolarizzazione(UserContext userContext, MandatoBulk mandato) throws ComponentException {
try {
/* REVERSALE */
Ass_mandato_reversaleBulk ass = (Ass_mandato_reversaleBulk) mandato.getReversaliColl().get(0);
ReversaleComponentSession revSession = createReversaleComponentSession();
ReversaleBulk reversale = (ReversaleBulk) revSession.inizializzaBulkPerModifica(userContext, new ReversaleIBulk(ass.getCd_cds_reversale(), ass.getEsercizio_reversale(), ass.getPg_reversale()));
revSession.annullaReversaleDiRegolarizzazione(userContext, reversale);
rimuoviVincoliAlMandato(userContext, mandato);
} catch (Exception e) {
throw handleException(mandato, e);
}
}
use of it.cnr.jada.comp.ComponentException in project sigla-main by consiglionazionaledellericerche.
the class MandatoComponent method findDisponibilitaDiCassaPerCDS.
/**
* find disponibilità di cassa Cds PreCondition: E' stata richiesta la
* disponibilita di cassa di un cds diverso da ente ( disp cassa CDS = fondo
* di cassa iniziale del Cds per l'esercizio di scrivania + mandati di
* accreditamento del CNR emessi a favore di questo Cds - mandati emessi dal
* Cds - modello 1210 emessi dal Cds) PostCondition: Viene restituita la
* disponibilità di cassa del cds
*
* @param userContext lo <code>UserContext</code> che ha generato la richiesta
* @param mandato <code>MandatoIBulk</code> il mandato emesso dal Cds di cui si
* verifica disponibilità di cassa
*/
private BigDecimal findDisponibilitaDiCassaPerCDS(UserContext userContext, MandatoBulk mandato) throws ComponentException {
try {
SQLBuilder sql = getHome(userContext, V_disp_cassa_cdsBulk.class).createSQLBuilder();
sql.addClause("AND", "esercizio", SQLBuilder.EQUALS, mandato.getEsercizio());
sql.addClause("AND", "cd_cds", SQLBuilder.EQUALS, ((CNRUserContext) userContext).getCd_cds());
List result = getHome(userContext, V_disp_cassa_cdsBulk.class).fetchAll(sql);
if (result.size() == 0)
throw new ApplicationException("Non esiste il record per la disponibilità di cassa del CDS: " + mandato.getCd_cds() + " - esercizio: " + mandato.getEsercizio());
V_disp_cassa_cdsBulk cassa = (V_disp_cassa_cdsBulk) result.get(0);
return cassa.getIm_disponibilita_cassa();
} catch (Exception e) {
throw handleException(e);
}
}
use of it.cnr.jada.comp.ComponentException in project sigla-main by consiglionazionaledellericerche.
the class MandatoComponent method annullaReversaleDiIncassoIVA.
private void annullaReversaleDiIncassoIVA(UserContext userContext, MandatoIBulk mandato) throws ComponentException {
try {
/* REVERSALE */
Ass_mandato_reversaleBulk ass = (Ass_mandato_reversaleBulk) mandato.getReversaliColl().get(0);
ReversaleComponentSession revSession = createReversaleComponentSession();
ReversaleIBulk reversale = (ReversaleIBulk) revSession.inizializzaBulkPerModifica(userContext, new ReversaleIBulk(ass.getCd_cds_reversale(), ass.getEsercizio_reversale(), ass.getPg_reversale()));
revSession.annullaReversaleDiIncassoIVA(userContext, reversale);
rimuoviVincoliAlMandato(userContext, mandato);
} catch (Exception e) {
throw handleException(mandato, e);
}
}
Aggregations