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);
}
}
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);
// }
}
}
}
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);
}
}
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);
}
}
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);
}
}
Aggregations