Search in sources :

Example 1 with Voce_fBulk

use of it.cnr.contab.config00.pdcfin.bulk.Voce_fBulk in project sigla-main by consiglionazionaledellericerche.

the class ObbligazioneModificaComponent method inserisciModifiche.

private Obbligazione_modificaBulk inserisciModifiche(UserContext aUC, Obbligazione_modificaBulk bulk) throws it.cnr.jada.comp.ComponentException {
    try {
        Obbligazione_modificaBulk obbMod = (Obbligazione_modificaBulk) bulk;
        ObbligazioneBulk obbligazione = obbMod.getObbligazione();
        BigDecimal percentuale = new BigDecimal(100);
        BigDecimal totaleScad = new BigDecimal(0);
        BigDecimal diffScad = new BigDecimal(0);
        Obbligazione_scad_voceBulk osv;
        Obbligazione_scadenzarioBulk os;
        Obbligazione_scad_voceBulk key = new Obbligazione_scad_voceBulk();
        PrimaryKeyHashtable prcImputazioneFinanziariaTable = getOldRipartizioneCdrVoceLinea(aUC, obbligazione);
        // verifico che nella nuova Obbligazione alle linee/voci siano stati assegnati gli stessi importi
        for (Enumeration e = prcImputazioneFinanziariaTable.keys(); e.hasMoreElements(); ) {
            key = (Obbligazione_scad_voceBulk) e.nextElement();
            totaleScad = new BigDecimal(0);
            for (Iterator s = obbligazione.getObbligazione_scadenzarioColl().iterator(); s.hasNext(); ) {
                os = (Obbligazione_scadenzarioBulk) s.next();
                for (Iterator d = os.getObbligazione_scad_voceColl().iterator(); d.hasNext(); ) {
                    osv = (Obbligazione_scad_voceBulk) d.next();
                    // totale per Cdr e per scadenza
                    if (key.getCd_centro_responsabilita().equals(osv.getCd_centro_responsabilita()) && key.getCd_linea_attivita().equals(osv.getCd_linea_attivita()) && key.getCd_voce().equals(osv.getCd_voce())) {
                        totaleScad = totaleScad.add(Utility.nvl(osv.getIm_voce()));
                    }
                }
            }
            if (totaleScad.compareTo((BigDecimal) prcImputazioneFinanziariaTable.get(key)) != 0) {
                Obbligazione_mod_voceBulk obbModVoce = new Obbligazione_mod_voceBulk(obbMod.getCd_cds(), obbMod.getEsercizio(), obbMod.getPg_modifica(), key.getTi_appartenenza(), key.getTi_gestione(), key.getCd_voce(), key.getCd_centro_responsabilita(), key.getCd_linea_attivita());
                IVoceBilancioBulk voce = null;
                if (((Parametri_cnrHome) getHome(aUC, Parametri_cnrBulk.class)).isNuovoPdg(aUC)) {
                    voce = new Elemento_voceBulk(key.getCd_voce(), obbMod.getEsercizio(), key.getTi_appartenenza(), key.getTi_gestione());
                    voce = (Elemento_voceBulk) getHome(aUC, Elemento_voceBulk.class).findByPrimaryKey(voce);
                } else {
                    voce = new Voce_fBulk(key.getCd_voce(), obbMod.getEsercizio(), key.getTi_appartenenza(), key.getTi_gestione());
                    voce = (Voce_fBulk) getHome(aUC, Voce_fBulk.class).findByPrimaryKey(voce);
                }
                obbModVoce.setVoce(voce);
                WorkpackageBulk linea = new WorkpackageBulk(key.getCd_centro_responsabilita(), key.getCd_linea_attivita());
                linea = (WorkpackageBulk) getHome(aUC, linea).findByPrimaryKey(linea);
                obbModVoce.setLinea_attivita(linea);
                obbModVoce.setIm_modifica(totaleScad.subtract((BigDecimal) prcImputazioneFinanziariaTable.get(key)));
                obbModVoce.setToBeCreated();
                obbMod.addToObbligazione_mod_voceColl(obbModVoce);
            }
        }
        return obbMod;
    } catch (Exception e) {
        throw handleException(e);
    }
}
Also used : Enumeration(java.util.Enumeration) Obbligazione_scad_voceBulk(it.cnr.contab.doccont00.core.bulk.Obbligazione_scad_voceBulk) Obbligazione_modificaBulk(it.cnr.contab.doccont00.core.bulk.Obbligazione_modificaBulk) IVoceBilancioBulk(it.cnr.contab.config00.pdcfin.bulk.IVoceBilancioBulk) Parametri_cnrHome(it.cnr.contab.config00.bulk.Parametri_cnrHome) Elemento_voceBulk(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk) BigDecimal(java.math.BigDecimal) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) ComponentException(it.cnr.jada.comp.ComponentException) Voce_fBulk(it.cnr.contab.config00.pdcfin.bulk.Voce_fBulk) Obbligazione_mod_voceBulk(it.cnr.contab.doccont00.core.bulk.Obbligazione_mod_voceBulk) ObbligazioneBulk(it.cnr.contab.doccont00.core.bulk.ObbligazioneBulk) PrimaryKeyHashtable(it.cnr.jada.bulk.PrimaryKeyHashtable) Iterator(java.util.Iterator) Obbligazione_scadenzarioBulk(it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk) Parametri_cnrBulk(it.cnr.contab.config00.bulk.Parametri_cnrBulk) WorkpackageBulk(it.cnr.contab.config00.latt.bulk.WorkpackageBulk)

Example 2 with Voce_fBulk

use of it.cnr.contab.config00.pdcfin.bulk.Voce_fBulk in project sigla-main by consiglionazionaledellericerche.

the class SaldoComponent method aggiornaSaldiAnniSuccessivi.

public void aggiornaSaldiAnniSuccessivi(UserContext userContext, String cd_cdr, String cd_linea_attivita, IVoceBilancioBulk voce, Integer esercizio_res, BigDecimal importo, Voce_f_saldi_cdr_lineaBulk saldoOld) throws ComponentException {
    Voce_f_saldi_cdr_lineaBulk saldoNew;
    try {
        Ass_evold_evnewHome ass_evold_evnewHome = (Ass_evold_evnewHome) getHome(userContext, Ass_evold_evnewBulk.class);
        CdrHome cdrHome = (CdrHome) getHome(userContext, CdrBulk.class);
        CdrBulk cdr = (CdrBulk) cdrHome.findByPrimaryKey(new CdrBulk(cd_cdr));
        getHomeCache(userContext).fetchAll(userContext, cdrHome);
        if (((Parametri_cdsHome) getHome(userContext, Parametri_cdsBulk.class)).isRibaltato(userContext, cdr.getCd_cds())) {
            // RECUPERO L'ELEMENTO DELL'ANNO IN CORSO
            for (Iterator esercizi = ((EsercizioHome) getHome(userContext, EsercizioBulk.class)).findEserciziSuccessivi(new EsercizioBulk(CNRUserContext.getCd_cds(userContext), CNRUserContext.getEsercizio(userContext))).iterator(); esercizi.hasNext(); ) {
                EsercizioBulk esercizio = (EsercizioBulk) esercizi.next();
                String codiceVoce = voce.getCd_voce(), codiceVoceForSaldoNew = null;
                // recupero la voce di ribaltamento
                Elemento_voceBulk elemento_voce = null;
                if (voce instanceof Voce_fBulk) {
                    if (!((Parametri_cnrHome) getHome(userContext, Parametri_cnrBulk.class)).isNuovoPdg(esercizio.getEsercizio())) {
                        voce = (Voce_fBulk) getHome(userContext, Voce_fBulk.class).findByPrimaryKey(new Voce_fBulk(voce.getCd_voce(), esercizio.getEsercizio(), saldoOld.getTi_appartenenza(), saldoOld.getTi_gestione()));
                        getHomeCache(userContext).fetchAll(userContext);
                        if (voce == null)
                            throw new ApplicationException("La voce: " + codiceVoce + " non è presente nell'esercizio: " + esercizio.getEsercizio());
                        saldoNew = findAndLock(userContext, esercizio.getEsercizio(), esercizio_res, cd_cdr, cd_linea_attivita, voce);
                        codiceVoceForSaldoNew = voce.getCd_voce();
                        elemento_voce = (Elemento_voceBulk) getHome(userContext, Elemento_voceBulk.class).findByPrimaryKey(new Elemento_voceBulk(voce.getCd_elemento_voce(), esercizio.getEsercizio(), voce.getTi_appartenenza(), voce.getTi_gestione()));
                    } else {
                        // recupero la voce di ribaltamento
                        // Voce_fBulk voceOld = (Voce_fBulk)getHome(userContext,Voce_fBulk.class).findByPrimaryKey(
                        // new Voce_fBulk(voce.getCd_voce(),CNRUserContext.getEsercizio(userContext),saldoOld.getTi_appartenenza(),saldoOld.getTi_gestione())
                        // );
                        // 
                        // getHomeCache(userContext).fetchAll(userContext);
                        // 
                        // if (voceOld == null)
                        // throw new ApplicationException("La voce: "+ voce.getCd_voce() +" non è presente nell'esercizio: "+CNRUserContext.getEsercizio(userContext));
                        Elemento_voceBulk elementoVoceOld = (Elemento_voceBulk) getHome(userContext, Elemento_voceBulk.class).findByPrimaryKey(new Elemento_voceBulk(saldoOld.getCd_voce(), CNRUserContext.getEsercizio(userContext), saldoOld.getTi_appartenenza(), saldoOld.getTi_gestione()));
                        if (elementoVoceOld == null)
                            throw new ApplicationException("Elemento voce non trovato per la Voce: " + saldoOld.getCd_voce() + " nell'esercizio: " + CNRUserContext.getEsercizio(userContext));
                        // cerco la voce del nuovo anno
                        List listVociNew = ass_evold_evnewHome.findAssElementoVoceNewList(elementoVoceOld);
                        if (!listVociNew.isEmpty()) {
                            if (listVociNew.size() > 1)
                                throw new ApplicationException("Trovate nella tabella di associazione Vecchie/Nuove Voci più elementi voce nel nuovo anno per la Voce: " + elementoVoceOld.getCd_voce() + " nell'esercizio: " + CNRUserContext.getEsercizio(userContext));
                            elemento_voce = (Elemento_voceBulk) listVociNew.get(0);
                        } else {
                            elemento_voce = (Elemento_voceBulk) getHome(userContext, Elemento_voceBulk.class).findByPrimaryKey(new Elemento_voceBulk(elementoVoceOld.getCd_elemento_voce(), esercizio.getEsercizio(), elementoVoceOld.getTi_appartenenza(), elementoVoceOld.getTi_gestione()));
                        }
                        if (elemento_voce == null || elemento_voce.getEsercizio().compareTo(esercizio.getEsercizio()) != 0)
                            throw new ApplicationException("Elemento voce non trovato o associato ad una voce di anno differente rispetto a quello di ribaltamento per la Voce: " + saldoOld.getCd_voce() + " nell'esercizio: " + CNRUserContext.getEsercizio(userContext));
                        saldoNew = findAndLock(userContext, esercizio.getEsercizio(), esercizio_res, cd_cdr, cd_linea_attivita, elemento_voce);
                        codiceVoceForSaldoNew = elemento_voce.getCd_voce();
                    }
                } else {
                    // recupero la voce di ribaltamento
                    Elemento_voceBulk elementoVoceOld = (Elemento_voceBulk) getHome(userContext, Elemento_voceBulk.class).findByPrimaryKey(new Elemento_voceBulk(voce.getCd_elemento_voce(), CNRUserContext.getEsercizio(userContext), voce.getTi_appartenenza(), voce.getTi_gestione()));
                    if (elementoVoceOld == null)
                        throw new ApplicationException("Elemento voce non trovato per la Voce: " + voce.getCd_voce() + " nell'esercizio: " + CNRUserContext.getEsercizio(userContext));
                    getHomeCache(userContext).fetchAll(userContext);
                    // cerco la voce del nuovo anno
                    List listVociNew = ass_evold_evnewHome.findAssElementoVoceNewList(elementoVoceOld);
                    if (!listVociNew.isEmpty()) {
                        if (listVociNew.size() > 1)
                            throw new ApplicationException("Trovate nella tabella di associazione Vecchie/Nuove Voci più elementi voce nel nuovo anno per la Voce: " + elementoVoceOld.getCd_voce() + " nell'esercizio: " + CNRUserContext.getEsercizio(userContext));
                        elemento_voce = (Elemento_voceBulk) listVociNew.get(0);
                    } else {
                        elemento_voce = (Elemento_voceBulk) getHome(userContext, Elemento_voceBulk.class).findByPrimaryKey(new Elemento_voceBulk(elementoVoceOld.getCd_elemento_voce(), esercizio.getEsercizio(), elementoVoceOld.getTi_appartenenza(), elementoVoceOld.getTi_gestione()));
                    }
                    if (elemento_voce == null || elemento_voce.getEsercizio().compareTo(esercizio.getEsercizio()) != 0)
                        throw new ApplicationException("Elemento voce non trovato o associato ad una voce di anno differente rispetto a quello di ribaltamento per la Voce: " + elementoVoceOld.getCd_voce() + " nell'esercizio: " + CNRUserContext.getEsercizio(userContext));
                    saldoNew = findAndLock(userContext, esercizio.getEsercizio(), esercizio_res, cd_cdr, cd_linea_attivita, elemento_voce);
                    codiceVoceForSaldoNew = elemento_voce.getCd_voce();
                }
                getHomeCache(userContext).fetchAll(userContext);
                WorkpackageBulk workpackage = (WorkpackageBulk) getHome(userContext, WorkpackageBulk.class).findByPrimaryKey(new WorkpackageBulk(cd_cdr, cd_linea_attivita));
                // Obbligatorio cofog sulle GAE
                Parametri_cnrBulk par = (Parametri_cnrBulk) getHome(userContext, Parametri_cnrBulk.class).findByPrimaryKey(new Parametri_cnrBulk(esercizio.getEsercizio()));
                if (par != null && par.getLivello_pdg_cofog() != 0)
                    if ((workpackage.getTi_gestione().compareTo(CostantiTi_gestione.TI_GESTIONE_SPESE) == 0) && workpackage.getCd_cofog() == null)
                        throw new ApplicationException("Non è possibile utilizzare GAE di spesa in cui non è indicata la classificazione Cofog.");
                getHomeCache(userContext).fetchAll(userContext);
                if (saldoNew == null) {
                    if (elemento_voce == null)
                        throw new ApplicationException("Elemento voce non trovato per la Voce: " + voce.getCd_voce() + " nell'esercizio: " + esercizio.getEsercizio());
                    saldoNew = new Voce_f_saldi_cdr_lineaBulk(esercizio.getEsercizio(), esercizio_res, cd_cdr, cd_linea_attivita, voce.getTi_appartenenza(), voce.getTi_gestione(), codiceVoceForSaldoNew);
                    saldoNew.setCd_elemento_voce(elemento_voce.getCd_elemento_voce());
                    saldoNew.inizializzaSommeAZero();
                    saldoNew.setToBeCreated();
                    insertBulk(userContext, saldoNew);
                }
                if (saldoNew != null) {
                    saldoNew.setIm_stanz_res_improprio(saldoNew.getIm_stanz_res_improprio().subtract(importo));
                    // calcolo i vincoli
                    Pdg_vincoloHome home = (Pdg_vincoloHome) getHome(userContext, Pdg_vincoloBulk.class);
                    List<Pdg_vincoloBulk> listVincoli = home.cercaDettagliVincolati(saldoNew);
                    BigDecimal impVincolo = listVincoli.stream().map(e -> e.getIm_vincolo()).reduce((x, y) -> x.add(y)).orElse(BigDecimal.ZERO);
                    BigDecimal diff = saldoNew.getDispAdImpResiduoImproprio().subtract(impVincolo);
                    if (diff.compareTo(Utility.ZERO) < 0) {
                        if (voce.getTi_gestione().equalsIgnoreCase(Voce_f_saldi_cdr_lineaBulk.TIPO_GESTIONE_SPESA)) {
                            if (!((elemento_voce.getFl_partita_giro() != null && elemento_voce.getFl_partita_giro().booleanValue()) || (elemento_voce.getFl_limite_ass_obblig() != null && !elemento_voce.getFl_limite_ass_obblig().booleanValue() && workpackage.getFl_limite_ass_obblig() != null && !workpackage.getFl_limite_ass_obblig().booleanValue()))) {
                                StringBuilder messaggio = new StringBuilder("Impossibile effettuare l'operazione !\n" + "Nell'esercizio " + esercizio.getEsercizio() + " e per il CdR " + cd_cdr + ", " + " Voce " + voce.getCd_voce() + " e GAE " + cd_linea_attivita + " lo stanziamento Residuo Improprio " + " diventerebbe negativo (" + new it.cnr.contab.util.EuroFormat().format(diff.abs()) + ")");
                                if (impVincolo.compareTo(BigDecimal.ZERO) > 0)
                                    messaggio.append(" in conseguenza della presenza di vincoli di spesa per un importo di " + new it.cnr.contab.util.EuroFormat().format(impVincolo.abs()));
                                throw new ApplicationException(messaggio.toString());
                            }
                        }
                    }
                    saldoNew.setToBeUpdated();
                    updateBulk(userContext, saldoNew);
                }
            }
        }
    } catch (PersistencyException e) {
        throw new ComponentException(e);
    } catch (IntrospectionException e) {
        throw new ComponentException(e);
    }
}
Also used : V_classificazione_vociBulk(it.cnr.contab.config00.pdcfin.cla.bulk.V_classificazione_vociBulk) Pdg_variazione_riga_gestBulk(it.cnr.contab.pdg01.bulk.Pdg_variazione_riga_gestBulk) EsercizioBulk(it.cnr.contab.config00.esercizio.bulk.EsercizioBulk) Voce_piano_economico_prgBulk(it.cnr.contab.progettiric00.tabrif.bulk.Voce_piano_economico_prgBulk) BigDecimal(java.math.BigDecimal) Liquidazione_iva_variazioniBulk(it.cnr.contab.gestiva00.core.bulk.Liquidazione_iva_variazioniBulk) Var_stanz_res_rigaBulk(it.cnr.contab.varstanz00.bulk.Var_stanz_res_rigaBulk) CostantiTi_gestione(it.cnr.contab.config00.latt.bulk.CostantiTi_gestione) it.cnr.contab.progettiric00.core.bulk(it.cnr.contab.progettiric00.core.bulk) ObjectNotFoundException(it.cnr.jada.persistency.ObjectNotFoundException) Ass_var_stanz_res_cdrBulk(it.cnr.contab.varstanz00.bulk.Ass_var_stanz_res_cdrBulk) Pdg_variazioneBulk(it.cnr.contab.pdg00.bulk.Pdg_variazioneBulk) PersistentHome(it.cnr.jada.persistency.sql.PersistentHome) CdrHome(it.cnr.contab.config00.sto.bulk.CdrHome) Classificazione_vociBulk(it.cnr.contab.config00.pdcfin.cla.bulk.Classificazione_vociBulk) Timestamp(java.sql.Timestamp) it.cnr.contab.config00.bulk(it.cnr.contab.config00.bulk) SQLBuilder(it.cnr.jada.persistency.sql.SQLBuilder) Tipo_unita_organizzativaHome(it.cnr.contab.config00.sto.bulk.Tipo_unita_organizzativaHome) Pdg_modulo_speseBulk(it.cnr.contab.prevent01.bulk.Pdg_modulo_speseBulk) Collectors(java.util.stream.Collectors) Ass_pdg_variazione_cdrHome(it.cnr.contab.pdg00.cdip.bulk.Ass_pdg_variazione_cdrHome) Serializable(java.io.Serializable) RemoteException(java.rmi.RemoteException) Ass_var_stanz_res_cdrHome(it.cnr.contab.varstanz00.bulk.Ass_var_stanz_res_cdrHome) EJBException(javax.ejb.EJBException) DetailedRuntimeException(it.cnr.jada.DetailedRuntimeException) Stream(java.util.stream.Stream) Var_stanz_resBulk(it.cnr.contab.varstanz00.bulk.Var_stanz_resBulk) WorkpackageBulk(it.cnr.contab.config00.latt.bulk.WorkpackageBulk) Voce_piano_economico_prgHome(it.cnr.contab.progettiric00.tabrif.bulk.Voce_piano_economico_prgHome) UserContext(it.cnr.jada.UserContext) java.util(java.util) OggettoBulk(it.cnr.jada.bulk.OggettoBulk) Unita_organizzativaBulk(it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk) ApplicationRuntimeException(it.cnr.jada.comp.ApplicationRuntimeException) Utility(it.cnr.contab.util.Utility) it.cnr.contab.prevent00.bulk(it.cnr.contab.prevent00.bulk) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) Pdg_variazioneHome(it.cnr.contab.pdg00.bulk.Pdg_variazioneHome) Pdg_modulo_costiBulk(it.cnr.contab.prevent01.bulk.Pdg_modulo_costiBulk) SQLException(java.sql.SQLException) it.cnr.contab.config00.pdcfin.bulk(it.cnr.contab.config00.pdcfin.bulk) V_classificazione_vociHome(it.cnr.contab.config00.pdcfin.cla.bulk.V_classificazione_vociHome) Var_stanz_res_rigaHome(it.cnr.contab.varstanz00.bulk.Var_stanz_res_rigaHome) Tipo_variazioneBulk(it.cnr.contab.pdg01.bulk.Tipo_variazioneBulk) FindClause(it.cnr.jada.persistency.sql.FindClause) CNRUserContext(it.cnr.contab.utenze00.bp.CNRUserContext) Configurazione_cnrComponentSession(it.cnr.contab.config00.ejb.Configurazione_cnrComponentSession) WorkpackageHome(it.cnr.contab.config00.latt.bulk.WorkpackageHome) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) ContrattoBulk(it.cnr.contab.config00.contratto.bulk.ContrattoBulk) Var_stanz_resHome(it.cnr.contab.varstanz00.bulk.Var_stanz_resHome) CdrBulk(it.cnr.contab.config00.sto.bulk.CdrBulk) BulkList(it.cnr.jada.bulk.BulkList) Pdg_variazione_riga_gestHome(it.cnr.contab.pdg01.bulk.Pdg_variazione_riga_gestHome) Numerazione_doc_contBulk(it.cnr.contab.doccont00.core.bulk.Numerazione_doc_contBulk) ObbligazioneBulk(it.cnr.contab.doccont00.core.bulk.ObbligazioneBulk) EsercizioHome(it.cnr.contab.config00.esercizio.bulk.EsercizioHome) ComponentException(it.cnr.jada.comp.ComponentException) Ass_pdg_variazione_cdrBulk(it.cnr.contab.pdg00.cdip.bulk.Ass_pdg_variazione_cdrBulk) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) CdrBulk(it.cnr.contab.config00.sto.bulk.CdrBulk) EsercizioBulk(it.cnr.contab.config00.esercizio.bulk.EsercizioBulk) PersistencyException(it.cnr.jada.persistency.PersistencyException) BulkList(it.cnr.jada.bulk.BulkList) WorkpackageBulk(it.cnr.contab.config00.latt.bulk.WorkpackageBulk) CdrHome(it.cnr.contab.config00.sto.bulk.CdrHome) BigDecimal(java.math.BigDecimal) ApplicationException(it.cnr.jada.comp.ApplicationException) ComponentException(it.cnr.jada.comp.ComponentException)

Example 3 with Voce_fBulk

use of it.cnr.contab.config00.pdcfin.bulk.Voce_fBulk in project sigla-main by consiglionazionaledellericerche.

the class ObbligazioneComponent method aggiornaSaldiInModifica.

/**
 * Pre-post-conditions:
 *
 * Nome: Aggiorna saldi in contesto non transazionale
 * Pre:  Un'obbligazione e' stata modificata/eliminata in un contesto non transazionale
 *			La disponibilità di cassa e' già stata verificata
 * Post: Per ogni V_mod_saldi_obbligBulk presente nel database a fronte dell'obbligazione e del suo pg_ver_rec
 *       e' stato richiamato il metodo sulla Component di gestione dei Saldi (SaldoCompoennt) per aggiornare
 *       il saldo del capitolo corrispondente senza effettuare la verifica della disponibilità di cassa; se necessario
 *       anche i saldi relativi ai mandati e al pagato vengono aggiornati.
 *
 * Nome: Aggiorna saldi in contesto transazionale senza verifica disponibilità di cassa sul capitolo
 * Pre:  Un'obbligazione e' stata modificata in un contesto transazionale
 *       L'utente ha già confermato che intende forzare la verifica della disponibilità di cassa sui capitoli interessati dall'obbligazione.
 * Post: Per ogni V_mod_saldi_obbligBulk presente nel database a fronte dell'obbligazione e del suo pg_ver_rec
 *       e' stato richiamato il metodo sulla Component di gestione dei Saldi (SaldoCompoennt) per aggiornare
 *       il saldo del capitolo corrispondente senza effettuare la verifica della disponibilità di cassa
 *
 * Nome: Aggiorna saldi in contesto transazionale con verifica disponibilità di cassa sul capitolo
 * Pre:  Un'obbligazione e' stata modificata in un contesto transazionale
 *       L'utente non ha ancora confermato che intende forzare la verifica della disponibilità di cassa sui capitoli interessati dall'obbligazione.
 * Post: Per ogni V_mod_saldi_obbligBulk presente nel database a fronte dell'obbligazione e del suo pg_ver_rec
 *       e' stato richiamato il metodo sulla Component di gestione dei Saldi (SaldoCompoennt) per aggiornare
 *       il saldo del capitolo corrispondente richiedendo di effettuare la verifica della disponibilità di cassa.
 *
 * @param	userContext	lo UserContext che ha generato la richiesta
 * @param	obbligazione	l'ObbligazioneBulk per cui aggiornare i saldi
 * @param	pg_ver_rec	il "pg_ver_rec" iniziale dell'obbligazione
 * @param	forzaDispCassa il parametro che indica se l'utente ha confermato di forzare il controllo della disp. di cassa e' necessario
 */
private void aggiornaSaldiInModifica(UserContext userContext, ObbligazioneBulk obbligazione, Long pg_ver_rec, Boolean forzaDispCassa) throws it.cnr.jada.persistency.PersistencyException, ComponentException, java.rmi.RemoteException {
    SaldoComponentSession session = createSaldoComponentSession();
    /* in realtà siamo sempre a competenza ma è meglio verificare */
    String ti_competenza_residuo;
    String tipo_imp;
    if (obbligazione.isResiduo())
        ti_competenza_residuo = ReversaleBulk.TIPO_RESIDUO;
    else
        ti_competenza_residuo = ReversaleBulk.TIPO_COMPETENZA;
    List saldiDaAggiornare = ((V_mod_saldi_obbligHome) getHome(userContext, V_mod_saldi_obbligBulk.class)).findModificheSaldiFor(obbligazione, pg_ver_rec);
    if (userContext.isTransactional() && saldiDaAggiornare.size() == 0)
        throw new ApplicationException("Attenzione! I saldi relativi all'impegno " + obbligazione.getEsercizio_originale() + "/" + obbligazione.getPg_obbligazione() + " non possono essere aggiornati perchè l'impegno non e' presente nello storico.");
    for (Iterator i = saldiDaAggiornare.iterator(); i.hasNext(); ) {
        V_mod_saldi_obbligBulk modSaldo = (V_mod_saldi_obbligBulk) i.next();
        if (modSaldo.getIm_delta_voce().compareTo(new BigDecimal(0)) != 0) {
            Voce_fBulk voce = new Voce_fBulk(modSaldo.getCd_voce(), obbligazione.getEsercizio(), modSaldo.getTi_appartenenza(), modSaldo.getTi_gestione());
            /* il check della disponabilità di cassa deve essere eseguito solo se 
			    l'importo delta del saldo e' positivo e
			    l'utente non ha ancora avuto il warning sulla disp.cassa oppure
		 	   l'utente ha avuto il warning sulla disp.cassa e ha risposto no */
            boolean checkDispCassa = modSaldo.getIm_delta_voce().compareTo(new BigDecimal(0)) > 0 && (forzaDispCassa == null || forzaDispCassa != null && !forzaDispCassa.booleanValue());
            session.aggiornaObbligazioniAccertamenti(userContext, voce, obbligazione.getCd_cds(), modSaldo.getIm_delta_voce(), ti_competenza_residuo, checkDispCassa);
            if (modSaldo.getIm_delta_man_voce().compareTo(new BigDecimal(0)) != 0)
                session.aggiornaMandatiReversali(userContext, voce, obbligazione.getCd_cds(), modSaldo.getIm_delta_man_voce(), ti_competenza_residuo, checkDispCassa);
            if (modSaldo.getIm_delta_pag_voce().compareTo(new BigDecimal(0)) != 0)
                session.aggiornaPagamentiIncassi(userContext, voce, obbligazione.getCd_cds(), modSaldo.getIm_delta_pag_voce(), ti_competenza_residuo);
        }
    }
    /*
	* Aggiorno i Saldi per CDR/Linea
	*/
    List saldiDaAggiornareCdrLinea = ((V_mod_saldi_obblig_scad_voceHome) getHome(userContext, V_mod_saldi_obblig_scad_voceBulk.class)).findModificheSaldiFor(obbligazione, pg_ver_rec);
    if (userContext.isTransactional() && saldiDaAggiornareCdrLinea.size() == 0)
        throw new ApplicationException("Attenzione! I saldi relativi all'impegno " + obbligazione.getEsercizio_originale() + "/" + obbligazione.getPg_obbligazione() + " non possono essere aggiornati perchè l'impegno non e' presente nello storico.");
    for (Iterator i = saldiDaAggiornareCdrLinea.iterator(); i.hasNext(); ) {
        V_mod_saldi_obblig_scad_voceBulk modSaldo = (V_mod_saldi_obblig_scad_voceBulk) i.next();
        Voce_fBulk voce = new Voce_fBulk(modSaldo.getCd_voce(), obbligazione.getEsercizio(), modSaldo.getTi_appartenenza(), modSaldo.getTi_gestione());
        /* il check della disponabilità di cassa deve essere eseguito solo se 
			l'importo delta del saldo e' positivo e
			l'utente non ha ancora avuto il warning sulla disp.cassa oppure
		   l'utente ha avuto il warning sulla disp.cassa e ha risposto no */
        boolean checkDispCassa = modSaldo.getIm_delta_voce().compareTo(new BigDecimal(0)) > 0 && (forzaDispCassa == null || forzaDispCassa != null && !forzaDispCassa.booleanValue());
        if (modSaldo.getIm_delta_voce().compareTo(new BigDecimal(0)) != 0) {
            // non deve variare il valore sul campo IM_OBBL_RES_IMP
            if (!obbligazione.isObbligazioneResiduo())
                session.aggiornaObbligazioniAccertamenti(userContext, modSaldo.getCd_centro_responsabilita(), modSaldo.getCd_linea_attivita(), voce, modSaldo.getEsercizio_originale(), modSaldo.getCd_tipo_documento_cont().equals(Numerazione_doc_contBulk.TIPO_OBB_RES_IMPROPRIA) ? Voce_f_saldi_cdr_lineaBulk.TIPO_RESIDUO_IMPROPRIO : Voce_f_saldi_cdr_lineaBulk.TIPO_RESIDUO_PROPRIO, modSaldo.getIm_delta_voce(), modSaldo.getCd_tipo_documento_cont());
        }
        if (modSaldo.getIm_delta_man_voce().compareTo(new BigDecimal(0)) != 0)
            session.aggiornaMandatiReversali(userContext, modSaldo.getCd_centro_responsabilita(), modSaldo.getCd_linea_attivita(), voce, modSaldo.getEsercizio_originale(), modSaldo.getIm_delta_man_voce(), modSaldo.getCd_tipo_documento_cont().equals(Numerazione_doc_contBulk.TIPO_OBB_RES_IMPROPRIA) ? Voce_f_saldi_cdr_lineaBulk.TIPO_RESIDUO_IMPROPRIO : Voce_f_saldi_cdr_lineaBulk.TIPO_RESIDUO_PROPRIO, checkDispCassa);
        if (modSaldo.getIm_delta_pag_voce().compareTo(new BigDecimal(0)) != 0)
            session.aggiornaPagamentiIncassi(userContext, modSaldo.getCd_centro_responsabilita(), modSaldo.getCd_linea_attivita(), voce, modSaldo.getEsercizio_originale(), modSaldo.getIm_delta_pag_voce());
    }
    // aggiorniamo i saldi legati alle modifiche agli impegni residui
    aggiornaSaldiImpegniResiduiPropri(userContext, obbligazione);
    if (obbligazione.isObbligazioneResiduo()) {
        // aggiorniamo il progressivo in definitivo
        Obbligazione_modificaBulk obbMod = ((ObbligazioneResBulk) obbligazione).getObbligazione_modifica();
        if (obbMod != null && obbMod.isTemporaneo()) {
            aggiornaObbligazioneModificaTemporanea(userContext, obbMod);
        }
    }
    checkDispObbligazioniAccertamenti(userContext, obbligazione);
}
Also used : BigDecimal(java.math.BigDecimal) Voce_fBulk(it.cnr.contab.config00.pdcfin.bulk.Voce_fBulk) ApplicationException(it.cnr.jada.comp.ApplicationException) BulkList(it.cnr.jada.bulk.BulkList) SaldoComponentSession(it.cnr.contab.doccont00.ejb.SaldoComponentSession)

Example 4 with Voce_fBulk

use of it.cnr.contab.config00.pdcfin.bulk.Voce_fBulk in project sigla-main by consiglionazionaledellericerche.

the class ObbligazioneComponent method checkDispObbligazioniAccertamenti.

private void checkDispObbligazioniAccertamenti(UserContext userContext, ObbligazioneBulk obbligazione) throws ComponentException {
    BigDecimal importo = Utility.ZERO;
    Obbligazione_scad_voceBulk scad_voceDB;
    Parametri_cdsBulk parametri_cds = null;
    try {
        parametri_cds = (Parametri_cdsBulk) getHome(userContext, Parametri_cdsBulk.class).findByPrimaryKey(new Parametri_cdsBulk(CNRUserContext.getCd_cds(userContext), CNRUserContext.getEsercizio(userContext)));
    } catch (PersistencyException e) {
        throw new ComponentException(e);
    }
    String messaggio = "";
    if (parametri_cds != null && (parametri_cds.getBlocco_impegni_cdr_gae().equals(Parametri_cdsBulk.BLOCCO_IMPEGNI_ERROR) || parametri_cds.getBlocco_impegni_cdr_gae().equals(Parametri_cdsBulk.BLOCCO_IMPEGNI_WARNING))) {
        try {
            SQLBroker broker = getHome(userContext, Obbligazione_scad_voceBulk.class).createBroker(((ObbligazioneHome) getHome(userContext, ObbligazioneBulk.class)).findObbligazione_scad_voceDistinctList(obbligazione));
            while (broker.next()) {
                String cd_voce = (String) broker.fetchPropertyValue("cd_voce", String.class);
                String cd_centro_responsabilita = (String) broker.fetchPropertyValue("cd_centro_responsabilita", String.class);
                String cd_linea_attivita = (String) broker.fetchPropertyValue("cd_linea_attivita", String.class);
                if ((!obbligazione.isCheckDisponibilitaCdrGAEEseguito() || parametri_cds != null && parametri_cds.getBlocco_impegni_cdr_gae().equals(Parametri_cdsBulk.BLOCCO_IMPEGNI_ERROR))) {
                    Voce_fBulk voce = new Voce_fBulk(cd_voce, obbligazione.getEsercizio(), obbligazione.getTi_appartenenza(), obbligazione.getTi_gestione());
                    try {
                        String mess = createSaldoComponentSession().checkDispObbligazioniAccertamenti(userContext, cd_centro_responsabilita, cd_linea_attivita, voce, obbligazione.getEsercizio_originale(), (obbligazione.isObbligazioneResiduo() || obbligazione.isObbligazioneResiduoImproprio()) ? Voce_f_saldi_cdr_lineaBulk.TIPO_RESIDUO_IMPROPRIO : Voce_f_saldi_cdr_lineaBulk.TIPO_COMPETENZA, parametri_cds.getBlocco_impegni_cdr_gae());
                        if (parametri_cds != null && mess != null && parametri_cds.getBlocco_impegni_cdr_gae().equals(Parametri_cdsBulk.BLOCCO_IMPEGNI_ERROR))
                            throw new ApplicationException(mess);
                        if (mess != null)
                            messaggio = messaggio + (messaggio.equals("") ? "" : "<BR>") + mess;
                    } catch (RemoteException e) {
                        throw new ComponentException(e);
                    }
                }
            }
        } catch (IntrospectionException e) {
            throw new ComponentException(e);
        } catch (PersistencyException e) {
            throw new ComponentException(e);
        }
    }
    if (!messaggio.equals("")) {
        if (parametri_cds != null && parametri_cds.getBlocco_impegni_cdr_gae().equals(Parametri_cdsBulk.BLOCCO_IMPEGNI_WARNING))
            throw handleException(new CheckDisponibilitaCdrGAEFailed(messaggio));
    }
}
Also used : ApplicationException(it.cnr.jada.comp.ApplicationException) SQLBroker(it.cnr.jada.persistency.sql.SQLBroker) ComponentException(it.cnr.jada.comp.ComponentException) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) Parametri_cdsBulk(it.cnr.contab.config00.bulk.Parametri_cdsBulk) PersistencyException(it.cnr.jada.persistency.PersistencyException) RemoteException(java.rmi.RemoteException) BigDecimal(java.math.BigDecimal) Voce_fBulk(it.cnr.contab.config00.pdcfin.bulk.Voce_fBulk)

Example 5 with Voce_fBulk

use of it.cnr.contab.config00.pdcfin.bulk.Voce_fBulk in project sigla-main by consiglionazionaledellericerche.

the class ObbligazioneComponent method aggiornaSaldiInInserimento.

/**
 * Pre-post-conditions:
 *
 * Nome: Aggiorna saldi in contesto non transazionale
 * Pre:  Un'obbligazione e' stata creata in un contesto non transazionale
 *			La disponibilità di cassa e' già stata verificata
 * Post: Per ogni Voce del piano presente nell'obbligazione viene richiamato il metodo sulla Component di gestione dei Saldi (SaldoComponent) per incrementare
 *       il saldo del capitolo corrispondente senza effettuare la verifica della disponibilità di cassa.
 *
 * Nome: Aggiorna saldi in contesto transazionale senza verifica disponibilità di cassa sul capitolo
 * Pre:  Un'obbligazione e' stata creata in un contesto transazionale
 *       L'utente ha già confermato che intende forzare la verifica della disponibilità di cassa sui capitoli interessati dall'obbligazione.
 * Post: Per ogni Voce del piano presente nell'obbligazione viene richiamato il metodo sulla Component di gestione dei Saldi (SaldoComponent) per incrementare
 *       il saldo del capitolo corrispondente senza effettuare la verifica della disponibilità di cassa.
 *
 * Nome: Aggiorna saldi in contesto transazionale con verifica disponibilità di cassa sul capitolo
 * Pre:  Un'obbligazione e' stata creata in un contesto transazionale
 *       L'utente non ha ancora confermato che intende forzare la verifica della disponibilità di cassa sui capitoli interessati dall'obbligazione.
 * Post: Per ogni Voce del piano presente nell'obbligazione viene richiamato il metodo sulla Component di gestione dei Saldi (SaldoComponent) per incrementare
 *       il saldo del capitolo corrispondente richiedendo di effettuare la verifica della disponibilità di cassa.
 *
 * @param	userContext	lo UserContext che ha generato la richiesta
 * @param	obbligazione	l'ObbligazioneBulk per cui aggiornare i saldi
 * @param	forzaDispCassa il parametro che indica se l'utente ha confermato di forzare il controllo della disp. di cassa
 */
private void aggiornaSaldiInInserimento(UserContext userContext, ObbligazioneBulk obbligazione, Boolean forzaDispCassa) throws ComponentException, java.rmi.RemoteException {
    SaldoComponentSession session = createSaldoComponentSession();
    PrimaryKeyHashMap saldiDaAggiornare;
    try {
        saldiDaAggiornare = obbligazione.getVociMap(((Parametri_cnrHome) getHome(userContext, Parametri_cnrBulk.class)).isNuovoPdg(userContext));
    } catch (PersistencyException e) {
        throw handleException(e);
    }
    for (Iterator i = saldiDaAggiornare.keySet().iterator(); i.hasNext(); ) {
        IVoceBilancioBulk voce = (IVoceBilancioBulk) i.next();
        BigDecimal im_voce = (BigDecimal) saldiDaAggiornare.get(voce);
        /* il check della disponabilità di cassa deve essere eseguito solo se 
					    l'utente non ha ancora avuto il warning sulla disp.cassa oppure
					    l'utente ha avuto il warning sulla disp.cassa e ha risposto no */
        boolean checkDispCassa = forzaDispCassa == null || forzaDispCassa != null && !forzaDispCassa.booleanValue();
        if (voce instanceof Voce_fBulk)
            session.aggiornaObbligazioniAccertamenti(userContext, (Voce_fBulk) voce, obbligazione.getCd_cds(), im_voce, Voce_f_saldi_cmpBulk.TIPO_COMPETENZA, checkDispCassa);
        /*
		 * Aggiorno i Saldi per CDR/Linea
		 */
        Obbligazione_scad_voceBulk osv;
        Obbligazione_scadenzarioBulk os;
        for (Iterator j = obbligazione.getObbligazione_scadenzarioColl().iterator(); j.hasNext(); ) {
            os = (Obbligazione_scadenzarioBulk) j.next();
            for (int index = os.getObbligazione_scad_voceColl().size() - 1; index >= 0; index--) {
                osv = (Obbligazione_scad_voceBulk) os.getObbligazione_scad_voceColl().get(index);
                session.aggiornaObbligazioniAccertamenti(userContext, osv.getCd_centro_responsabilita(), osv.getCd_linea_attivita(), voce, obbligazione.getEsercizio_originale(), obbligazione.isObbligazioneResiduoImproprio() ? Voce_f_saldi_cdr_lineaBulk.TIPO_RESIDUO_IMPROPRIO : Voce_f_saldi_cdr_lineaBulk.TIPO_RESIDUO_PROPRIO, osv.getIm_voce(), obbligazione.getCd_tipo_documento_cont());
            }
        }
    }
    checkDispObbligazioniAccertamenti(userContext, obbligazione);
}
Also used : Parametri_cnrHome(it.cnr.contab.config00.bulk.Parametri_cnrHome) IVoceBilancioBulk(it.cnr.contab.config00.pdcfin.bulk.IVoceBilancioBulk) BigDecimal(java.math.BigDecimal) Voce_fBulk(it.cnr.contab.config00.pdcfin.bulk.Voce_fBulk) PersistencyException(it.cnr.jada.persistency.PersistencyException) SaldoComponentSession(it.cnr.contab.doccont00.ejb.SaldoComponentSession) PrimaryKeyHashMap(it.cnr.jada.bulk.PrimaryKeyHashMap) Parametri_cnrBulk(it.cnr.contab.config00.bulk.Parametri_cnrBulk)

Aggregations

Voce_fBulk (it.cnr.contab.config00.pdcfin.bulk.Voce_fBulk)45 PersistencyException (it.cnr.jada.persistency.PersistencyException)36 ApplicationException (it.cnr.jada.comp.ApplicationException)35 ComponentException (it.cnr.jada.comp.ComponentException)32 IntrospectionException (it.cnr.jada.persistency.IntrospectionException)28 BigDecimal (java.math.BigDecimal)24 SQLException (java.sql.SQLException)21 Parametri_cnrBulk (it.cnr.contab.config00.bulk.Parametri_cnrBulk)18 ApplicationRuntimeException (it.cnr.jada.comp.ApplicationRuntimeException)17 RemoteException (java.rmi.RemoteException)16 Iterator (java.util.Iterator)16 Elemento_voceBulk (it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk)15 IVoceBilancioBulk (it.cnr.contab.config00.pdcfin.bulk.IVoceBilancioBulk)15 BulkList (it.cnr.jada.bulk.BulkList)15 Parametri_cnrHome (it.cnr.contab.config00.bulk.Parametri_cnrHome)13 WorkpackageBulk (it.cnr.contab.config00.latt.bulk.WorkpackageBulk)13 CdrBulk (it.cnr.contab.config00.sto.bulk.CdrBulk)12 SaldoComponentSession (it.cnr.contab.doccont00.ejb.SaldoComponentSession)12 LoggableStatement (it.cnr.jada.persistency.sql.LoggableStatement)11 EJBException (javax.ejb.EJBException)11