it.cnr.contab.doccont00.bp.CRUDMandatoBP Maven / Gradle / Ivy
/*
* Copyright (C) 2019 Consiglio Nazionale delle Ricerche
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
package it.cnr.contab.doccont00.bp;
import it.cnr.contab.compensi00.docs.bulk.CompensoBulk;
import it.cnr.contab.config00.bulk.Codici_siopeBulk;
import it.cnr.contab.config00.bulk.Configurazione_cnrBulk;
import it.cnr.contab.config00.ejb.Configurazione_cnrComponentSession;
import it.cnr.contab.config00.sto.bulk.Tipo_unita_organizzativaHome;
import it.cnr.contab.config00.sto.bulk.Unita_organizzativa_enteBulk;
import it.cnr.contab.docamm00.bp.IDocumentoAmministrativoBP;
import it.cnr.contab.docamm00.docs.bulk.*;
import it.cnr.contab.docamm00.ejb.IDocumentoAmministrativoSpesaComponentSession;
import it.cnr.contab.doccont00.core.bulk.*;
import it.cnr.contab.doccont00.ejb.MandatoComponentSession;
import it.cnr.contab.missioni00.docs.bulk.AnticipoBulk;
import it.cnr.contab.missioni00.docs.bulk.MissioneBulk;
import it.cnr.contab.utenze00.action.GestioneUtenteAction;
import it.cnr.contab.utenze00.bp.CNRUserContext;
import it.cnr.contab.utenze00.bulk.CNRUserInfo;
import it.cnr.contab.util.Utility;
import it.cnr.contab.util.enumeration.EsitoOperazione;
import it.cnr.contab.util.enumeration.StatoVariazioneSostituzione;
import it.cnr.jada.DetailedRuntimeException;
import it.cnr.jada.UserContext;
import it.cnr.jada.action.ActionContext;
import it.cnr.jada.action.BusinessProcessException;
import it.cnr.jada.action.MessageToUser;
import it.cnr.jada.bulk.BulkList;
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.bulk.ValidationException;
import it.cnr.jada.comp.ComponentException;
import it.cnr.jada.ejb.CRUDComponentSession;
import it.cnr.jada.persistency.sql.CompoundFindClause;
import it.cnr.jada.util.Config;
import it.cnr.jada.util.RemoteIterator;
import it.cnr.jada.util.action.CRUDBP;
import it.cnr.jada.util.action.SimpleDetailCRUDController;
import it.cnr.jada.util.jsp.Button;
import java.math.BigDecimal;
import java.rmi.RemoteException;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Stream;
/**
* Business Process che gestisce le attività di CRUD per l'entita' Mandato
*/
public class CRUDMandatoBP extends CRUDAbstractMandatoBP implements IDocumentoAmministrativoBP, IDefferedUpdateSaldiBP {
public static final String MANDATO_VARIAZIONE_BP = "CRUDMandatoVariazioneBP";
private final SimpleDetailCRUDController documentiPassivi = new SimpleDetailCRUDController("DocumentiPassivi", V_doc_passivo_obbligazioneBulk.class, "docPassiviColl", this);
private final CRUDMandatoRigaController documentiPassiviSelezionati = new CRUDMandatoRigaController("DocumentiPassiviSelezionati", Mandato_rigaIBulk.class, "mandato_rigaColl", this);
private final SimpleDetailCRUDController documentiAttiviPerRegolarizzazione = new SimpleDetailCRUDController("DocumentiAttiviPerRegolarizzazione", V_doc_attivo_accertamentoBulk.class, "docGenericiPerRegolarizzazione", this);
private final SimpleDetailCRUDController scadenzeAccertamentoPerRegolarizzazione = new SimpleDetailCRUDController("ScadenzeAccertamentoPerRegolarizzazione", Accertamento_scadenzarioBulk.class, "scadenzeAccertamentoPerRegolarizzazione", this);
private final SimpleDetailCRUDController codiciSiopeCollegati = new SimpleDetailCRUDController("codiciSiopeCollegati", Mandato_siopeBulk.class, "mandato_siopeColl", documentiPassiviSelezionati);
private final SimpleDetailCRUDController codiciSiopeCollegabili = new SimpleDetailCRUDController("codici_siopeColl", Codici_siopeBulk.class, "codici_siopeColl", documentiPassiviSelezionati);
private final SimpleDetailCRUDController cupCollegati = new SimpleDetailCRUDController("cupCollegati", MandatoCupIBulk.class, "mandatoCupColl", documentiPassiviSelezionati) {
public void validate(ActionContext context, OggettoBulk model) throws ValidationException {
validateCupCollegati(context, model);
}
@Override
public boolean isShrinkable() {
return super.isShrinkable() || isDaVariare();
}
@Override
public boolean isGrowable() {
return super.isGrowable() || isDaVariare();
}
@Override
public int getStatus() {
if (isDaVariare())
return EDIT;
return super.getStatus();
}
};
private final SimpleDetailCRUDController siopeCupCollegati = new SimpleDetailCRUDController("siopeCupCollegati", MandatoSiopeCupIBulk.class, "mandatoSiopeCupColl", codiciSiopeCollegati) {
public void validate(ActionContext context, OggettoBulk model) throws ValidationException {
validateSiopeCupCollegati(context, model);
}
@Override
public boolean isShrinkable() {
return super.isShrinkable() || isDaVariare();
}
@Override
public boolean isGrowable() {
return super.isGrowable() || isDaVariare();
}
@Override
public int getStatus() {
if (isDaVariare())
return EDIT;
return super.getStatus();
}
};
protected it.cnr.contab.docamm00.docs.bulk.Risultato_eliminazioneVBulk deleteManager = null;
boolean isAbilitatoCrudMandatoVariazioneBP = Boolean.FALSE;
private boolean siope_attiva = false;
private boolean cup_attivo = false;
private boolean siope_cup_attivo = false;
private boolean tesoreria_unica = false;
private MandatoBulk mandatoRiaccredito;
public CRUDMandatoBP() {
super();
setTab("tab", "tabMandato");
}
public CRUDMandatoBP(String function) {
super(function);
setTab("tab", "tabMandato");
}
public CRUDMandatoBP(String function, MandatoBulk mandatoRiaccredito) {
super(function);
setTab("tab", "tabMandato");
this.mandatoRiaccredito = mandatoRiaccredito;
}
@Override
public OggettoBulk initializeModelForInsert(ActionContext actioncontext, OggettoBulk oggettobulk) throws BusinessProcessException {
final MandatoBulk mandatoBulk = (MandatoBulk) super.initializeModelForInsert(actioncontext, oggettobulk);
if (Optional.ofNullable(mandatoRiaccredito).isPresent()) {
mandatoBulk.setStatoVarSos(StatoVariazioneSostituzione.SOSTITUZIONE_DEFINITIVA.value());
mandatoBulk.setIm_mandato(mandatoRiaccredito.getIm_mandato());
mandatoBulk.setDs_mandato(mandatoRiaccredito.getDs_mandato());
}
return mandatoBulk;
}
@Override
public String getFormTitle() {
if (isDaVariare()) {
return " - Variazione";
} else {
return super.getFormTitle();
}
}
/**
* Metodo utilizzato per gestire l'aggiunta dei documenti passivi.
*
* @param context ActionContext in uso.
* @return Forward
*/
public void aggiungiDocPassivi(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
try {
MandatoIBulk mandato = (MandatoIBulk) getModel();
if (getDocumentiPassivi().getSelectedModels(context).size() != 0) {
mandato = (MandatoIBulk) ((MandatoComponentSession) createComponentSession()).aggiungiDocPassivi(context.getUserContext(), mandato, getDocumentiPassivi().getSelectedModels(context));
setModel(context, mandato);
getDocumentiPassivi().getSelection().clear();
resyncChildren(context);
} else
setMessage("Non sono stati selezionati documenti passivi");
} catch (Exception e) {
throw handleException(e);
}
}
/**
* Metodo utilizzato per caricare l'elenco dei doc. amm. attivi associati all'accertamento.
*
* @param context ActionContext in uso.
*/
public void caricaDocAttiviPerRegolarizzazione(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
try {
MandatoIBulk mandato = (MandatoIBulk) getModel();
mandato = ((MandatoComponentSession) createComponentSession()).listaDocAttiviPerRegolarizzazione(context.getUserContext(), mandato);
setModel(context, mandato);
getDocumentiAttiviPerRegolarizzazione().getSelection().clear();
resyncChildren(context);
} catch (Exception e) {
throw handleException(e);
}
}
/**
* Metodo utilizzato per gestire il caricamento dei documenti passivi.
*
* @param context ActionContext in uso.
* @return Forward
* @throws BusinessProcessException
*/
public void cercaDocPassivi(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
MandatoIBulk mandatoI = (MandatoIBulk) getModel();
try {
MandatoComponentSession session = (MandatoComponentSession) createComponentSession();
// MandatoBulk mandato = session.listaDocPassivi( context.getUserContext(), (MandatoBulk) getModel() );
mandatoI = (MandatoIBulk) session.listaDocPassivi(context.getUserContext(), (MandatoBulk) getModel());
setModel(context, mandatoI);
resyncChildren(context);
} catch (Exception e) {
mandatoI.setDocPassiviColl(new ArrayList());
setModel(context, mandatoI);
resyncChildren(context);
throw handleException(e);
}
}
public void create(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
try {
if (getDocumentiAttiviPerRegolarizzazione().getSelectedModels(context).size() > 0) {
((MandatoIBulk) getModel()).setDocGenericiSelezionatiPerRegolarizzazione(getDocumentiAttiviPerRegolarizzazione().getSelectedModels(context));
((MandatoIBulk) getModel()).setGeneraReversaleDaDocAmm(true);
} else {
((MandatoIBulk) getModel()).setGeneraReversaleDaDocAmm(false);
if (((MandatoIBulk) getModel()).getTi_mandato().equals(MandatoIBulk.TIPO_REGOLARIZZAZIONE)) {
if (getScadenzeAccertamentoPerRegolarizzazione().getSelectedModels(context).size() > 0)
((MandatoIBulk) getModel()).setScadenzeAccertamentoSelezionatePerRegolarizzazione(getScadenzeAccertamentoPerRegolarizzazione().getSelectedModels(context));
else
throw new ValidationException("Operazione non possibile! Non e' stata selezionata nessuna scadenza dell'accertamento.");
}
}
super.create(context);
if (((MandatoIBulk) getModel()).getTi_mandato().equals(MandatoIBulk.TIPO_REGOLARIZZAZIONE) &&
((MandatoIBulk) getModel()).getVar_bilancio() != null)
((MandatoComponentSession) createComponentSession()).esitaVariazioneBilancioDiRegolarizzazione(context.getUserContext(), ((MandatoIBulk) getModel()));
} catch (Exception e) {
throw handleException(e);
}
}
/**
* Metodo utilizzato per creare una toolbar applicativa personalizzata.
*
* @return toolbar Toolbar in uso
*/
protected it.cnr.jada.util.jsp.Button[] createToolbar() {
final Properties properties = Config.getHandler().getProperties(getClass());
return Stream.concat(Arrays.asList(super.createToolbar()).stream(),
Arrays.asList(
new Button(properties, "CRUDToolbar.printpdf"),
new Button(properties, "CRUDToolbar.contabile"),
new Button(properties, "CRUDToolbar.davariare"),
new Button(properties, "CRUDToolbar.save.variazione.sostituzione")
).stream()).toArray(Button[]::new);
}
public boolean isDaVariareButtonHidden() {
if (!isAbilitatoCrudMandatoVariazioneBP)
return Boolean.TRUE;
final Optional mandatoBulk1 = Optional.ofNullable(getModel())
.filter(MandatoBulk.class::isInstance)
.map(MandatoBulk.class::cast)
.filter(mandatoBulk -> mandatoBulk.getCrudStatus() == OggettoBulk.NORMAL);
return !isSupervisore() ||
mandatoBulk1
.flatMap(mandatoBulk -> Optional.ofNullable(mandatoBulk.getEsitoOperazione()))
.map(s -> !Arrays.asList(
EsitoOperazione.ACQUISITO.value(),
EsitoOperazione.PAGATO.value(),
EsitoOperazione.REGOLARIZZATO.value()
).contains(s)).orElse(Boolean.TRUE)
|| mandatoBulk1
.map(mandatoBulk -> {
return Optional.ofNullable(mandatoBulk.getStatoVarSos())
.map(s -> Arrays.asList(
StatoVariazioneSostituzione.DA_VARIARE.value(),
StatoVariazioneSostituzione.VARIAZIONE_TRASMESSA.value()
).contains(s))
.orElse(Boolean.FALSE);
}).orElse(Boolean.TRUE);
}
public boolean isDaVariare() {
return isSupervisore() &&
Optional.ofNullable(getModel())
.filter(MandatoBulk.class::isInstance)
.map(MandatoBulk.class::cast)
.flatMap(mandatoBulk -> Optional.ofNullable(mandatoBulk.getStatoVarSos()))
.map(s -> Arrays.asList(
StatoVariazioneSostituzione.DA_VARIARE.value()
).contains(s)).orElse(Boolean.FALSE);
}
public boolean isSalvaVariazioneSostituzioneButtonHidden() {
return !isDaVariare();
}
public void impostaMandatoDaVariare(ActionContext actionContext) throws it.cnr.jada.action.BusinessProcessException {
final MandatoBulk mandatoBulk = Optional.ofNullable(getModel())
.filter(MandatoBulk.class::isInstance)
.map(MandatoBulk.class::cast)
.orElseThrow(() -> new BusinessProcessException("Mandato non trovato!"));
CRUDMandatoVariazioneBP crudMandatoVariazioneBP =
Optional.ofNullable(actionContext.createBusinessProcess("CRUDMandatoVariazioneBP"))
.filter(CRUDMandatoVariazioneBP.class::isInstance)
.map(CRUDMandatoVariazioneBP.class::cast)
.orElseThrow(() -> new BusinessProcessException("Non è possibile procedere alla variazione del Manadato"));
crudMandatoVariazioneBP.setModel(actionContext, mandatoBulk);
crudMandatoVariazioneBP.setDaVariare(actionContext);
actionContext.closeBusinessProcess();
actionContext.addBusinessProcess(crudMandatoVariazioneBP);
}
@Override
public void basicEdit(ActionContext context, OggettoBulk bulk, boolean doInitializeForEdit) throws BusinessProcessException {
super.basicEdit(context, bulk, doInitializeForEdit);
final MandatoBulk mandatoBulk = Optional.ofNullable(getModel())
.filter(MandatoBulk.class::isInstance)
.map(MandatoBulk.class::cast)
.orElseThrow(() -> new BusinessProcessException("Mandato non trovato!"));
mandatoBulk.setCdUoScrivania(it.cnr.contab.utenze00.bulk.CNRUserInfo.getUnita_organizzativa(context).getCd_unita_organizzativa());
if (Optional.ofNullable(mandatoBulk.getStatoVarSos())
.map(s -> s.equals(StatoVariazioneSostituzione.DA_VARIARE.value()))
.orElse(Boolean.FALSE)) {
if(!isAbilitatoCrudMandatoVariazioneBP) {
setModel(context, createEmptyModelForSearch(context));
setStatus(SEARCH);
setMessage(ERROR_MESSAGE, "Mandato in stato 'DA VARIARE', accesso non consentito!");
} else {
CRUDMandatoVariazioneBP crudMandatoVariazioneBP =
Optional.ofNullable(context.createBusinessProcess("CRUDMandatoVariazioneBP", new Object[]{"M"}))
.filter(CRUDMandatoVariazioneBP.class::isInstance)
.map(CRUDMandatoVariazioneBP.class::cast)
.orElseThrow(() -> new BusinessProcessException("Non è possibile procedere alla variazione del Mandato"));
crudMandatoVariazioneBP.setModel(context, mandatoBulk);
context.closeBusinessProcess();
context.addBusinessProcess(crudMandatoVariazioneBP);
}
}
}
/**
* Insert the method's description here.
* Creation date: (12/11/2002 11.44.11)
*
* @return it.cnr.jada.util.action.SimpleDetailCRUDController
*/
public final it.cnr.jada.util.action.SimpleDetailCRUDController getDocumentiAttiviPerRegolarizzazione() {
return documentiAttiviPerRegolarizzazione;
}
/**
* Metodo con cui si ottiene il valore della variabile documentiPassivi
* di tipo SimpleDetailCRUDController.
*
* @return it.cnr.jada.util.action.SimpleDetailCRUDController
*/
public final it.cnr.jada.util.action.SimpleDetailCRUDController getDocumentiPassivi() {
return documentiPassivi;
}
/**
* Metodo con cui si ottiene il valore della variabile documentiPassiviSelezionati
* di tipo SimpleDetailCRUDController.
*
* @return it.cnr.jada.util.action.SimpleDetailCRUDController
*/
public final it.cnr.jada.util.action.SimpleDetailCRUDController getDocumentiPassiviSelezionati() {
return documentiPassiviSelezionati;
}
/**
* Abilito il bottone di dettaglio della fattura solo se il mandato e' in fase di modifica/inserimento
*
* isEditable = FALSE se il mandato e' in visualizzazione
* = TRUE se il mandato e' in modifica/inserimento
*/
public boolean isDettaglioFatturaPerDoc_passivoEnabled() {
return isEditable() && (isEditing() || isInserting()) && (getDocumentiPassivi().getSelection().getFocus() >= 0);
}
/**
* Abilito il bottone di dettaglio della fattura solo se il mandato e' in fase di modifica/inserimento
*
* isEditable = FALSE se il mandato e' in visualizzazione
* = TRUE se il mandato e' in modifica/inserimento
*/
public boolean isDettaglioFatturaPerMandato_rigaEnabled() {
return isEditable() && (isEditing() || isInserting()) && (getDocumentiPassiviSelezionati().getSelection().getFocus() >= 0);
}
/**
* Abilito il bottone di disponibilità di cassa per capitolo
*
* isEditable = FALSE se il mandato non ha righe
* = TRUE se il mandato ha righe
*/
public boolean isDispCassaCapitoloButtonEnabled() {
boolean soloPgiro = true;
for (Iterator i = ((MandatoBulk) getModel()).getMandato_rigaColl().iterator(); i.hasNext(); )
if (!((Mandato_rigaBulk) i.next()).getFl_pgiro().booleanValue()) {
soloPgiro = false;
break;
}
return !soloPgiro && ((MandatoBulk) getModel()).getMandato_rigaColl().size() > 0;
}
/**
* Abilito il tab di ricerca dei documenti solo se il mandato e' in fase di modifica/inserimento
* e non è stato pagato o annullato.
*
* isEditable = FALSE se il mandato e' in visualizzazione
* = TRUE se il mandato e' in modifica/inserimento
*/
public boolean isRicercaDocumentiTabEnabled() {
return isEditable() && !((MandatoBulk) getModel()).isPagato() && !((MandatoBulk) getModel()).isAnnullato();
}
/**
* Inzializza il ricevente nello stato di SEARCH.
*
* @param context ActionContext in uso.
*/
public void resetForSearch(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
try {
super.resetForSearch(context);
setTab("tab", "tabMandato");
} catch (Throwable e) {
throw new it.cnr.jada.action.BusinessProcessException(e);
}
}
/**
* Effettua un salvataggio del modello corrente.
* Valido solo se il ricevente è nello stato di INSERT o EDIT.
*
* @param context ActionContext in uso.
*/
public void save(ActionContext context) throws ValidationException, BusinessProcessException {
final MandatoBulk mandatoBulk = Optional.ofNullable(getModel())
.filter(MandatoBulk.class::isInstance)
.map(MandatoBulk.class::cast)
.orElseThrow(() -> new ValidationException("Modello non trovato!"));
final boolean daVariare = isDaVariare();
final String statoTrasmissione = mandatoBulk.getStato_trasmissione();
final boolean isProbabileVariataDtPagamentoRich = this.isViewing() && !mandatoBulk.isRODtPagamentoRichiesta();
if (daVariare || isProbabileVariataDtPagamentoRich) {
setStatus(EDIT);
if (daVariare) {
mandatoBulk.setStato_trasmissione(MandatoBulk.STATO_TRASMISSIONE_NON_INSERITO);
mandatoBulk.setStatoVarSos(StatoVariazioneSostituzione.VARIAZIONE_DEFINITIVA.value());
}
}
try {
super.save(context);
} catch (Exception _ex) {
if (daVariare || isProbabileVariataDtPagamentoRich) {
setStatus(VIEW);
if (daVariare) {
mandatoBulk.setStatoVarSos(StatoVariazioneSostituzione.DA_VARIARE.value());
mandatoBulk.setStato_trasmissione(statoTrasmissione);
}
}
throw handleException(_ex);
}
this.setTab("tab", "tabMandato");
}
/**
* Metodo con cui si ottiene il valore della variabile codiciSiopeCollegati
* di tipo SimpleDetailCRUDController.
*
* @return it.cnr.jada.util.action.SimpleDetailCRUDController
*/
public final it.cnr.jada.util.action.SimpleDetailCRUDController getCodiciSiopeCollegati() {
return codiciSiopeCollegati;
}
/**
* Metodo con cui si ottiene il valore della variabile codiciSiopeCollegabili
* di tipo SimpleDetailCRUDController.
*
* @return it.cnr.jada.util.action.SimpleDetailCRUDController
*/
public final it.cnr.jada.util.action.SimpleDetailCRUDController getCodiciSiopeCollegabili() {
return codiciSiopeCollegabili;
}
protected void initialize(ActionContext actioncontext) throws BusinessProcessException {
super.initialize(actioncontext);
try {
setSiope_attiva(Utility.createParametriCnrComponentSession().getParametriCnr(actioncontext.getUserContext(), CNRUserContext.getEsercizio(actioncontext.getUserContext())).getFl_siope().booleanValue());
setCup_attivo(Utility.createParametriCnrComponentSession().getParametriCnr(actioncontext.getUserContext(), CNRUserContext.getEsercizio(actioncontext.getUserContext())).getFl_cup().booleanValue());
setSiope_cup_attivo(Utility.createParametriCnrComponentSession().getParametriCnr(actioncontext.getUserContext(), CNRUserContext.getEsercizio(actioncontext.getUserContext())).getFl_siope_cup().booleanValue());
setTesoreria_unica(Utility.createParametriCnrComponentSession().getParametriCnr(actioncontext.getUserContext(), CNRUserContext.getEsercizio(actioncontext.getUserContext())).getFl_tesoreria_unica().booleanValue());
setSupervisore(Utility.createUtenteComponentSession().isSupervisore(actioncontext.getUserContext()));
final CNRUserInfo cnrUserInfo = Optional.ofNullable(actioncontext)
.flatMap(actionContext -> Optional.ofNullable(actionContext.getUserInfo()))
.filter(CNRUserInfo.class::isInstance)
.map(CNRUserInfo.class::cast)
.orElseThrow(() -> new BusinessProcessException("Cannot find UserInfo in context"));
final Unita_organizzativa_enteBulk uoEnte = Optional.ofNullable(Utility.createUnita_organizzativaComponentSession().getUoEnte(actioncontext.getUserContext()))
.filter(Unita_organizzativa_enteBulk.class::isInstance)
.map(Unita_organizzativa_enteBulk.class::cast)
.orElseThrow(() -> new BusinessProcessException("Unita ENTE non trovata"));
isAbilitatoCrudMandatoVariazioneBP = Optional.ofNullable(GestioneUtenteAction.getComponentSession()
.validaBPPerUtente(actioncontext.getUserContext(),
cnrUserInfo.getUtente(),
uoEnte.getCd_unita_organizzativa(), MANDATO_VARIAZIONE_BP)).isPresent();
} catch (Throwable throwable) {
throw new BusinessProcessException(throwable);
}
}
public boolean isSiope_attiva() {
return siope_attiva;
}
private void setSiope_attiva(boolean siope_attiva) {
this.siope_attiva = siope_attiva;
}
public boolean isSiopeBloccante(ActionContext actioncontext) throws BusinessProcessException {
try {
return ((MandatoBulk) getModel()).getUnita_organizzativa().getCd_tipo_unita().equalsIgnoreCase(Tipo_unita_organizzativaHome.TIPO_UO_SAC) ||
((MandatoBulk) getModel()).getUnita_organizzativa().equalsByPrimaryKey(Utility.createUnita_organizzativaComponentSession().getUoEnte(actioncontext.getUserContext()));
} catch (it.cnr.jada.comp.ComponentException ex) {
throw handleException(ex);
} catch (java.rmi.RemoteException ex) {
throw handleException(ex);
}
}
public boolean isAggiungiRimuoviCodiciSiopeEnabled() {
return (!isInputReadonly() &&
getStatus() != VIEW &&
((MandatoBulk) getModel()).getStato_trasmissione() != null &&
((MandatoBulk) getModel()).getStato_trasmissione().equals(MandatoBulk.STATO_TRASMISSIONE_NON_INSERITO)) ||
isDaVariare();
}
public void selezionaRigaSiopeDaCompletare(ActionContext actioncontext) throws it.cnr.jada.action.BusinessProcessException {
MandatoBulk mandato = (MandatoBulk) getModel();
Mandato_rigaBulk rigaDaCompletare = null;
if (mandato != null) {
mandato:
for (Iterator i = mandato.getMandato_rigaColl().iterator(); i.hasNext(); ) {
Mandato_rigaBulk riga = (Mandato_rigaBulk) i.next();
if (!riga.getTipoAssociazioneSiope().equals(Mandato_rigaBulk.SIOPE_TOTALMENTE_ASSOCIATO)) {
rigaDaCompletare = riga;
break mandato;
}
}
}
if (rigaDaCompletare != null) {
documentiPassiviSelezionati.getSelection().setFocus(documentiPassiviSelezionati.getDetails().indexOf(rigaDaCompletare));
documentiPassiviSelezionati.setModelIndex(actioncontext, documentiPassiviSelezionati.getDetails().indexOf(rigaDaCompletare));
resyncChildren(actioncontext);
}
}
public SimpleDetailCRUDController getScadenzeAccertamentoPerRegolarizzazione() {
return scadenzeAccertamentoPerRegolarizzazione;
}
/**
* Metodo utilizzato per caricare l'elenco delle scadenze dell'accertamento per la regolarizzazione.
*
* @param context ActionContext in uso.
*/
public void caricaScadenzeAccertamentoPerRegolarizzazione(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
try {
MandatoIBulk mandato = (MandatoIBulk) getModel();
mandato = ((MandatoComponentSession) createComponentSession()).listaScadenzeAccertamentoPerRegolarizzazione(context.getUserContext(), mandato);
setModel(context, mandato);
getScadenzeAccertamentoPerRegolarizzazione().getSelection().clear();
resyncChildren(context);
} catch (Exception e) {
throw handleException(e);
}
}
public SimpleDetailCRUDController getCupCollegati() {
return cupCollegati;
}
private void validateCupCollegati(ActionContext context, OggettoBulk model) throws ValidationException {
try {
if (getCupCollegati() != null && getCupCollegati().getModel() != null) {
getCupCollegati().getModel().validate(getModel());
completeSearchTools(context, this);
}
} catch (BusinessProcessException e) {
handleException(e);
}
MandatoCupBulk bulk = (MandatoCupBulk) model;
BigDecimal tot_col = BigDecimal.ZERO;
if (bulk != null && bulk.getMandato_riga() != null && bulk.getMandato_riga().getMandatoCupColl() != null && !bulk.getMandato_riga().getMandatoCupColl().isEmpty()) {
if (bulk.getCdCup() == null)
throw new ValidationException("Attenzione. Il codice Cup è obbligatorio");
if (bulk.getImporto() == null)
throw new ValidationException("Attenzione. L'importo associato al codice Cup è obbligatorio");
BulkList list = bulk.getMandato_riga().getMandatoCupColl();
for (Iterator i = list.iterator(); i.hasNext(); ) {
MandatoCupBulk l = (MandatoCupBulk) i.next();
if (l.getCdCup() != null) {
if (bulk != l && bulk.getCdCup().compareTo(l.getCdCup()) == 0)
throw new ValidationException("Attenzione. Ogni Cup può essere utilizzato una sola volta per ogni riga del mandato. ");
tot_col = tot_col.add(l.getImporto());
}
}
if (tot_col.compareTo(bulk.getMandato_riga().getIm_mandato_riga()) > 0)
throw new ValidationException("Attenzione. Il totale associato al CUP è superiore all'importo della riga del mandato.");
}
}
private void validateSiopeCupCollegati(ActionContext context, OggettoBulk model) throws ValidationException {
try {
if (getSiopeCupCollegati() != null && getSiopeCupCollegati().getModel() != null) {
getSiopeCupCollegati().getModel().validate(getModel());
completeSearchTools(context, this);
}
} catch (BusinessProcessException e) {
handleException(e);
}
MandatoSiopeCupBulk bulk = (MandatoSiopeCupBulk) model;
BigDecimal tot_col = BigDecimal.ZERO;
if (bulk != null && bulk.getMandatoSiope() != null && bulk.getMandatoSiope().getMandatoSiopeCupColl() != null && !bulk.getMandatoSiope().getMandatoSiopeCupColl().isEmpty()) {
if (bulk.getCdCup() == null)
throw new ValidationException("Attenzione. Il codice Cup è obbligatorio");
if (bulk.getImporto() == null)
throw new ValidationException("Attenzione. L'importo associato al codice Cup è obbligatorio");
BulkList list = bulk.getMandatoSiope().getMandatoSiopeCupColl();
for (Iterator i = list.iterator(); i.hasNext(); ) {
MandatoSiopeCupBulk l = (MandatoSiopeCupBulk) i.next();
if (l.getCdCup() != null) {
if (bulk != l && bulk.getCdCup().compareTo(l.getCdCup()) == 0)
throw new ValidationException("Attenzione. Ogni Cup può essere utilizzato una sola volta per ogni riga di mandato/siope. ");
tot_col = tot_col.add(l.getImporto());
}
}
if (tot_col.compareTo(bulk.getMandatoSiope().getImporto()) > 0)
throw new ValidationException("Attenzione. Il totale associato al CUP è superiore all'importo della riga del mandato associato al siope.");
}
}
public boolean isCup_attivo() {
return cup_attivo;
}
public void setCup_attivo(boolean cup_attivo) {
this.cup_attivo = cup_attivo;
}
public boolean isNewButtonEnabled() {
if (((MandatoBulk) getModel()).getUnita_organizzativa().getCd_tipo_unita().compareTo(it.cnr.contab.config00.sto.bulk.Tipo_unita_organizzativaHome.TIPO_UO_ENTE) == 0 &&
(((MandatoBulk) getModel()).getTi_mandato() == null ||
!((MandatoBulk) getModel()).getTi_mandato().equals(((MandatoBulk) getModel()).TIPO_REGOLARIZZAZIONE)))
return false;
else
return super.isNewButtonEnabled();
}
public boolean isDeleteButtonEnabled() {
if (((MandatoBulk) getModel()).getUnita_organizzativa().getCd_tipo_unita().compareTo(it.cnr.contab.config00.sto.bulk.Tipo_unita_organizzativaHome.TIPO_UO_ENTE) == 0 &&
((MandatoBulk) getModel()).getCd_uo_origine() != null && (((MandatoBulk) getModel()).getCd_uo_origine().compareTo(((MandatoBulk) getModel()).getCd_unita_organizzativa()) == 0) &&
(((MandatoBulk) getModel()).getTi_mandato() == null ||
!((MandatoBulk) getModel()).getTi_mandato().equals(((MandatoBulk) getModel()).TIPO_REGOLARIZZAZIONE)))
return false;
else
return super.isDeleteButtonEnabled();
}
protected void init(it.cnr.jada.action.Config config, it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
try {
Configurazione_cnrComponentSession sess = (Configurazione_cnrComponentSession) it.cnr.jada.util.ejb.EJBCommonServices
.createEJB("CNRCONFIG00_EJB_Configurazione_cnrComponentSession");
this.attivoSiopeplus = Optional.ofNullable(sess.getVal01(
context.getUserContext(),
CNRUserInfo.getEsercizio(context),
null,
Configurazione_cnrBulk.PK_FLUSSO_ORDINATIVI,
Configurazione_cnrBulk.SK_ATTIVO_SIOPEPLUS))
.map(s -> Boolean.valueOf(s))
.orElse(Boolean.FALSE);
} catch (ComponentException e) {
throw handleException(e);
} catch (RemoteException e) {
throw handleException(e);
}
super.init(config, context);
//se entro dalla 999 in gestione mandato non devo entrare in inserimento
if (((MandatoBulk) getModel()).getUnita_organizzativa().getCd_tipo_unita().compareTo(it.cnr.contab.config00.sto.bulk.Tipo_unita_organizzativaHome.TIPO_UO_ENTE) == 0 &&
!isSearching() &&
!((MandatoBulk) getModel()).getTi_mandato().equals(((MandatoBulk) getModel()).TIPO_REGOLARIZZAZIONE)) {
setStatus(SEARCH);
resetForSearch(context);
}
}
public boolean isSiope_cup_attivo() {
return siope_cup_attivo;
}
public void setSiope_cup_attivo(boolean siope_cup_attivo) {
this.siope_cup_attivo = siope_cup_attivo;
}
public SimpleDetailCRUDController getSiopeCupCollegati() {
return siopeCupCollegati;
}
public boolean isTesoreria_unica() {
return tesoreria_unica;
}
public void setTesoreria_unica(boolean tesoreria_unica) {
this.tesoreria_unica = tesoreria_unica;
}
private MandatoComponentSession getMandatoComponentSession() throws BusinessProcessException {
return Optional.ofNullable(createComponentSession())
.filter(MandatoComponentSession.class::isInstance)
.map(MandatoComponentSession.class::cast)
.orElseThrow(() -> new BusinessProcessException("Errore nella creazione dell'EJB"));
}
private CRUDComponentSession getCRUDComponentSession() throws BusinessProcessException {
return Optional.ofNullable(createComponentSession("JADAEJB_CRUDComponentSession"))
.filter(CRUDComponentSession.class::isInstance)
.map(CRUDComponentSession.class::cast)
.orElseThrow(() -> new BusinessProcessException("Errore nella creazione dell'EJB"));
}
private IDocumentoAmministrativoSpesaComponentSession getDocumentoAmministrativoSpesaComponentSession(String jndiName) throws BusinessProcessException {
return Optional.ofNullable(createComponentSession(jndiName))
.filter(IDocumentoAmministrativoSpesaComponentSession.class::isInstance)
.map(IDocumentoAmministrativoSpesaComponentSession.class::cast)
.orElseThrow(() -> new BusinessProcessException("Errore nella creazione dell'EJB"));
}
private RemoteIterator findObbligazioni(UserContext context, IDocumentoAmministrativoSpesaBulk documentoAmministrativoSpesaBulk, Filtro_ricerca_obbligazioniVBulk filtro) throws BusinessProcessException, RemoteException, ComponentException {
if (!Optional.ofNullable(documentoAmministrativoSpesaBulk).isPresent())
return null;
switch (documentoAmministrativoSpesaBulk.getCd_tipo_doc_amm()) {
case Numerazione_doc_ammBulk.TIPO_MISSIONE: {
return getDocumentoAmministrativoSpesaComponentSession("CNRMISSIONI00_EJB_MissioneComponentSession")
.cercaObbligazioni(context, filtro);
}
case Numerazione_doc_ammBulk.TIPO_FATTURA_PASSIVA: {
return getDocumentoAmministrativoSpesaComponentSession("CNRDOCAMM00_EJB_FatturaPassivaComponentSession")
.cercaObbligazioni(context, filtro);
}
case Numerazione_doc_ammBulk.TIPO_COMPENSO: {
return getDocumentoAmministrativoSpesaComponentSession("CNRCOMPENSI00_EJB_CompensoComponentSession")
.cercaObbligazioni(context, filtro);
}
case Numerazione_doc_ammBulk.TIPO_ANTICIPO: {
return getDocumentoAmministrativoSpesaComponentSession("CNRMISSIONI00_EJB_AnticipoComponentSession")
.cercaObbligazioni(context, filtro);
}
case Numerazione_doc_ammBulk.TIPO_DOC_GENERICO_S: {
return getDocumentoAmministrativoSpesaComponentSession("CNRDOCAMM00_EJB_DocumentoGenericoComponentSession")
.cercaObbligazioni(context, filtro);
}
default:
return null;
}
}
private Obbligazione_scadenzarioBulk cambiaObbligazione(UserContext context, Mandato_rigaBulk mandato_rigaBulk,
IDocumentoAmministrativoSpesaBulk documentoAmministrativoSpesaBulk,
Obbligazione_scadenzarioBulk obbligazione_scadenzarioBulk) throws BusinessProcessException, RemoteException, ComponentException {
switch (documentoAmministrativoSpesaBulk.getCd_tipo_doc_amm()) {
case Numerazione_doc_ammBulk.TIPO_MISSIONE: {
final IDocumentoAmministrativoSpesaComponentSession missioneComponentSession =
getDocumentoAmministrativoSpesaComponentSession("CNRMISSIONI00_EJB_MissioneComponentSession");
MissioneBulk missioneBulk = Optional.ofNullable(
missioneComponentSession.inizializzaBulkPerModifica(context,
Optional.ofNullable(documentoAmministrativoSpesaBulk)
.filter(MissioneBulk.class::isInstance)
.map(MissioneBulk.class::cast)
.orElseThrow(() -> new BusinessProcessException("Documento amministrativo non di tipo Missione!"))))
.filter(MissioneBulk.class::isInstance)
.map(MissioneBulk.class::cast)
.orElseThrow(() -> new BusinessProcessException("Documento amministrativo non di tipo Missione!"));
final Obbligazione_scadenzarioBulk obbligazione_scadenzario = missioneBulk.getObbligazione_scadenzario();
obbligazione_scadenzario.setIm_associato_doc_amm(BigDecimal.ZERO);
obbligazione_scadenzario.setIm_associato_doc_contabile(BigDecimal.ZERO);
obbligazione_scadenzario.setToBeUpdated();
getCRUDComponentSession().modificaConBulk(context, obbligazione_scadenzario);
missioneBulk.setObbligazione_scadenzario(obbligazione_scadenzarioBulk);
missioneBulk.setToBeUpdated();
return Optional.ofNullable(missioneComponentSession.modificaConBulk(context, missioneBulk))
.filter(MissioneBulk.class::isInstance)
.map(MissioneBulk.class::cast)
.map(MissioneBulk::getObbligazione_scadenzario)
.orElseThrow(() -> new BusinessProcessException("Impegno sulla missione non trovato!"));
}
case Numerazione_doc_ammBulk.TIPO_FATTURA_PASSIVA: {
final IDocumentoAmministrativoSpesaComponentSession fatturaPassivaComponentSession =
getDocumentoAmministrativoSpesaComponentSession("CNRDOCAMM00_EJB_FatturaPassivaComponentSession");
Fattura_passivaBulk fatturaPassivaBulk = Optional.ofNullable(
fatturaPassivaComponentSession.inizializzaBulkPerModifica(context,
Optional.ofNullable(documentoAmministrativoSpesaBulk)
.filter(Fattura_passivaBulk.class::isInstance)
.map(Fattura_passivaBulk.class::cast)
.orElseThrow(() -> new BusinessProcessException("Documento amministrativo non di tipo Fattura!"))))
.filter(Fattura_passivaBulk.class::isInstance)
.map(Fattura_passivaBulk.class::cast)
.orElseThrow(() -> new BusinessProcessException("Documento amministrativo non di tipo Fattura!"));
final BulkList fattura_passiva_dettColl = fatturaPassivaBulk.getFattura_passiva_dettColl();
final AtomicReference fatturaPassivaRigaBulkAtomicReference = new AtomicReference<>();
for (Fattura_passiva_rigaBulk fattura_passiva_rigaBulk : fattura_passiva_dettColl) {
if (fattura_passiva_rigaBulk.getObbligazione_scadenziario().equalsByPrimaryKey(
new Obbligazione_scadenzarioBulk(
mandato_rigaBulk.getCd_cds(),
mandato_rigaBulk.getEsercizio_obbligazione(),
mandato_rigaBulk.getEsercizio_ori_obbligazione(),
mandato_rigaBulk.getPg_obbligazione(),
mandato_rigaBulk.getPg_obbligazione_scadenzario()
)
)) {
fatturaPassivaBulk.removeFromFattura_passiva_obbligazioniHash(fattura_passiva_rigaBulk);
fatturaPassivaBulk.getDocumentiContabiliCancellati().add(fattura_passiva_rigaBulk.getObbligazione_scadenziario());
fatturaPassivaBulk.addToFattura_passiva_obbligazioniHash(obbligazione_scadenzarioBulk, fattura_passiva_rigaBulk);
fattura_passiva_rigaBulk.setObbligazione_scadenziario(obbligazione_scadenzarioBulk);
fattura_passiva_rigaBulk.setToBeUpdated();
fatturaPassivaRigaBulkAtomicReference.set(fattura_passiva_rigaBulk);
}
}
fatturaPassivaBulk.setToBeUpdated();
final Fattura_passivaBulk fattura_passivaBulkNew = Optional.ofNullable(fatturaPassivaComponentSession.modificaConBulk(context, fatturaPassivaBulk))
.filter(Fattura_passivaBulk.class::isInstance)
.map(Fattura_passivaBulk.class::cast)
.orElseThrow(() -> new BusinessProcessException("Errore nell'aggiornamento della Fattura Passiva"));
return fattura_passivaBulkNew
.getFattura_passiva_dettColl()
.stream()
.filter(fattura_passiva_rigaBulk -> fattura_passiva_rigaBulk.equalsByPrimaryKey(fatturaPassivaRigaBulkAtomicReference.get()))
.findAny()
.map(Fattura_passiva_rigaBulk::getObbligazione_scadenziario)
.orElseThrow(() -> new BusinessProcessException("Impegno sulla riga non trovato!"));
}
case Numerazione_doc_ammBulk.TIPO_DOC_GENERICO_S: {
final IDocumentoAmministrativoSpesaComponentSession documentoGenericoComponentSession =
getDocumentoAmministrativoSpesaComponentSession("CNRDOCAMM00_EJB_DocumentoGenericoComponentSession");
Documento_genericoBulk documentoGenericoPassivoBulk = Optional.ofNullable(
documentoGenericoComponentSession.inizializzaBulkPerModifica(context,
Optional.ofNullable(documentoAmministrativoSpesaBulk)
.filter(Documento_genericoBulk.class::isInstance)
.map(Documento_genericoBulk.class::cast)
.orElseThrow(() -> new BusinessProcessException("Documento amministrativo non di tipo Generico!"))))
.filter(Documento_genericoBulk.class::isInstance)
.map(Documento_genericoBulk.class::cast)
.orElseThrow(() -> new BusinessProcessException("Documento amministrativo non di tipo Generico!"));
final BulkList documento_generico_dettColl = documentoGenericoPassivoBulk.getDocumento_generico_dettColl();
final AtomicReference documentoGenericoRigaBulkAtomicReference = new AtomicReference<>();
for (Documento_generico_rigaBulk documentoGenericoRigaBulk : documento_generico_dettColl) {
if (documentoGenericoRigaBulk.getObbligazione_scadenziario().equalsByPrimaryKey(
new Obbligazione_scadenzarioBulk(
mandato_rigaBulk.getCd_cds(),
mandato_rigaBulk.getEsercizio_obbligazione(),
mandato_rigaBulk.getEsercizio_ori_obbligazione(),
mandato_rigaBulk.getPg_obbligazione(),
mandato_rigaBulk.getPg_obbligazione_scadenzario()
)
)) {
documentoGenericoPassivoBulk.removeFromDocumento_generico_obbligazioniHash(documentoGenericoRigaBulk);
documentoGenericoPassivoBulk.getDocumentiContabiliCancellati().add(documentoGenericoRigaBulk.getObbligazione_scadenziario());
documentoGenericoPassivoBulk.addToDocumento_generico_obbligazioniHash(obbligazione_scadenzarioBulk, documentoGenericoRigaBulk);
documentoGenericoRigaBulk.setObbligazione_scadenziario(obbligazione_scadenzarioBulk);
documentoGenericoRigaBulk.setToBeUpdated();
documentoGenericoRigaBulkAtomicReference.set(documentoGenericoRigaBulk);
}
}
documentoGenericoPassivoBulk.setToBeUpdated();
final Documento_genericoBulk documento_genericoBulkNew = Optional.ofNullable(documentoGenericoComponentSession.modificaConBulk(context, documentoGenericoPassivoBulk))
.filter(Documento_genericoBulk.class::isInstance)
.map(Documento_genericoBulk.class::cast)
.orElseThrow(() -> new BusinessProcessException("Documento amministrativo non di tipo Generico!"));
return documento_genericoBulkNew
.getDocumento_generico_dettColl()
.stream()
.filter(documentoGenericoRigaBulk -> documentoGenericoRigaBulk.equalsByPrimaryKey(documentoGenericoRigaBulkAtomicReference.get()))
.findAny()
.map(Documento_generico_rigaBulk::getObbligazione_scadenziario)
.orElseThrow(() -> new BusinessProcessException("Impegno sulla riga non trovato!"));
}
case Numerazione_doc_ammBulk.TIPO_COMPENSO: {
final IDocumentoAmministrativoSpesaComponentSession compensoComponentSession =
getDocumentoAmministrativoSpesaComponentSession("CNRCOMPENSI00_EJB_CompensoComponentSession");
CompensoBulk compensoBulk = Optional.ofNullable(
compensoComponentSession.inizializzaBulkPerModifica(context,
Optional.ofNullable(documentoAmministrativoSpesaBulk)
.filter(CompensoBulk.class::isInstance)
.map(CompensoBulk.class::cast)
.orElseThrow(() -> new BusinessProcessException("Documento amministrativo non di tipo Compenso!"))))
.filter(CompensoBulk.class::isInstance)
.map(CompensoBulk.class::cast)
.orElseThrow(() -> new BusinessProcessException("Documento amministrativo non di tipo Compenso!"));
final Obbligazione_scadenzarioBulk obbligazione_scadenzario = compensoBulk.getObbligazioneScadenzario();
obbligazione_scadenzario.setIm_associato_doc_amm(BigDecimal.ZERO);
obbligazione_scadenzario.setIm_associato_doc_contabile(BigDecimal.ZERO);
obbligazione_scadenzario.setToBeUpdated();
getCRUDComponentSession().modificaConBulk(context, obbligazione_scadenzario);
compensoBulk.setObbligazioneScadenzario(obbligazione_scadenzarioBulk);
compensoBulk.setToBeUpdated();
return Optional.ofNullable(compensoComponentSession.modificaConBulk(context, compensoBulk))
.filter(CompensoBulk.class::isInstance)
.map(CompensoBulk.class::cast)
.map(CompensoBulk::getObbligazioneScadenzario)
.orElseThrow(() -> new BusinessProcessException("Impegno sulla missione non trovato!"));
}
case Numerazione_doc_ammBulk.TIPO_ANTICIPO: {
final IDocumentoAmministrativoSpesaComponentSession anticipoComponentSession =
getDocumentoAmministrativoSpesaComponentSession("CNRMISSIONI00_EJB_AnticipoComponentSession");
AnticipoBulk anticipoBulk = Optional.ofNullable(
anticipoComponentSession.inizializzaBulkPerModifica(context,
Optional.ofNullable(documentoAmministrativoSpesaBulk)
.filter(AnticipoBulk.class::isInstance)
.map(AnticipoBulk.class::cast)
.orElseThrow(() -> new BusinessProcessException("Documento amministrativo non di tipo Anticipo!"))))
.filter(AnticipoBulk.class::isInstance)
.map(AnticipoBulk.class::cast)
.orElseThrow(() -> new BusinessProcessException("Documento amministrativo non di tipo Anticipo!"));
final Obbligazione_scadenzarioBulk obbligazione_scadenzario = anticipoBulk.getScadenza_obbligazione();
obbligazione_scadenzario.setIm_associato_doc_amm(BigDecimal.ZERO);
obbligazione_scadenzario.setIm_associato_doc_contabile(BigDecimal.ZERO);
obbligazione_scadenzario.setToBeUpdated();
getCRUDComponentSession().modificaConBulk(context, obbligazione_scadenzario);
anticipoBulk.setScadenza_obbligazione(obbligazione_scadenzarioBulk);
anticipoBulk.setToBeUpdated();
return Optional.ofNullable(anticipoComponentSession.modificaConBulk(context, anticipoBulk))
.filter(AnticipoBulk.class::isInstance)
.map(AnticipoBulk.class::cast)
.map(AnticipoBulk::getScadenza_obbligazione)
.orElseThrow(() -> new BusinessProcessException("Impegno sull' Anticipo non trovato!"));
}
default: {
return null;
}
}
}
private Mandato_rigaBulk getCurrentMandato_rigaBulk() throws BusinessProcessException {
return Optional.ofNullable(getDocumentiPassiviSelezionati().getModel())
.filter(Mandato_rigaBulk.class::isInstance)
.map(Mandato_rigaBulk.class::cast)
.orElseThrow(() -> new BusinessProcessException("Riga non selezionata!"));
}
/**
* É stato richiesto un cambio Impegno sulla riga di Mandato
*
* @param context
* @param filtro
* @return
* @throws BusinessProcessException
*/
@Override
public RemoteIterator findObbligazioni(UserContext context, Filtro_ricerca_obbligazioniVBulk filtro) throws BusinessProcessException {
try {
return findObbligazioni(context, getMandatoComponentSession().getDocumentoAmministrativoSpesaBulk(context, getCurrentMandato_rigaBulk()), filtro);
} catch (it.cnr.jada.comp.ComponentException e) {
throw handleException(e);
} catch (java.rmi.RemoteException e) {
throw handleException(e);
}
}
/**
* @param actionContext
* @param clauses
* @param bulk
* @param context
* @param property
* @return
* @throws BusinessProcessException
*/
@Override
public RemoteIterator findObbligazioniAttributes(ActionContext actionContext, CompoundFindClause clauses, OggettoBulk bulk, OggettoBulk context, String property) throws BusinessProcessException {
try {
return it.cnr.jada.util.ejb.EJBCommonServices.openRemoteIterator(
actionContext,
getMandatoComponentSession().cerca(
actionContext.getUserContext(),
clauses,
bulk,
context,
property));
} catch (it.cnr.jada.comp.ComponentException e) {
throw handleException(e);
} catch (java.rmi.RemoteException e) {
throw handleException(e);
}
}
public void cambiaObbligazioneScadenzario(ActionContext context, Mandato_rigaBulk mandato_rigaBulk, Obbligazione_scadenzarioBulk scadenza) throws BusinessProcessException {
try {
/**
* Cambio l'impegno sul documento amministrativo collegato
*/
final Obbligazione_scadenzarioBulk obbligazione_scadenzarioBulk =
Optional.ofNullable(
cambiaObbligazione(context.getUserContext(), mandato_rigaBulk, getDocumentoAmministrativoCorrente(), scadenza)
).orElse(scadenza);
final Mandato_rigaBulk mandatoRigaClone = (Mandato_rigaBulk) mandato_rigaBulk.clone();
mandatoRigaClone.setMandato_siopeColl(new BulkList());
mandatoRigaClone.setMandatoCupColl(new BulkList());
Optional.ofNullable(
getDocumentiPassiviSelezionati().removeDetail(getDocumentiPassiviSelezionati().getModelIndex())
)
.filter(Mandato_rigaBulk.class::isInstance)
.map(Mandato_rigaBulk.class::cast)
.map(Mandato_rigaBulk::getMandato_siopeColl)
.map(BulkList::stream)
.orElse(Stream.empty())
.forEach(mandato_siopeBulk -> {
mandato_siopeBulk.setToBeDeleted();
for (MandatoSiopeCupBulk mandatoSiopeCupBulk : mandato_siopeBulk.getMandatoSiopeCupColl()) {
mandatoSiopeCupBulk.setToBeDeleted();
}
});
getDocumentiPassiviSelezionati().
setModelIndex(context, getDocumentiPassiviSelezionati().addDetail(mandatoRigaClone));
mandatoRigaClone.setEsercizio_obbligazione(obbligazione_scadenzarioBulk.getEsercizio());
mandatoRigaClone.setEsercizio_ori_obbligazione(obbligazione_scadenzarioBulk.getEsercizio_originale());
mandatoRigaClone.setPg_obbligazione(obbligazione_scadenzarioBulk.getPg_obbligazione());
mandatoRigaClone.setPg_obbligazione_scadenzario(obbligazione_scadenzarioBulk.getPg_obbligazione_scadenzario());
mandatoRigaClone.setElemento_voce(obbligazione_scadenzarioBulk.getObbligazione().getElemento_voce());
mandatoRigaClone.getMandato_siopeColl().clear();
mandatoRigaClone.setCodici_siopeColl(
getMandatoComponentSession()
.setCodiciSIOPECollegabili(context.getUserContext(), mandatoRigaClone)
.getCodici_siopeColl()
);
codiciSiopeCollegabili.resync(context);
getModel().setToBeUpdated();
mandatoRigaClone.setCrudStatus(OggettoBulk.TO_BE_CREATED);
setDirty(true);
} catch (ComponentException | RemoteException e) {
throw handleException(e);
}
}
@Override
public Accertamento_scadenzarioBulk getAccertamento_scadenziario_corrente() {
return null;
}
@Override
public IDocumentoAmministrativoBulk getBringBackDocAmm() {
return getDocumentoAmministrativoCorrente();
}
@Override
public Risultato_eliminazioneVBulk getDeleteManager() {
return Optional.ofNullable(deleteManager)
.map(risultato_eliminazioneVBulk -> {
risultato_eliminazioneVBulk.reset();
return risultato_eliminazioneVBulk;
})
.orElseGet(() -> new it.cnr.contab.docamm00.docs.bulk.Risultato_eliminazioneVBulk());
}
@Override
public IDocumentoAmministrativoSpesaBulk getDocumentoAmministrativoCorrente() {
try {
return getMandatoComponentSession().getDocumentoAmministrativoSpesaBulk(
null,
getCurrentMandato_rigaBulk()
);
} catch (ComponentException | RemoteException | BusinessProcessException e) {
throw new DetailedRuntimeException(e);
}
}
@Override
public Obbligazione_scadenzarioBulk getObbligazione_scadenziario_corrente() {
return null;
}
@Override
public boolean isAutoGenerated() {
return false;
}
@Override
public boolean isDeleting() {
return false;
}
@Override
public boolean isManualModify() {
return false;
}
@Override
public void setIsDeleting(boolean newIsDeleting) {
}
@Override
public void validaObbligazionePerDocAmm(ActionContext actionContext, OggettoBulk bulk) throws BusinessProcessException {
}
@Override
public IDefferUpdateSaldi getDefferedUpdateSaldiBulk() {
return Optional.ofNullable(getModel())
.filter(IDefferUpdateSaldi.class::isInstance)
.map(IDefferUpdateSaldi.class::cast)
.orElseThrow(() -> new DetailedRuntimeException("Modello non presente o non implementa IDefferUpdateSaldi"));
}
@Override
public IDefferedUpdateSaldiBP getDefferedUpdateSaldiParentBP() {
return this;
}
}