Search in sources :

Example 1 with ApplicationMessageFormatException

use of it.cnr.contab.util.ApplicationMessageFormatException in project sigla-main by consiglionazionaledellericerche.

the class ObbligazioneResComponent method calcolaPercentualeImputazioneObbligazione.

private ObbligazioneBulk calcolaPercentualeImputazioneObbligazione(UserContext aUC, ObbligazioneBulk obbligazione, String tipoErrore, StringBuffer errControllo) throws ComponentException {
    try {
        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();
        boolean cdsModObblResImporto = isCdsModObblResImporto(aUC, obbligazione.getCd_cds());
        // recupero le percentuali di imputazione finanziaria per le linee di attivita da pdg
        // 100 - percentuali specificate x linee att non da PDG
        PrimaryKeyHashtable prcImputazioneFinanziariaTable = getOldRipartizioneCdrVoceLinea(aUC, obbligazione);
        if (obbligazione.getFl_calcolo_automatico().booleanValue()) {
            if (obbligazione.getIm_obbligazione() == null || obbligazione.getIm_obbligazione().compareTo(Utility.ZERO) <= 0)
                throw new ApplicationException("Non è possibile effettuare il calcolo automatico su una obbligazione con importo nullo.");
            for (Enumeration e = prcImputazioneFinanziariaTable.keys(); e.hasMoreElements(); ) {
                key = (Obbligazione_scad_voceBulk) e.nextElement();
                totaleScad = (BigDecimal) prcImputazioneFinanziariaTable.get(key);
                percentuale = totaleScad.multiply(new BigDecimal(100)).divide(obbligazione.getIm_obbligazione(), 100, BigDecimal.ROUND_HALF_UP);
                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())) {
                            osv.setToBeUpdated();
                            osv.setIm_voce(osv.getObbligazione_scadenzario().getIm_scadenza().multiply(percentuale).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP));
                            break;
                        }
                    }
                }
            }
        }
        boolean trovato = false;
        // verifico che nella nuova Obbligazione non ci siano linee o voci nuove rispetto alla precedente
        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();
                trovato = false;
                for (Enumeration e = prcImputazioneFinanziariaTable.keys(); e.hasMoreElements(); ) {
                    key = (Obbligazione_scad_voceBulk) e.nextElement();
                    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())) {
                        trovato = true;
                        break;
                    }
                }
                if (!trovato)
                    throw new ApplicationException("Non è possibile aggiungere nuove linee di attività/voci (" + osv.getCd_linea_attivita() + "/" + osv.getCd_voce() + ") ai residui propri.");
            }
        }
        // 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) {
                // se modifico l'importo del residuo devo controllare che non sia bloccata la creazione/modifica del residuo se attiva la gestione del limite sui residui sia sul CDS che sulla voce e per la natura e tipo
                // finanziamento indicato in CONFIGURAZIONE_CNR
                WorkpackageBulk latt = ((WorkpackageHome) getHome(aUC, WorkpackageBulk.class)).searchGAECompleta(aUC, CNRUserContext.getEsercizio(aUC), key.getCd_centro_responsabilita(), key.getCd_linea_attivita());
                if (!UtenteBulk.isAbilitatoSbloccoImpegni(aUC))
                    Utility.createSaldoComponentSession().checkBloccoImpegniNatfin(aUC, latt, obbligazione.getElemento_voce(), obbligazione.isObbligazioneResiduo() ? ObbligazioneBulk.TIPO_RESIDUO_PROPRIO : ObbligazioneBulk.TIPO_RESIDUO_IMPROPRIO);
                // se aumento l'importo del residuo devo controllare che il progetto non sia scaduto
                if (totaleScad.compareTo((BigDecimal) prcImputazioneFinanziariaTable.get(key)) > 0 && Utility.createParametriEnteComponentSession().isProgettoPianoEconomicoEnabled(aUC, CNRUserContext.getEsercizio(aUC))) {
                    ProgettoBulk progetto = latt.getProgetto();
                    Optional.ofNullable(progetto.getOtherField()).filter(el -> el.isStatoApprovato() || el.isStatoChiuso()).orElseThrow(() -> new ApplicationException("Attenzione! Aumento importo GAE " + latt.getCd_linea_attivita() + " non consentito. " + "Il progetto associato " + progetto.getCd_progetto() + " non risulta in stato Approvato o Chiuso."));
                    if (progetto.isDatePianoEconomicoRequired()) {
                        // Negli impegni controllare la più piccola data tra data inizio progetto e data stipula contratto definitivo
                        ProgettoHome progettoHome = (ProgettoHome) getHome(aUC, ProgettoBulk.class);
                        java.util.Collection<ContrattoBulk> contratti = progettoHome.findContratti(progetto.getPg_progetto());
                        Optional<ContrattoBulk> optContratto = contratti.stream().filter(el -> el.isAttivo() || el.isAttivo_e_Passivo()).min((p1, p2) -> p1.getDt_stipula().compareTo(p2.getDt_stipula())).filter(el -> el.getDt_stipula().before(progetto.getOtherField().getDtInizio()));
                        if (optContratto.isPresent())
                            optContratto.filter(ctr -> ctr.getDt_stipula().after(obbligazione.getDt_registrazione())).ifPresent(ctr -> {
                                throw new ApplicationRuntimeException("Attenzione! Aumento importo GAE " + latt.getCd_linea_attivita() + " non consentito. " + "La data stipula (" + new java.text.SimpleDateFormat("dd/MM/yyyy").format(ctr.getDt_stipula()) + ") del primo contratto " + ctr.getEsercizio() + "/" + ctr.getStato() + "/" + ctr.getPg_contratto() + " associato al progetto " + progetto.getCd_progetto() + " è successiva " + "rispetto alla data di registrazione dell'obbligazione (" + new java.text.SimpleDateFormat("dd/MM/yyyy").format(obbligazione.getDt_registrazione()) + ").");
                            });
                        else
                            Optional.ofNullable(progetto.getOtherField().getDtInizio()).filter(dt -> !dt.after(obbligazione.getDt_registrazione())).orElseThrow(() -> new ApplicationException("Attenzione! Aumento importo GAE " + latt.getCd_linea_attivita() + " non consentito. " + "La data inizio (" + new java.text.SimpleDateFormat("dd/MM/yyyy").format(progetto.getOtherField().getDtInizio()) + ") del progetto " + progetto.getCd_progetto() + " associato è successiva " + "rispetto alla data di registrazione dell'obbligazione (" + new java.text.SimpleDateFormat("dd/MM/yyyy").format(obbligazione.getDt_registrazione()) + ")."));
                    }
                    LocalDate localDateFineProgetto = Optional.ofNullable(progetto.getOtherField().getDtProroga()).orElse(Optional.ofNullable(progetto.getOtherField().getDtFine()).orElse(DateUtils.firstDateOfTheYear(3000))).toLocalDateTime().toLocalDate();
                    int ggProroga = Optional.ofNullable(obbligazione.getElemento_voce()).flatMap(el -> {
                        if (obbligazione.isCompetenza())
                            return Optional.ofNullable(el.getGg_deroga_obbl_comp_prg_scad());
                        else
                            return Optional.ofNullable(el.getGg_deroga_obbl_res_prg_scad());
                    }).filter(el -> el.compareTo(0) > 0).orElse(0);
                    localDateFineProgetto = localDateFineProgetto.plusDays(ggProroga);
                    if (localDateFineProgetto.isBefore(EJBCommonServices.getServerDate().toLocalDateTime().toLocalDate()))
                        throw new ApplicationMessageFormatException("Attenzione! Aumento importo GAE {0} non consentito. " + "La data fine/proroga del progetto {1} {2} ({3}) è precedente rispetto alla data odierna.", latt.getCd_linea_attivita(), progetto.getCd_progetto(), (ggProroga > 0 ? ", aumentata di " + ggProroga + " giorni," : ""), localDateFineProgetto.format(DateTimeFormatter.ofPattern("dd/MM/yyyy")));
                }
                if (!obbligazione.getFl_calcolo_automatico().booleanValue()) {
                    String errore = "L'importo (" + new it.cnr.contab.util.EuroFormat().format(totaleScad) + ") assegnato alla GAE " + key.getCd_linea_attivita() + " e alla voce " + obbligazione.getElemento_voce().getCd_elemento_voce() + " è " + new String(totaleScad.compareTo((BigDecimal) prcImputazioneFinanziariaTable.get(key)) == 1 ? "maggiore" : "minore") + " di " + new it.cnr.contab.util.EuroFormat().format(totaleScad.subtract((BigDecimal) prcImputazioneFinanziariaTable.get(key)).abs()) + " rispetto al valore originario dell'impegno residuo proprio (" + new it.cnr.contab.util.EuroFormat().format((BigDecimal) prcImputazioneFinanziariaTable.get(key)) + ")";
                    // un movimento di modifica altrimenti è errore bloccante
                    if (totaleScad.subtract((BigDecimal) prcImputazioneFinanziariaTable.get(key)).compareTo(Utility.ZERO) < 0) {
                        // oppure nessun errore
                        if (tipoErrore.equals(TIPO_ERRORE_CONTROLLO)) {
                            errControllo.append(errore);
                            return obbligazione;
                        }
                    } else if (totaleScad.subtract((BigDecimal) prcImputazioneFinanziariaTable.get(key)).compareTo(Utility.ZERO) > 0) {
                        // oppure nessun errore
                        if (cdsModObblResImporto) {
                            if (tipoErrore.equals(TIPO_ERRORE_CONTROLLO)) {
                                errControllo.append(errore);
                                return obbligazione;
                            }
                        } else
                            throw new ApplicationException(errore);
                    } else
                        throw new ApplicationException(errore);
                } else // }
                {
                    diffScad = totaleScad.subtract((BigDecimal) prcImputazioneFinanziariaTable.get(key));
                    for (Iterator s = obbligazione.getObbligazione_scadenzarioColl().iterator(); s.hasNext() && diffScad.compareTo(Utility.ZERO) != 0; ) {
                        os = (Obbligazione_scadenzarioBulk) s.next();
                        if (os.getIm_associato_doc_amm().compareTo(Utility.ZERO) == 0) {
                            for (Iterator d = os.getObbligazione_scad_voceColl().iterator(); d.hasNext() && diffScad.compareTo(Utility.ZERO) != 0; ) {
                                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())) {
                                    if (osv.getIm_voce().subtract(diffScad).compareTo(Utility.ZERO) == 1) {
                                        osv.setToBeUpdated();
                                        osv.setIm_voce(osv.getIm_voce().subtract(diffScad));
                                        diffScad = Utility.ZERO;
                                    } else {
                                        osv.setToBeUpdated();
                                        osv.setIm_voce(Utility.ZERO);
                                        diffScad = diffScad.subtract(osv.getIm_voce());
                                    }
                                }
                            }
                        }
                    }
                    if (diffScad.compareTo(Utility.ZERO) != 0)
                        throw new ApplicationException("Si è verificato un errore durante la ripartizione dell'importo assegnato alla GAE " + key.getCd_linea_attivita() + " e alla voce " + obbligazione.getElemento_voce().getCd_elemento_voce() + ". Procedere con l'imputazione manuale.");
                }
            }
        }
        return obbligazione;
    } catch (Exception ex) {
        throw handleException(ex);
    }
}
Also used : UserContext(it.cnr.jada.UserContext) OggettoBulk(it.cnr.jada.bulk.OggettoBulk) Enumeration(java.util.Enumeration) PrimaryKeyHashtable(it.cnr.jada.bulk.PrimaryKeyHashtable) ApplicationRuntimeException(it.cnr.jada.comp.ApplicationRuntimeException) Parametri_cdsBulk(it.cnr.contab.config00.bulk.Parametri_cdsBulk) ProgettoHome(it.cnr.contab.progettiric00.core.bulk.ProgettoHome) Utility(it.cnr.contab.util.Utility) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) Configurazione_cnrBulk(it.cnr.contab.config00.bulk.Configurazione_cnrBulk) BigDecimal(java.math.BigDecimal) Calendar(java.util.Calendar) Obbligazione_modificaBulk(it.cnr.contab.doccont00.core.bulk.Obbligazione_modificaBulk) Obbligazione_scad_voceBulk(it.cnr.contab.doccont00.core.bulk.Obbligazione_scad_voceBulk) DateUtils(it.cnr.jada.util.DateUtils) Obbligazione_mod_voceBulk(it.cnr.contab.doccont00.core.bulk.Obbligazione_mod_voceBulk) CNRUserContext(it.cnr.contab.utenze00.bp.CNRUserContext) WorkpackageHome(it.cnr.contab.config00.latt.bulk.WorkpackageHome) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) GregorianCalendar(java.util.GregorianCalendar) Iterator(java.util.Iterator) UtenteBulk(it.cnr.contab.utenze00.bulk.UtenteBulk) ContrattoBulk(it.cnr.contab.config00.contratto.bulk.ContrattoBulk) BulkList(it.cnr.jada.bulk.BulkList) EJBCommonServices(it.cnr.jada.util.ejb.EJBCommonServices) Elemento_voceBulk(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk) ProgettoBulk(it.cnr.contab.progettiric00.core.bulk.ProgettoBulk) ObbligazioneBulk(it.cnr.contab.doccont00.core.bulk.ObbligazioneBulk) LocalDate(java.time.LocalDate) DateTimeFormatter(java.time.format.DateTimeFormatter) WorkpackageBulk(it.cnr.contab.config00.latt.bulk.WorkpackageBulk) Optional(java.util.Optional) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) Obbligazione_scadenzarioBulk(it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk) ComponentException(it.cnr.jada.comp.ComponentException) Obbligazione_scad_voceBulk(it.cnr.contab.doccont00.core.bulk.Obbligazione_scad_voceBulk) ProgettoBulk(it.cnr.contab.progettiric00.core.bulk.ProgettoBulk) WorkpackageHome(it.cnr.contab.config00.latt.bulk.WorkpackageHome) LocalDate(java.time.LocalDate) Iterator(java.util.Iterator) UserContext(it.cnr.jada.UserContext) CNRUserContext(it.cnr.contab.utenze00.bp.CNRUserContext) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) WorkpackageBulk(it.cnr.contab.config00.latt.bulk.WorkpackageBulk) Enumeration(java.util.Enumeration) ContrattoBulk(it.cnr.contab.config00.contratto.bulk.ContrattoBulk) BigDecimal(java.math.BigDecimal) ApplicationRuntimeException(it.cnr.jada.comp.ApplicationRuntimeException) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) ComponentException(it.cnr.jada.comp.ComponentException) ApplicationException(it.cnr.jada.comp.ApplicationException) ProgettoHome(it.cnr.contab.progettiric00.core.bulk.ProgettoHome) ApplicationRuntimeException(it.cnr.jada.comp.ApplicationRuntimeException) PrimaryKeyHashtable(it.cnr.jada.bulk.PrimaryKeyHashtable) Obbligazione_scadenzarioBulk(it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk)

Example 2 with ApplicationMessageFormatException

use of it.cnr.contab.util.ApplicationMessageFormatException in project sigla-main by consiglionazionaledellericerche.

the class FatturaPassivaComponent method validazioneComune.

private void validazioneComune(UserContext aUC, Fattura_passivaBulk fatturaPassiva) throws ComponentException {
    if (!verificaEsistenzaSezionalePer(aUC, fatturaPassiva)) {
        throw new ApplicationMessageFormatException("Attenzione: non è stato definito un sezionale per le {0} e il tipo sezionale '{1}'!", fatturaPassiva.getDescrizioneEntitaPlurale(), Optional.ofNullable(fatturaPassiva).flatMap(fattura_passivaBulk -> Optional.ofNullable(fattura_passivaBulk.getTipo_sezionale())).flatMap(tipo_sezionaleBulk -> Optional.ofNullable(tipo_sezionaleBulk.getDs_tipo_sezionale())).orElse("NON DEFINITO"));
    }
    try {
        fatturaPassiva.validateDate();
        // quella inserita in configurazione
        if (fatturaPassiva.getFl_liquidazione_differita() && fatturaPassiva.getDt_fattura_fornitore() != null) {
            java.sql.Timestamp data_limite;
            java.sql.Timestamp data_limite_sup;
            try {
                data_limite = ((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)).getDt01(aUC, new Integer(0), "*", "COSTANTI", "LIMITE_CREAZIONE_FATT_PASS_ES_DIF");
                data_limite_sup = ((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)).getDt02(aUC, new Integer(0), "*", "COSTANTI", "LIMITE_CREAZIONE_FATT_PASS_ES_DIF");
            } catch (RemoteException e) {
                throw handleException(e);
            }
            if (fatturaPassiva.getDt_fattura_fornitore().compareTo(data_limite) < 0 || fatturaPassiva.getDt_fattura_fornitore().compareTo(data_limite_sup) > 0) {
                fatturaPassiva.setFl_liquidazione_differita(false);
                throw new it.cnr.jada.comp.ApplicationException("Non è possibile indicare la liquidazione differita con la data emissione inserita.");
            }
        }
        // Verifica la validità della data di registrazione rispetto all'ultima
        // data di stampa registri IVA
        callVerifyDataRegistrazione(aUC, fatturaPassiva);
        // Verifica che il documento rispetti la sequenza data/numero
        // di registrazione
        validaSequenceDateNumber(aUC, fatturaPassiva);
        // Controllo date competenza COGE
        fatturaPassiva.validaDateCompetenza();
        // r.p. 17/09/2015 controllo non ritenuto utile
        // competenze omogenee per dettagli collegate alla stessa scadenza
        // controllaCompetenzaCOGEDettagli(aUC, fatturaPassiva);
        validateFornitore(aUC, fatturaPassiva);
    } catch (it.cnr.jada.bulk.ValidationException e) {
        throw new it.cnr.jada.comp.ApplicationException(e.getMessage());
    }
    Fattura_passivaBulk original = null;
    try {
        original = (Fattura_passivaBulk) getHome(aUC, fatturaPassiva, null, "none").findByPrimaryKey(fatturaPassiva);
    } catch (it.cnr.jada.persistency.PersistencyException e) {
        throw handleException(fatturaPassiva, e);
    }
    if (original != null) {
        if (fatturaPassiva.isStampataSuRegistroIVA() || fatturaPassiva.getProgr_univoco() != null) {
            if (!original.getDt_registrazione().equals(fatturaPassiva.getDt_registrazione()))
                throw new it.cnr.jada.comp.ApplicationException("Attenzione: non è possibile modificare la data registrazione della " + fatturaPassiva.getDescrizioneEntita() + " o della sua autofattura (se esiste) quando è presente sui registri.");
            if (fatturaPassiva.isStampataSuRegistroIVA()) {
                if (!original.getCd_tipo_sezionale().equalsIgnoreCase(fatturaPassiva.getCd_tipo_sezionale()) && hasFatturaPassivaARowNotStateI(fatturaPassiva))
                    throw new it.cnr.jada.comp.ApplicationException("Attenzione: non è possibile modificare il sezionale di " + fatturaPassiva.getDescrizioneEntitaPlurale() + " o della relativa autofattura (se esiste) parzialmente contabilizzate e stato IVA B o C.");
            }
            if (original.getFl_autofattura() != null && !original.getFl_autofattura().equals(fatturaPassiva.getFl_autofattura()))
                throw new it.cnr.jada.comp.ApplicationException("Attenzione: non è possibile modificare il tipo di sezionale o la tipologia dei dettagli (bene/servizio) per " + fatturaPassiva.getDescrizioneEntitaPlurale() + " o per la relativa autofattura (se esiste) in stato IVA B o C.");
            if (fatturaPassiva.isStampataSuRegistroIVA() || fatturaPassiva.isElettronica() || fatturaPassiva.isGenerataDaCompenso())
                if (original.getIm_totale_fattura().compareTo(fatturaPassiva.getIm_totale_fattura()) != 0)
                    throw new it.cnr.jada.comp.ApplicationException("Attenzione: non si può modificare il totale fattura quando la fattura è elettronica e/o presente sui sezionali iva");
            if (!original.getNr_fattura_fornitore().equalsIgnoreCase(fatturaPassiva.getNr_fattura_fornitore()) || !original.getDt_fattura_fornitore().equals(fatturaPassiva.getDt_fattura_fornitore()) || // original.getIm_totale_fattura().compareTo(fatturaPassiva.getIm_totale_fattura()) != 0 ||
            !original.getFl_intra_ue().equals(fatturaPassiva.getFl_intra_ue()) || !original.getFl_extra_ue().equals(fatturaPassiva.getFl_extra_ue()) || !original.getFl_san_marino_con_iva().equals(fatturaPassiva.getFl_san_marino_con_iva()) || // ||
            !original.getFl_san_marino_senza_iva().equals(fatturaPassiva.getFl_san_marino_senza_iva()))
                // !original.getCd_tipo_sezionale().equalsIgnoreCase(fatturaPassiva.getCd_tipo_sezionale()))
                throw new it.cnr.jada.comp.ApplicationException("Attenzione: non si possono modificare campi relativi alla " + fatturaPassiva.getDescrizioneEntita() + " del fornitore quando la fattura o la relativa autofattura (se esiste).");
            if (!original.getCd_divisa().equals(fatturaPassiva.getCd_divisa()) || original.getCambio().compareTo(fatturaPassiva.getCambio()) != 0)
                throw new it.cnr.jada.comp.ApplicationException("Attenzione: non si possono modificare i campi della valuta o del cambio della " + fatturaPassiva.getDescrizioneEntita());
            if (!original.getCd_terzo().equals(fatturaPassiva.getCd_terzo()))
                throw new it.cnr.jada.comp.ApplicationException("Attenzione: non si possono modificare campi relativi al fornitore della " + fatturaPassiva.getDescrizioneEntita());
        }
        if (!fatturaPassiva.isStampataSuRegistroIVA() && fatturaPassiva.getProgr_univoco() == null && fatturaPassiva.isPagata() && !original.getCd_terzo().equals(fatturaPassiva.getCd_terzo()))
            throw new it.cnr.jada.comp.ApplicationException("Attenzione: non si possono modificare campi relativi al fornitore della " + fatturaPassiva.getDescrizioneEntita());
        // se già collegate
        if (fatturaPassiva instanceof Fattura_passiva_IBulk && (original.getFl_extra_ue() != null && original.getFl_extra_ue().booleanValue() && Fattura_passivaBulk.FATTURA_DI_BENI.equalsIgnoreCase(original.getTi_bene_servizio()))) {
            if ((fatturaPassiva.getFl_extra_ue() == null || !fatturaPassiva.getFl_extra_ue().booleanValue()) || !Fattura_passivaBulk.FATTURA_DI_BENI.equalsIgnoreCase(fatturaPassiva.getTi_bene_servizio())) {
                Fattura_passiva_IBulk fp = (Fattura_passiva_IBulk) fatturaPassiva;
                Fattura_passiva_IHome fpHome = (Fattura_passiva_IHome) getHome(aUC, fatturaPassiva);
                try {
                    if (fpHome.selectBolleDoganaliPer(fp).executeExistsQuery(getConnection(aUC)) || fpHome.selectSpedizionieriPer(fp).executeExistsQuery(getConnection(aUC)))
                        throw new ApplicationException("La fattura estera è collegata a fatture di tipo spedizioniere o bolle doganali. I cambiamenti apportati non sono validi. Operazione annullata!");
                } catch (SQLException e) {
                    throw handleException(fp, e);
                }
            }
        }
        // non posso cambiare tipo
        if (original.isEstera() && !fatturaPassiva.isEstera() && fatturaPassiva.getPg_lettera() != null)
            throw new ApplicationException("La fattura era estera: i cambiamenti apportati non sono validi perchè è già stato emesso un documento 1210. Operazione annullata!");
        java.util.List originalRows = null;
        try {
            Fattura_passiva_rigaBulk clause = null;
            if (fatturaPassiva instanceof Fattura_passiva_IBulk)
                clause = new Fattura_passiva_rigaIBulk();
            else if (fatturaPassiva instanceof Nota_di_creditoBulk)
                clause = new Nota_di_credito_rigaBulk();
            else
                clause = new Nota_di_debito_rigaBulk();
            clause.setFattura_passiva(original);
            originalRows = getHome(aUC, clause, null, "solo_voce_iva").find(clause);
            getHomeCache(aUC).fetchAll(aUC);
        } catch (it.cnr.jada.persistency.PersistencyException e) {
            throw handleException(fatturaPassiva, e);
        }
        // Modificato a seguito richiesta 423
        if (originalRows != null && (fatturaPassiva.isStampataSuRegistroIVA() || fatturaPassiva.getProgr_univoco() != null)) {
            // if (!(fatturaPassiva instanceof Fattura_passiva_IBulk) &&
            // originalRows.size() != fatturaPassiva.getFattura_passiva_dettColl().size())
            // throw new it.cnr.jada.comp.ApplicationException("Attenzione: non è possibile aggiungere, eliminare o modificare i dettagli quando lo stato IVA della " + fatturaPassiva.getDescrizioneEntita() + " è B o C.");
            // else {
            original.setFattura_passiva_dettColl(new BulkList(originalRows));
            for (Iterator i = original.getFattura_passiva_dettColl().iterator(); i.hasNext(); ) ((Fattura_passiva_rigaBulk) i.next()).calcolaCampiDiRiga();
            original.setChangeOperationOn(original.getValuta());
            validaConConsuntivi(aUC, original, fatturaPassiva);
        // }
        }
    }
}
Also used : it.cnr.contab.docamm00.intrastat.bulk(it.cnr.contab.docamm00.intrastat.bulk) EsercizioBulk(it.cnr.contab.config00.esercizio.bulk.EsercizioBulk) it.cnr.contab.anagraf00.core.bulk(it.cnr.contab.anagraf00.core.bulk) LoggerFactory(org.slf4j.LoggerFactory) BigDecimal(java.math.BigDecimal) AnagraficoComponentSession(it.cnr.contab.anagraf00.ejb.AnagraficoComponentSession) Inventario_beniComponentSession(it.cnr.contab.inventario00.ejb.Inventario_beniComponentSession) it.cnr.contab.docamm00.fatturapa.bulk(it.cnr.contab.docamm00.fatturapa.bulk) it.cnr.contab.docamm00.tabrif.bulk(it.cnr.contab.docamm00.tabrif.bulk) AccertamentoAbstractComponentSession(it.cnr.contab.doccont00.ejb.AccertamentoAbstractComponentSession) Timestamp(java.sql.Timestamp) it.cnr.contab.config00.bulk(it.cnr.contab.config00.bulk) Unita_organizzativa_enteHome(it.cnr.contab.config00.sto.bulk.Unita_organizzativa_enteHome) it.cnr.contab.docamm00.docs.bulk(it.cnr.contab.docamm00.docs.bulk) EJBCommonServices(it.cnr.jada.util.ejb.EJBCommonServices) Collectors(java.util.stream.Collectors) Elemento_voceBulk(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk) FileNotFoundException(java.io.FileNotFoundException) Serializable(java.io.Serializable) RemoteException(java.rmi.RemoteException) EJBException(javax.ejb.EJBException) DetailedRuntimeException(it.cnr.jada.DetailedRuntimeException) Parametri_cnrComponentSession(it.cnr.contab.config00.ejb.Parametri_cnrComponentSession) RicercaTrovato(it.cnr.contab.docamm00.client.RicercaTrovato) NazioneBulk(it.cnr.contab.anagraf00.tabter.bulk.NazioneBulk) UserContext(it.cnr.jada.UserContext) it.cnr.jada.persistency.sql(it.cnr.jada.persistency.sql) RemoveAccent(it.cnr.contab.util.RemoveAccent) java.util(java.util) Utility(it.cnr.contab.util.Utility) it.cnr.contab.doccont00.core.bulk(it.cnr.contab.doccont00.core.bulk) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) ScritturaPartitaDoppiaFromDocumentoComponent(it.cnr.contab.coepcoan00.comp.ScritturaPartitaDoppiaFromDocumentoComponent) ContrattoHome(it.cnr.contab.config00.contratto.bulk.ContrattoHome) SQLException(java.sql.SQLException) Ass_contratto_uoBulk(it.cnr.contab.config00.contratto.bulk.Ass_contratto_uoBulk) ProgressiviAmmComponentSession(it.cnr.contab.docamm00.ejb.ProgressiviAmmComponentSession) it.cnr.contab.inventario01.bulk(it.cnr.contab.inventario01.bulk) EnteBulk(it.cnr.contab.config00.sto.bulk.EnteBulk) OptionRequestParameter(it.cnr.contab.doccont00.core.bulk.OptionRequestParameter) RemoteIterator(it.cnr.jada.util.RemoteIterator) Elemento_voceHome(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceHome) TipoIVA(it.cnr.contab.util.enumeration.TipoIVA) DateUtils(it.cnr.jada.util.DateUtils) DocumentoContabileComponentSession(it.cnr.contab.doccont00.comp.DocumentoContabileComponentSession) CNRUserContext(it.cnr.contab.utenze00.bp.CNRUserContext) Configurazione_cnrComponentSession(it.cnr.contab.config00.ejb.Configurazione_cnrComponentSession) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) it.cnr.contab.ordmag.ordini.bulk(it.cnr.contab.ordmag.ordini.bulk) Logger(org.slf4j.Logger) Rif_modalita_pagamentoBulk(it.cnr.contab.anagraf00.tabrif.bulk.Rif_modalita_pagamentoBulk) VoceIvaComponentSession(it.cnr.contab.docamm00.ejb.VoceIvaComponentSession) FatturaNonTrovataException(it.cnr.jada.comp.FatturaNonTrovataException) ContrattoBulk(it.cnr.contab.config00.contratto.bulk.ContrattoBulk) AutoFatturaComponentSession(it.cnr.contab.docamm00.ejb.AutoFatturaComponentSession) ObbligazioneAbstractComponentSession(it.cnr.contab.doccont00.ejb.ObbligazioneAbstractComponentSession) IOException(java.io.IOException) RiportoDocAmmComponentSession(it.cnr.contab.docamm00.ejb.RiportoDocAmmComponentSession) Unita_organizzativa_enteBulk(it.cnr.contab.config00.sto.bulk.Unita_organizzativa_enteBulk) StorageFolderFatturaPassiva(it.cnr.contab.docamm00.storage.StorageFolderFatturaPassiva) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) it.cnr.jada.bulk(it.cnr.jada.bulk) it.cnr.contab.inventario00.docs.bulk(it.cnr.contab.inventario00.docs.bulk) ComponentException(it.cnr.jada.comp.ComponentException) SQLException(java.sql.SQLException) it.cnr.jada.persistency.sql(it.cnr.jada.persistency.sql) RemoteIterator(it.cnr.jada.util.RemoteIterator) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) Timestamp(java.sql.Timestamp) ApplicationException(it.cnr.jada.comp.ApplicationException) java.util(java.util) RemoteException(java.rmi.RemoteException) it.cnr.contab.docamm00.intrastat.bulk(it.cnr.contab.docamm00.intrastat.bulk) it.cnr.contab.anagraf00.core.bulk(it.cnr.contab.anagraf00.core.bulk) it.cnr.contab.docamm00.fatturapa.bulk(it.cnr.contab.docamm00.fatturapa.bulk) it.cnr.contab.docamm00.tabrif.bulk(it.cnr.contab.docamm00.tabrif.bulk) it.cnr.contab.config00.bulk(it.cnr.contab.config00.bulk) it.cnr.contab.docamm00.docs.bulk(it.cnr.contab.docamm00.docs.bulk) it.cnr.contab.doccont00.core.bulk(it.cnr.contab.doccont00.core.bulk) it.cnr.contab.inventario01.bulk(it.cnr.contab.inventario01.bulk) it.cnr.contab.ordmag.ordini.bulk(it.cnr.contab.ordmag.ordini.bulk) it.cnr.jada.bulk(it.cnr.jada.bulk) it.cnr.contab.inventario00.docs.bulk(it.cnr.contab.inventario00.docs.bulk)

Example 3 with ApplicationMessageFormatException

use of it.cnr.contab.util.ApplicationMessageFormatException in project sigla-main by consiglionazionaledellericerche.

the class CRUDFatturaPassivaElettronicaAction method doCompilaFattura.

public Forward doCompilaFattura(ActionContext context) throws FillException, BusinessProcessException {
    try {
        CRUDFatturaPassivaElettronicaBP fatturaPassivaElettronicaBP = (CRUDFatturaPassivaElettronicaBP) context.getBusinessProcess();
        DocumentoEleTestataBulk bulk = (DocumentoEleTestataBulk) fatturaPassivaElettronicaBP.getModel();
        BigDecimal tot_riepilogo = BigDecimal.ZERO;
        if (!bulk.isRifiutata() && bulk.isFromInizializzaBulkPerModifica()) {
            if (bulk.isTipoDocumentoInAttesaFatturazioneElettronica()) {
                throw new ApplicationMessageFormatException("Il documento ha un tipo '{0}' che non è possibile gestire. Contattare l'helpdesk per maggiori chiarimenti.", DocumentoEleTestataBulk.tiTipoDocumentoKeys.get(bulk.getTipoDocumento()));
            }
        }
        boolean hasAccesso = ((it.cnr.contab.utente00.nav.ejb.GestioneLoginComponentSession) it.cnr.jada.util.ejb.EJBCommonServices.createEJB("CNRUTENZE00_NAV_EJB_GestioneLoginComponentSession")).controllaAccesso(context.getUserContext(), "AMMFATTURDOCSFATPASA");
        if (bulk.getImportoDocumento() == null) {
            fatturaPassivaElettronicaBP.setMessage("Prima di procedere verificare il totale del documento!");
            return context.findDefaultForward();
        } else if (!bulk.getDocEleIVAColl().isEmpty()) {
            for (Iterator i = bulk.getDocEleIVAColl().iterator(); i.hasNext(); ) {
                DocumentoEleIvaBulk rigaEle = (DocumentoEleIvaBulk) i.next();
                // prof
                if ((bulk.getDocEleTributiColl() != null && !bulk.getDocEleTributiColl().isEmpty()) || (bulk.getDocumentoEleTrasmissione().getRegimefiscale() != null && (bulk.getDocumentoEleTrasmissione().getRegimefiscale().equals(RegimeFiscaleType.RF_02.name()) || bulk.getDocumentoEleTrasmissione().getRegimefiscale().equals(RegimeFiscaleType.RF_19.name())))) {
                    if (!bulk.isAttivoSplitPaymentProf() && (rigaEle.getImposta() != null && rigaEle.getImposta().compareTo(BigDecimal.ZERO) != 0) && rigaEle.getEsigibilitaIva() != null && rigaEle.getEsigibilitaIva().compareTo("I") != 0 && !hasAccesso) {
                        java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd/MM/yyyy");
                        fatturaPassivaElettronicaBP.setMessage("La tipologia di esigibilità IVA non deve essere di tipo 'Differita' " + "o 'Split Payment'" + (fatturaPassivaElettronicaBP.getDataAttivazioneSplitProf() != null ? " per documenti con data emissione antecedente al " + sdf.format(fatturaPassivaElettronicaBP.getDataAttivazioneSplitProf()) : "") + (fatturaPassivaElettronicaBP.getDataDisattivazioneSplitProf() != null ? " o successiva al " + sdf.format(fatturaPassivaElettronicaBP.getDataDisattivazioneSplitProf()) : "") + ". Il documento deve essere rifiutato!");
                        return context.findDefaultForward();
                    }
                } else {
                    if (!bulk.isAttivoSplitPayment() && rigaEle.getEsigibilitaIva() != null && rigaEle.getEsigibilitaIva().compareTo("I") != 0) {
                        java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd/MM/yyyy");
                        fatturaPassivaElettronicaBP.setMessage("La tipologia di esigibilità IVA non deve essere di tipo 'Differita' " + "o 'Split Payment'" + (fatturaPassivaElettronicaBP.getDataAttivazioneSplit() != null ? " per documenti con data emissione antecedente al " + sdf.format(fatturaPassivaElettronicaBP.getDataAttivazioneSplit()) : "") + (fatturaPassivaElettronicaBP.getDataDisattivazioneSplit() != null ? " o successiva al " + sdf.format(fatturaPassivaElettronicaBP.getDataDisattivazioneSplit()) : "") + ". Il documento deve essere rifiutato!");
                        return context.findDefaultForward();
                    }
                }
                if (rigaEle.getImponibileImporto() != null)
                    tot_riepilogo = tot_riepilogo.add(rigaEle.getImponibileImporto());
                if (rigaEle.getImposta() != null)
                    tot_riepilogo = tot_riepilogo.add(rigaEle.getImposta());
            }
            if (bulk.getImportoDocumento().compareTo(BigDecimal.ZERO) == 0 && bulk.getImportoDocumento().compareTo(tot_riepilogo) != 0) {
                fatturaPassivaElettronicaBP.setMessage("Prima di procedere verificare il totale del documento!");
                return context.findDefaultForward();
            }
        }
        if ((bulk.getDocEleTributiColl() != null && !bulk.getDocEleTributiColl().isEmpty()) || (bulk.getDocumentoEleTrasmissione().getRegimefiscale() != null && (bulk.getDocumentoEleTrasmissione().getRegimefiscale().equals(RegimeFiscaleType.RF_02.name()) || bulk.getDocumentoEleTrasmissione().getRegimefiscale().equals(RegimeFiscaleType.RF_19.name())))) {
            if (bulk.isAttivoSplitPaymentProf()) {
                if (!bulk.isDocumentoSplitPaymentProf() && !Fattura_passivaBulk.TIPO_NOTA_DI_CREDITO.equals(bulk.getTipoDocumentoSIGLA()) && !bulk.getDocumentoEleTrasmissione().getRegimefiscale().equals(RegimeFiscaleType.RF_12.name()) && !bulk.getDocumentoEleTrasmissione().getRegimefiscale().equals(RegimeFiscaleType.RF_04.name()) && !hasAccesso) {
                    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd/MM/yyyy");
                    fatturaPassivaElettronicaBP.setMessage("La tipologia di esigibilità IVA deve essere di tipo 'Split Payment'" + (fatturaPassivaElettronicaBP.getDataAttivazioneSplitProf() != null ? " per documenti con data emissione dal " + sdf.format(fatturaPassivaElettronicaBP.getDataAttivazioneSplitProf()) : "") + (fatturaPassivaElettronicaBP.getDataDisattivazioneSplitProf() != null ? " per documenti con data emissione al " + sdf.format(fatturaPassivaElettronicaBP.getDataDisattivazioneSplitProf()) : "") + ". Il documento deve essere rifiutato!");
                    return context.findDefaultForward();
                }
            }
        } else {
            if (bulk.isAttivoSplitPayment()) {
                if (!bulk.isDocumentoSplitPayment() && !Fattura_passivaBulk.TIPO_NOTA_DI_CREDITO.equals(bulk.getTipoDocumentoSIGLA()) && !bulk.getDocumentoEleTrasmissione().getRegimefiscale().equals(RegimeFiscaleType.RF_12.name()) && !bulk.getDocumentoEleTrasmissione().getRegimefiscale().equals(RegimeFiscaleType.RF_04.name()) && !hasAccesso) {
                    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd/MM/yyyy");
                    fatturaPassivaElettronicaBP.setMessage("La tipologia di esigibilità IVA deve essere di tipo 'Split Payment'" + (fatturaPassivaElettronicaBP.getDataAttivazioneSplit() != null ? " per documenti con data emissione dal " + sdf.format(fatturaPassivaElettronicaBP.getDataAttivazioneSplit()) : "") + (fatturaPassivaElettronicaBP.getDataDisattivazioneSplit() != null ? " per documenti con data emissione al " + sdf.format(fatturaPassivaElettronicaBP.getDataDisattivazioneSplit()) : "") + ". Il documento deve essere rifiutato!");
                    return context.findDefaultForward();
                }
            }
        }
        String message = "La compilazione della Fattura e il suo successivo salvataggio, ";
        message += "comporta l'accettazione del documento elettronico.<br>Si desidera procedere?";
        return openConfirm(context, message, it.cnr.jada.util.action.OptionBP.CONFIRM_YES_NO, "doConfirmCompilaFattura");
    } catch (Exception e) {
        return handleException(context, e);
    }
}
Also used : DocumentoEleIvaBulk(it.cnr.contab.docamm00.fatturapa.bulk.DocumentoEleIvaBulk) DocumentoEleTestataBulk(it.cnr.contab.docamm00.fatturapa.bulk.DocumentoEleTestataBulk) BigDecimal(java.math.BigDecimal) ValidationException(it.cnr.jada.bulk.ValidationException) RemoveException(javax.ejb.RemoveException) RemoteException(java.rmi.RemoteException) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) FillException(it.cnr.jada.bulk.FillException) ComponentException(it.cnr.jada.comp.ComponentException) RemoteIterator(it.cnr.jada.util.RemoteIterator) Iterator(java.util.Iterator) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) CRUDFatturaPassivaElettronicaBP(it.cnr.contab.docamm00.bp.CRUDFatturaPassivaElettronicaBP)

Example 4 with ApplicationMessageFormatException

use of it.cnr.contab.util.ApplicationMessageFormatException in project sigla-main by consiglionazionaledellericerche.

the class ObbligazioneComponent method validaCdrLineaVoce.

/**
 *  Effettua controlli sulle combinazione Cdr/Voce/Linea indicati come parametri
 *    PreCondition:
 *      Una nuova combinazione Cdr/Voce/Linea è stata scelta o è stato aumentato l'importo
 * 		complessivo assegnato al Cdr/Voce/Linea
 *    PostCondition:
 *      Se l'impegno creato è di competenza viene verificato che la disponibilità residua ad assumere
 * 		impegni residui impropri non sia superiore al limite indicato nei Parametri CNR
 *
 * @param userContext lo user context
 * @param obbligazione l'obbligazione di cui sto aggiornando l'imputazione finanziaria
 * @param oldRipartizioneCdrVoceLinea la chiave restituita dalla chiamata alla procedura getOldRipartizioneCdrVoceLinea
 * @param cdr il centro di responsabilità
 * @param latt il codice della GAE
 * @param voce l'istanza di <code>Voce_fBulk</code> contenente l'elemento voce da verificare
 * @throws ComponentException
 */
private void validaCdrLineaVoce(UserContext userContext, ObbligazioneBulk obbligazione, PrimaryKeyHashtable oldRipartizioneCdrVoceLinea, String cdr, String latt, IVoceBilancioBulk voce) throws ComponentException {
    BigDecimal totaleOldScad = new BigDecimal(0);
    BigDecimal totaleNewScad = new BigDecimal(0);
    Obbligazione_scad_voceBulk key = new Obbligazione_scad_voceBulk();
    boolean found = false;
    try {
        Parametri_cdsBulk param_cds = (Parametri_cdsBulk) (getHome(userContext, Parametri_cdsBulk.class)).findByPrimaryKey(new Parametri_cdsBulk(CNRUserContext.getCd_cds(userContext), CNRUserContext.getEsercizio(userContext)));
        boolean isObbligazioneResiduo = obbligazione.isObbligazioneResiduo() || obbligazione.isObbligazioneResiduoImproprio();
        SaldoComponentSession saldoSession = Utility.createSaldoComponentSession();
        // finanziamento indicato in CONFIGURAZIONE_CNR
        if ((obbligazione.isCompetenza() && Optional.ofNullable(param_cds.getIm_soglia_consumo_residuo()).isPresent()) || isObbligazioneResiduo) {
            totaleNewScad = obbligazione.getObbligazione_scadenzarioColl().stream().flatMap(os -> os.getObbligazione_scad_voceColl().stream()).filter(osv -> osv.getCd_centro_responsabilita().equals(cdr)).filter(osv -> osv.getCd_linea_attivita().equals(latt)).filter(osv -> osv.getCd_voce().equals(voce.getCd_voce())).map(Obbligazione_scad_voceBulk::getIm_voce).reduce((x, y) -> x.add(y)).orElse(BigDecimal.ZERO);
            for (Enumeration e = oldRipartizioneCdrVoceLinea.keys(); e.hasMoreElements(); ) {
                key = (Obbligazione_scad_voceBulk) e.nextElement();
                found = false;
                if (key.getCd_centro_responsabilita().equals(cdr) && key.getCd_linea_attivita().equals(latt) && key.getCd_voce().equals(voce.getCd_voce())) {
                    totaleOldScad = (BigDecimal) oldRipartizioneCdrVoceLinea.get(key);
                    found = true;
                    break;
                }
            }
            /*
			 * Controllo, in caso di creazione impegni di competenza o aumento dell'importo assegnato,
			 * che la disponibilità ad assumere impegni residui impropri non sia superiore al limite
			 * previsto nei parametri CNR
			 *
			 **/
            if (totaleOldScad.compareTo(totaleNewScad) == -1 || !found) {
                if (!UtenteBulk.isAbilitatoSbloccoImpegni(userContext)) {
                    if (obbligazione.isCompetenza())
                        saldoSession.checkBloccoImpegniNatfin(userContext, cdr, latt, (Elemento_voceBulk) voce, ObbligazioneBulk.TIPO_COMPETENZA);
                    if (obbligazione.isObbligazioneResiduo())
                        saldoSession.checkBloccoImpegniNatfin(userContext, cdr, latt, (Elemento_voceBulk) voce, ObbligazioneBulk.TIPO_RESIDUO_PROPRIO);
                    if (obbligazione.isObbligazioneResiduoImproprio())
                        saldoSession.checkBloccoImpegniNatfin(userContext, cdr, latt, (Elemento_voceBulk) voce, ObbligazioneBulk.TIPO_RESIDUO_IMPROPRIO);
                }
                if (obbligazione.isCompetenza()) {
                    BigDecimal totaleResidui = saldoSession.getTotaleSaldoResidui(userContext, cdr, latt, voce);
                    if (totaleResidui.compareTo(param_cds.getIm_soglia_consumo_residuo()) == 1)
                        if (!found)
                            throw new ApplicationException("Non è possibile assumere impegni di competenza per il CDR/GAE/Voce (" + cdr + "/" + latt + "/" + voce.getCd_voce() + "), in quanto esiste una disponibilità ad assumere impegni " + "su stanziamenti residui impropri (" + new it.cnr.contab.util.EuroFormat().format(totaleResidui) + ").");
                        else
                            throw new ApplicationException("Non è possibile aumentare di " + new it.cnr.contab.util.EuroFormat().format(totaleNewScad.subtract(totaleOldScad)) + " l'importo di competenza già assegnato per il CDR/GAE/Voce (" + cdr + "/" + latt + "/" + voce.getCd_voce() + "), in quanto esiste una disponibilità ad assumere impegni " + "su stanziamenti residui impropri (" + new it.cnr.contab.util.EuroFormat().format(totaleResidui) + ").");
                }
            }
        }
        // è già presente in ObbligazioneResComponent
        if (!obbligazione.isObbligazioneResiduo() && Utility.createParametriEnteComponentSession().isProgettoPianoEconomicoEnabled(userContext, CNRUserContext.getEsercizio(userContext))) {
            WorkpackageBulk linea = ((WorkpackageHome) getHome(userContext, WorkpackageBulk.class)).searchGAECompleta(userContext, CNRUserContext.getEsercizio(userContext), cdr, latt);
            ProgettoBulk progetto = linea.getProgetto();
            Optional.ofNullable(progetto.getOtherField()).filter(el -> el.isStatoApprovato() || el.isStatoChiuso()).orElseThrow(() -> new ApplicationException("Attenzione! GAE " + linea.getCd_linea_attivita() + " non selezionabile. " + "Il progetto associato " + progetto.getCd_progetto() + " non risulta in stato Approvato o Chiuso."));
            if (progetto.isDatePianoEconomicoRequired()) {
                // Negli impegni controllare la più piccola data tra data inizio progetto e data stipula contratto definitivo
                ProgettoHome progettoHome = (ProgettoHome) getHome(userContext, ProgettoBulk.class);
                java.util.Collection<ContrattoBulk> contratti = progettoHome.findContratti(progetto.getPg_progetto());
                Optional<ContrattoBulk> optContratto = contratti.stream().filter(el -> el.isAttivo() || el.isAttivo_e_Passivo()).min((p1, p2) -> p1.getDt_stipula().compareTo(p2.getDt_stipula())).filter(el -> el.getDt_stipula().before(progetto.getOtherField().getDtInizio()));
                if (optContratto.isPresent())
                    optContratto.filter(ctr -> ctr.getDt_stipula().after(obbligazione.getDt_registrazione())).ifPresent(ctr -> {
                        throw new ApplicationRuntimeException("Attenzione! GAE " + linea.getCd_linea_attivita() + " non selezionabile. " + "La data stipula (" + new java.text.SimpleDateFormat("dd/MM/yyyy").format(ctr.getDt_stipula()) + ") del primo contratto " + ctr.getEsercizio() + "/" + ctr.getStato() + "/" + ctr.getPg_contratto() + " associato al progetto " + progetto.getCd_progetto() + " è successiva " + "rispetto alla data di registrazione dell'obbligazione (" + new java.text.SimpleDateFormat("dd/MM/yyyy").format(obbligazione.getDt_registrazione()) + ").");
                    });
                else
                    Optional.of(progetto.getOtherField().getDtInizio()).filter(dt -> !dt.after(obbligazione.getDt_registrazione())).orElseThrow(() -> new ApplicationException("Attenzione! GAE " + linea.getCd_linea_attivita() + " non selezionabile. " + "La data inizio (" + new java.text.SimpleDateFormat("dd/MM/yyyy").format(progetto.getOtherField().getDtInizio()) + ") del progetto " + progetto.getCd_progetto() + " associato è successiva " + "rispetto alla data di registrazione dell'obbligazione (" + new java.text.SimpleDateFormat("dd/MM/yyyy").format(obbligazione.getDt_registrazione()) + ")."));
            }
            LocalDate localDateFineProgetto = Optional.ofNullable(progetto.getOtherField().getDtProroga()).orElse(Optional.ofNullable(progetto.getOtherField().getDtFine()).orElse(DateUtils.firstDateOfTheYear(3000))).toLocalDateTime().toLocalDate();
            int ggProroga = Optional.ofNullable(obbligazione.getElemento_voce()).flatMap(el -> {
                if (obbligazione.isCompetenza())
                    return Optional.ofNullable(el.getGg_deroga_obbl_comp_prg_scad());
                else
                    return Optional.ofNullable(el.getGg_deroga_obbl_res_prg_scad());
            }).filter(el -> el.compareTo(0) > 0).orElse(0);
            localDateFineProgetto = localDateFineProgetto.plusDays(ggProroga);
            if (localDateFineProgetto.isBefore(obbligazione.getDt_registrazione().toLocalDateTime().toLocalDate()))
                throw new ApplicationMessageFormatException("Attenzione! GAE {0} non selezionabile. " + "La data fine/proroga del progetto {1} {2} ({3}) è precedente rispetto alla data di registrazione dell''impegno ({4}).", linea.getCd_linea_attivita(), progetto.getCd_progetto(), (ggProroga > 0 ? ", aumentata di " + ggProroga + " giorni," : ""), localDateFineProgetto.format(DateTimeFormatter.ofPattern("dd/MM/yyyy")), new java.text.SimpleDateFormat("dd/MM/yyyy").format(obbligazione.getDt_registrazione()));
        }
    } catch (Exception e) {
        throw handleException(e);
    }
}
Also used : EsercizioBulk(it.cnr.contab.config00.esercizio.bulk.EsercizioBulk) Parametri_cdsBulk(it.cnr.contab.config00.bulk.Parametri_cdsBulk) TerzoHome(it.cnr.contab.anagraf00.core.bulk.TerzoHome) IVoceBilancioBulk(it.cnr.contab.config00.pdcfin.bulk.IVoceBilancioBulk) BigDecimal(java.math.BigDecimal) CostantiTi_gestione(it.cnr.contab.config00.latt.bulk.CostantiTi_gestione) ObjectNotFoundException(it.cnr.jada.persistency.ObjectNotFoundException) ValidationException(it.cnr.jada.bulk.ValidationException) Incarichi_repertorioHome(it.cnr.contab.incarichi00.bulk.Incarichi_repertorioHome) UtenteBulk(it.cnr.contab.utenze00.bulk.UtenteBulk) PersistentHome(it.cnr.jada.persistency.sql.PersistentHome) Classificazione_vociBulk(it.cnr.contab.config00.pdcfin.cla.bulk.Classificazione_vociBulk) Timestamp(java.sql.Timestamp) CdsHome(it.cnr.contab.config00.sto.bulk.CdsHome) BulkHome(it.cnr.jada.bulk.BulkHome) LoggableStatement(it.cnr.jada.persistency.sql.LoggableStatement) SQLBuilder(it.cnr.jada.persistency.sql.SQLBuilder) Tipo_unita_organizzativaHome(it.cnr.contab.config00.sto.bulk.Tipo_unita_organizzativaHome) EJBCommonServices(it.cnr.jada.util.ejb.EJBCommonServices) Parametri_cnrBulk(it.cnr.contab.config00.bulk.Parametri_cnrBulk) Esercizio_baseBulk(it.cnr.contab.config00.esercizio.bulk.Esercizio_baseBulk) Elemento_voceBulk(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk) Serializable(java.io.Serializable) RemoteException(java.rmi.RemoteException) EJBException(javax.ejb.EJBException) IPrintMgr(it.cnr.jada.comp.IPrintMgr) Stream(java.util.stream.Stream) Pdg_modulo_spese_gestBulk(it.cnr.contab.pdg01.bulk.Pdg_modulo_spese_gestBulk) Query(it.cnr.jada.persistency.sql.Query) LocalDate(java.time.LocalDate) WorkpackageBulk(it.cnr.contab.config00.latt.bulk.WorkpackageBulk) Ass_evold_evnewBulk(it.cnr.contab.config00.pdcfin.bulk.Ass_evold_evnewBulk) AnagraficoBulk(it.cnr.contab.anagraf00.core.bulk.AnagraficoBulk) Types(java.sql.Types) TerzoBulk(it.cnr.contab.anagraf00.core.bulk.TerzoBulk) SaldoComponentSession(it.cnr.contab.doccont00.ejb.SaldoComponentSession) 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) PrimaryKeyHashtable(it.cnr.jada.bulk.PrimaryKeyHashtable) ApplicationRuntimeException(it.cnr.jada.comp.ApplicationRuntimeException) Parametri_cdsHome(it.cnr.contab.config00.bulk.Parametri_cdsHome) ProgettoHome(it.cnr.contab.progettiric00.core.bulk.ProgettoHome) Utility(it.cnr.contab.util.Utility) it.cnr.contab.doccont00.core.bulk(it.cnr.contab.doccont00.core.bulk) it.cnr.contab.prevent00.bulk(it.cnr.contab.prevent00.bulk) SQLBroker(it.cnr.jada.persistency.sql.SQLBroker) Anagrafico_terzoBulk(it.cnr.contab.anagraf00.core.bulk.Anagrafico_terzoBulk) FunzioneBulk(it.cnr.contab.config00.pdcfin.bulk.FunzioneBulk) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) Configurazione_cnrBulk(it.cnr.contab.config00.bulk.Configurazione_cnrBulk) Ass_evold_evnewHome(it.cnr.contab.config00.pdcfin.bulk.Ass_evold_evnewHome) ContrattoHome(it.cnr.contab.config00.contratto.bulk.ContrattoHome) SQLException(java.sql.SQLException) Ass_contratto_uoBulk(it.cnr.contab.config00.contratto.bulk.Ass_contratto_uoBulk) EnteBulk(it.cnr.contab.config00.sto.bulk.EnteBulk) PrimaryKeyHashMap(it.cnr.jada.bulk.PrimaryKeyHashMap) NaturaBulk(it.cnr.contab.config00.pdcfin.bulk.NaturaBulk) Elemento_voceHome(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceHome) ICRUDMgr(it.cnr.jada.comp.ICRUDMgr) FindClause(it.cnr.jada.persistency.sql.FindClause) V_struttura_organizzativaBulk(it.cnr.contab.config00.sto.bulk.V_struttura_organizzativaBulk) DateUtils(it.cnr.jada.util.DateUtils) Esercizio_baseHome(it.cnr.contab.config00.esercizio.bulk.Esercizio_baseHome) Voce_fBulk(it.cnr.contab.config00.pdcfin.bulk.Voce_fBulk) AnagraficoHome(it.cnr.contab.anagraf00.core.bulk.AnagraficoHome) 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) CdrBulk(it.cnr.contab.config00.sto.bulk.CdrBulk) Incarichi_repertorioBulk(it.cnr.contab.incarichi00.bulk.Incarichi_repertorioBulk) BulkList(it.cnr.jada.bulk.BulkList) DatiFinanziariScadenzeDTO(it.cnr.contab.doccont00.core.DatiFinanziariScadenzeDTO) Unita_organizzativa_enteBulk(it.cnr.contab.config00.sto.bulk.Unita_organizzativa_enteBulk) ProgettoBulk(it.cnr.contab.progettiric00.core.bulk.ProgettoBulk) CdsBulk(it.cnr.contab.config00.sto.bulk.CdsBulk) DateTimeFormatter(java.time.format.DateTimeFormatter) Pdg_preventivo_spe_detBulk(it.cnr.contab.pdg00.bulk.Pdg_preventivo_spe_detBulk) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) Unita_organizzativaHome(it.cnr.contab.config00.sto.bulk.Unita_organizzativaHome) Ass_incarico_uoBulk(it.cnr.contab.incarichi00.bulk.Ass_incarico_uoBulk) Parametri_cnrHome(it.cnr.contab.config00.bulk.Parametri_cnrHome) ComponentException(it.cnr.jada.comp.ComponentException) CompoundFindClause(it.cnr.jada.persistency.sql.CompoundFindClause) ProgettoBulk(it.cnr.contab.progettiric00.core.bulk.ProgettoBulk) WorkpackageHome(it.cnr.contab.config00.latt.bulk.WorkpackageHome) Elemento_voceBulk(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk) LocalDate(java.time.LocalDate) UserContext(it.cnr.jada.UserContext) CNRUserContext(it.cnr.contab.utenze00.bp.CNRUserContext) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) WorkpackageBulk(it.cnr.contab.config00.latt.bulk.WorkpackageBulk) Parametri_cdsBulk(it.cnr.contab.config00.bulk.Parametri_cdsBulk) ContrattoBulk(it.cnr.contab.config00.contratto.bulk.ContrattoBulk) BigDecimal(java.math.BigDecimal) ObjectNotFoundException(it.cnr.jada.persistency.ObjectNotFoundException) ValidationException(it.cnr.jada.bulk.ValidationException) RemoteException(java.rmi.RemoteException) EJBException(javax.ejb.EJBException) ApplicationRuntimeException(it.cnr.jada.comp.ApplicationRuntimeException) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) SQLException(java.sql.SQLException) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) ComponentException(it.cnr.jada.comp.ComponentException) ApplicationException(it.cnr.jada.comp.ApplicationException) java.util(java.util) ProgettoHome(it.cnr.contab.progettiric00.core.bulk.ProgettoHome) ApplicationRuntimeException(it.cnr.jada.comp.ApplicationRuntimeException) SaldoComponentSession(it.cnr.contab.doccont00.ejb.SaldoComponentSession)

Example 5 with ApplicationMessageFormatException

use of it.cnr.contab.util.ApplicationMessageFormatException in project sigla-main by consiglionazionaledellericerche.

the class DistintaCassiereComponent method creaReversaleFlussoSiopeplus.

private it.siopeplus.Reversale creaReversaleFlussoSiopeplus(UserContext userContext, V_mandato_reversaleBulk bulk) throws ComponentException, RemoteException, BusinessProcessException {
    try {
        final ObjectFactory objectFactory = new ObjectFactory();
        it.siopeplus.Reversale reversale = objectFactory.createReversale();
        List list = findDocumentiFlusso(userContext, bulk);
        reversale.setTipoOperazione(getTipoOperazione(userContext, bulk));
        GregorianCalendar gcdi = new GregorianCalendar();
        it.cnr.contab.doccont00.intcass.bulk.VDocumentiFlussoBulk docContabile = null;
        for (Iterator i = list.iterator(); i.hasNext(); ) {
            it.siopeplus.Reversale.InformazioniVersante infover = objectFactory.createReversaleInformazioniVersante();
            docContabile = (it.cnr.contab.doccont00.intcass.bulk.VDocumentiFlussoBulk) i.next();
            reversale.setNumeroReversale(docContabile.getPgDocumento().intValue());
            gcdi.setTime(docContabile.getDtEmissione());
            XMLGregorianCalendar xgc = DatatypeFactory.newInstance().newXMLGregorianCalendar(gcdi);
            xgc.setMillisecond(DatatypeConstants.FIELD_UNDEFINED);
            xgc.setTimezone(DatatypeConstants.FIELD_UNDEFINED);
            xgc.setSecond(DatatypeConstants.FIELD_UNDEFINED);
            xgc.setMinute(DatatypeConstants.FIELD_UNDEFINED);
            xgc.setHour(DatatypeConstants.FIELD_UNDEFINED);
            reversale.setDataReversale(xgc);
            reversale.setImportoReversale(docContabile.getImDocumento().setScale(2, BigDecimal.ROUND_HALF_UP));
            // Dovrebbe essere sempre 1 ?
            infover.setProgressivoVersante(1);
            infover.setImportoVersante(docContabile.getImDocumento().setScale(2, BigDecimal.ROUND_HALF_UP));
            final String modalitaPagamento = docContabile.getModalitaPagamento();
            final Rif_modalita_pagamentoBulk rif_modalita_pagamentoBulk = Optional.ofNullable(findByPrimaryKey(userContext, new Rif_modalita_pagamentoBulk(modalitaPagamento))).filter(Rif_modalita_pagamentoBulk.class::isInstance).map(Rif_modalita_pagamentoBulk.class::cast).orElseThrow(() -> new ApplicationMessageFormatException("Modalità di pagamento non trovata: {0}", modalitaPagamento));
            if (docContabile.getTiDocumento().compareTo(ReversaleBulk.TIPO_REGOLAM_SOSPESO) == 0) {
                if (Optional.ofNullable(bulk.getTi_cc_bi()).filter(s -> s.equals("B")).isPresent() && Optional.ofNullable(rif_modalita_pagamentoBulk.getTi_pagamento()).filter(s -> s.equals(Rif_modalita_pagamentoBulk.BANCA_ITALIA)).isPresent()) {
                    infover.setTipoRiscossione(REGOLARIZZAZIONE_ACCREDITO_BANCA_D_ITALIA);
                } else {
                    infover.setTipoRiscossione(REGOLARIZZAZIONE);
                }
            } else if (docContabile.getTiDocumento().compareTo(ReversaleBulk.TIPO_INCASSO) == 0) {
                if (!bulk.getPg_documento_cont_padre().equals(bulk.getPg_documento_cont())) {
                    infover.setTipoRiscossione(COMPENSAZIONE);
                } else {
                    infover.setTipoRiscossione(CASSA);
                }
            } else if (!bulk.getPg_documento_cont_padre().equals(bulk.getPg_documento_cont())) {
                infover.setTipoRiscossione(COMPENSAZIONE);
            }
            // Classificazioni
            infover.setTipoEntrata(INFRUTTIFERO);
            infover.setDestinazione(LIBERA);
            List listClass = findDocumentiFlussoClassReversali(userContext, bulk);
            VDocumentiFlussoBulk oldDoc = null;
            for (Iterator c = listClass.iterator(); c.hasNext(); ) {
                VDocumentiFlussoBulk doc = (VDocumentiFlussoBulk) c.next();
                if (doc.getCdSiope() != null && oldDoc != null && oldDoc.getCdSiope() != null) {
                    if ((oldDoc.getCdSiope().compareTo(doc.getCdSiope()) != 0) || (oldDoc.getCdTipoDocumentoAmm() != null && oldDoc.getCdTipoDocumentoAmm().compareTo(doc.getCdTipoDocumentoAmm()) != 0) || (oldDoc.getPgDocAmm() != null && oldDoc.getPgDocAmm().compareTo(doc.getPgDocAmm()) != 0)) {
                        it.siopeplus.Reversale.InformazioniVersante.Classificazione clas = objectFactory.createReversaleInformazioniVersanteClassificazione();
                        clas.setCodiceCge(doc.getCdSiope());
                        clas.setImporto(doc.getImportoCge().setScale(2, BigDecimal.ROUND_HALF_UP));
                        CtClassificazioneDatiSiopeEntrate ctClassificazioneDatiSiopeEntrate = objectFactory.createCtClassificazioneDatiSiopeEntrate();
                        ctClassificazioneDatiSiopeEntrate.getContent().add(objectFactory.createCtClassificazioneDatiSiopeEntrateTipoDebitoSiopeNc(StTipoDebitoNonCommerciale.NON_COMMERCIALE));
                        clas.setClassificazioneDatiSiopeEntrate(ctClassificazioneDatiSiopeEntrate);
                        infover.getClassificazione().add(clas);
                        oldDoc = doc;
                    }
                } else if (doc.getCdSiope() != null) {
                    it.siopeplus.Reversale.InformazioniVersante.Classificazione clas = objectFactory.createReversaleInformazioniVersanteClassificazione();
                    clas.setCodiceCge(doc.getCdSiope());
                    clas.setImporto(doc.getImportoCge().setScale(2, BigDecimal.ROUND_HALF_UP));
                    CtClassificazioneDatiSiopeEntrate ctClassificazioneDatiSiopeEntrate = objectFactory.createCtClassificazioneDatiSiopeEntrate();
                    ctClassificazioneDatiSiopeEntrate.getContent().add(objectFactory.createCtClassificazioneDatiSiopeEntrateTipoDebitoSiopeNc(StTipoDebitoNonCommerciale.NON_COMMERCIALE));
                    clas.setClassificazioneDatiSiopeEntrate(ctClassificazioneDatiSiopeEntrate);
                    infover.getClassificazione().add(clas);
                    oldDoc = doc;
                }
                if (infover.getCausale() != null && doc.getCdCup() != null) {
                    if (!infover.getCausale().contains(doc.getCdCup()))
                        infover.setCausale(infover.getCausale() + "-" + doc.getCdCup());
                } else if (doc.getCdCup() != null) {
                    infover.setCausale("CUP " + doc.getCdCup());
                }
            }
            // Fine classificazioni
            it.siopeplus.Reversale.InformazioniVersante.Bollo bollo = objectFactory.createReversaleInformazioniVersanteBollo();
            bollo.setAssoggettamentoBollo(docContabile.getAssoggettamentoBollo());
            bollo.setCausaleEsenzioneBollo(docContabile.getCausaleBollo());
            infover.setBollo(bollo);
            it.siopeplus.Versante versante = objectFactory.createVersante();
            versante.setAnagraficaVersante(RemoveAccent.convert(docContabile.getDenominazioneSede()).replace('"', ' ').replace('\u00b0', ' '));
            infover.setVersante(versante);
            // gestito inserimento cup nella CAUSALE
            if (infover.getCausale() != null && (infover.getCausale() + docContabile.getDsDocumento()).length() > MAX_LENGTH_CAUSALE)
                infover.setCausale((infover.getCausale() + " " + docContabile.getDsDocumento()).substring(0, MAX_LENGTH_CAUSALE - 1));
            else if (infover.getCausale() != null)
                infover.setCausale(infover.getCausale() + " " + docContabile.getDsDocumento());
            else if (docContabile.getDsDocumento().length() > MAX_LENGTH_CAUSALE)
                infover.setCausale(docContabile.getDsDocumento().substring(0, MAX_LENGTH_CAUSALE - 1));
            else
                infover.setCausale(docContabile.getDsDocumento());
            infover.setCausale(RemoveAccent.convert(infover.getCausale()).replace('"', ' ').replace('\u00b0', ' '));
            // SOSPESO
            if (docContabile.getTiDocumento().compareTo(ReversaleBulk.TIPO_REGOLAM_SOSPESO) == 0) {
                List listSosp = findDocumentiFlussoSospeso(userContext, bulk);
                for (Iterator c = listSosp.iterator(); c.hasNext(); ) {
                    boolean sospesoTrovato = false;
                    VDocumentiFlussoBulk doc = (VDocumentiFlussoBulk) c.next();
                    if (doc.getCdSospeso() != null) {
                        if (Optional.ofNullable(doc.getCdSospeso()).isPresent() && isSospesoFromAccreditamento(userContext, doc)) {
                            final V_mandato_reversaleBulk mandatoReversale = findMandatoReversale(userContext, findSospeso(userContext, doc).get().getMandatoRiaccredito());
                            final CtClassificazioneDatiSiopeUscite classificazioneDatiSiope = getClassificazioneDatiSiope(userContext, objectFactory, mandatoReversale, null);
                            final Optional<Reversale.InformazioniVersante.Classificazione> any = infover.getClassificazione().stream().findAny();
                            final Optional<StTipoDebitoCommerciale> stTipoDebitoCommerciale = classificazioneDatiSiope.getTipoDebitoSiopeNcAndCodiceCigSiopeOrMotivoEsclusioneCigSiope().stream().filter(StTipoDebitoCommerciale.class::isInstance).map(StTipoDebitoCommerciale.class::cast).findAny();
                            final Optional<StTipoDebitoNonCommerciale> stTipoDebitoNonCommerciale = classificazioneDatiSiope.getTipoDebitoSiopeNcAndCodiceCigSiopeOrMotivoEsclusioneCigSiope().stream().filter(StTipoDebitoNonCommerciale.class::isInstance).map(StTipoDebitoNonCommerciale.class::cast).findAny();
                            final Optional<CtFatturaSiope> ctFatturaSiope = classificazioneDatiSiope.getTipoDebitoSiopeNcAndCodiceCigSiopeOrMotivoEsclusioneCigSiope().stream().filter(CtFatturaSiope.class::isInstance).map(CtFatturaSiope.class::cast).findAny();
                            if (any.isPresent()) {
                                final Reversale.InformazioniVersante.Classificazione classificazione = any.get();
                                classificazione.getClassificazioneDatiSiopeEntrate().getContent().clear();
                                if (stTipoDebitoCommerciale.isPresent())
                                    classificazione.getClassificazioneDatiSiopeEntrate().getContent().add(objectFactory.createCtClassificazioneDatiSiopeEntrateTipoDebitoSiopeC(stTipoDebitoCommerciale.get()));
                                if (stTipoDebitoNonCommerciale.isPresent())
                                    classificazione.getClassificazioneDatiSiopeEntrate().getContent().add(objectFactory.createCtClassificazioneDatiSiopeEntrateTipoDebitoSiopeNc(stTipoDebitoNonCommerciale.get()));
                                if (ctFatturaSiope.isPresent()) {
                                    CtFatturaSiope ctFatturaSiope1 = ctFatturaSiope.get();
                                    ctFatturaSiope1.getDatiFatturaSiope().setImportoSiope(classificazione.getImporto());
                                    classificazione.getClassificazioneDatiSiopeEntrate().getContent().add(objectFactory.createCtClassificazioneDatiSiopeEntrateFatturaSiope(ctFatturaSiope1));
                                }
                            }
                        }
                        for (Iterator it = infover.getSospeso().iterator(); it.hasNext(); ) {
                            it.siopeplus.Reversale.InformazioniVersante.Sospeso presente = (it.siopeplus.Reversale.InformazioniVersante.Sospeso) it.next();
                            Long l = new Long(doc.getCdSospeso().substring(0, doc.getCdSospeso().indexOf(".")).replace(" ", "")).longValue();
                            if (l.compareTo(presente.getNumeroProvvisorio()) == 0) {
                                presente.setImportoProvvisorio(presente.getImportoProvvisorio().add(doc.getImAssociato()));
                                sospesoTrovato = true;
                                break;
                            }
                        }
                        if (!sospesoTrovato) {
                            it.siopeplus.Reversale.InformazioniVersante.Sospeso sosp = objectFactory.createReversaleInformazioniVersanteSospeso();
                            try {
                                sosp.setNumeroProvvisorio(new Long(doc.getCdSospeso().substring(0, doc.getCdSospeso().indexOf(".")).replace(" ", "")).longValue());
                            } catch (NumberFormatException e) {
                                throw new ApplicationException("Formato del codice del sospeso non compatibile.");
                            }
                            sosp.setImportoProvvisorio(doc.getImAssociato().setScale(2, BigDecimal.ROUND_HALF_UP));
                            infover.getSospeso().add(sosp);
                        }
                    }
                }
            }
            reversale.getInformazioniVersante().add(infover);
        }
        return reversale;
    } catch (Exception e) {
        throw handleException(e);
    }
}
Also used : RemoteIterator(it.cnr.jada.util.RemoteIterator) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) it.siopeplus(it.siopeplus) XMLGregorianCalendar(javax.xml.datatype.XMLGregorianCalendar) TemporalUnit(java.time.temporal.TemporalUnit) ChronoUnit(java.time.temporal.ChronoUnit) DatatypeConfigurationException(javax.xml.datatype.DatatypeConfigurationException) CRUDNotDeletableException(it.cnr.jada.comp.CRUDNotDeletableException) CompletionException(java.util.concurrent.CompletionException) RemoteException(java.rmi.RemoteException) BusinessProcessException(it.cnr.jada.action.BusinessProcessException) EJBException(javax.ejb.EJBException) DetailedRuntimeException(it.cnr.jada.DetailedRuntimeException) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) SQLException(java.sql.SQLException) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) ComponentException(it.cnr.jada.comp.ComponentException) XMLGregorianCalendar(javax.xml.datatype.XMLGregorianCalendar) ApplicationException(it.cnr.jada.comp.ApplicationException) it.cnr.contab.docamm00.docs.bulk(it.cnr.contab.docamm00.docs.bulk) it.cnr.contab.doccont00.core.bulk(it.cnr.contab.doccont00.core.bulk) it.cnr.contab.doccont00.intcass.bulk(it.cnr.contab.doccont00.intcass.bulk) it.cnr.jada.bulk(it.cnr.jada.bulk) Rif_modalita_pagamentoBulk(it.cnr.contab.anagraf00.tabrif.bulk.Rif_modalita_pagamentoBulk)

Aggregations

ApplicationMessageFormatException (it.cnr.contab.util.ApplicationMessageFormatException)20 ApplicationException (it.cnr.jada.comp.ApplicationException)18 ComponentException (it.cnr.jada.comp.ComponentException)17 PersistencyException (it.cnr.jada.persistency.PersistencyException)15 RemoteException (java.rmi.RemoteException)14 CNRUserContext (it.cnr.contab.utenze00.bp.CNRUserContext)13 Utility (it.cnr.contab.util.Utility)13 IntrospectionException (it.cnr.jada.persistency.IntrospectionException)13 BigDecimal (java.math.BigDecimal)13 DetailedRuntimeException (it.cnr.jada.DetailedRuntimeException)12 SQLException (java.sql.SQLException)12 UserContext (it.cnr.jada.UserContext)11 Configurazione_cnrComponentSession (it.cnr.contab.config00.ejb.Configurazione_cnrComponentSession)10 it.cnr.contab.doccont00.core.bulk (it.cnr.contab.doccont00.core.bulk)10 EJBCommonServices (it.cnr.jada.util.ejb.EJBCommonServices)10 Collectors (java.util.stream.Collectors)10 Configurazione_cnrBulk (it.cnr.contab.config00.bulk.Configurazione_cnrBulk)8 BusinessProcessException (it.cnr.jada.action.BusinessProcessException)8 TerzoBulk (it.cnr.contab.anagraf00.core.bulk.TerzoBulk)7 Parametri_cnrBulk (it.cnr.contab.config00.bulk.Parametri_cnrBulk)7