it.cnr.contab.pdg01.bp.CRUDPdgVariazioneRigaGestBP 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 .
*/
/*
* Created on Apr 21, 2006
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package it.cnr.contab.pdg01.bp;
import it.cnr.contab.config00.bulk.Parametri_cnrBulk;
import it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk;
import it.cnr.contab.config00.pdcfin.cla.bulk.V_classificazione_vociBulk;
import it.cnr.contab.config00.sto.bulk.DipartimentoBulk;
import it.cnr.contab.pdg00.bulk.Pdg_variazioneBulk;
import it.cnr.contab.pdg00.cdip.bulk.Ass_pdg_variazione_cdrBulk;
import it.cnr.contab.pdg00.ejb.PdGVariazioniComponentSession;
import it.cnr.contab.pdg01.bulk.Pdg_variazione_riga_entrata_gestBulk;
import it.cnr.contab.pdg01.bulk.Pdg_variazione_riga_gestBulk;
import it.cnr.contab.pdg01.bulk.Pdg_variazione_riga_spesa_gestBulk;
import it.cnr.contab.pdg01.ejb.CRUDPdgVariazioneRigaGestComponentSession;
import it.cnr.contab.utenze00.bp.CNRUserContext;
import it.cnr.contab.utenze00.bulk.CNRUserInfo;
import it.cnr.contab.util.Utility;
import it.cnr.jada.DetailedRuntimeException;
import it.cnr.jada.action.ActionContext;
import it.cnr.jada.action.BusinessProcessException;
import it.cnr.jada.action.HttpActionContext;
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.bulk.ValidationException;
import it.cnr.jada.comp.ComponentException;
import it.cnr.jada.util.action.CRUDBP;
import it.cnr.jada.util.action.SimpleCRUDBP;
import it.cnr.jada.util.action.SimpleDetailCRUDController;
import java.math.BigDecimal;
import java.rmi.RemoteException;
import java.util.Iterator;
import java.util.List;
/**
* @author rpagano
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class CRUDPdgVariazioneRigaGestBP extends SimpleCRUDBP {
private Parametri_cnrBulk parametriCnr;
private it.cnr.contab.config00.sto.bulk.CdrBulk centro_responsabilita;
private Pdg_variazioneBulk pdg_variazione;
private DipartimentoBulk dipartimentoSrivania;
private String uoScrivania;
private String tipoGestione;
private SimpleDetailCRUDController righeVariazioneEtrGest = new SimpleDetailCRUDController("RigheVariazioneEtrGest", Pdg_variazione_riga_entrata_gestBulk.class, "righeVariazioneEtrGest", this) {
protected void setModel(ActionContext actioncontext, OggettoBulk oggettobulk) {
super.setModel(actioncontext, oggettobulk);
}
public boolean isShrinkable() {
return super.isShrinkable() &&
isDettaglioGestionaleEnable((Pdg_variazione_riga_gestBulk) getModel());
}
public void removeAll(ActionContext actioncontext) throws ValidationException, BusinessProcessException {
List list = getDetails();
for (int i = list.size() - 1; i >= 0; i--) {
Pdg_variazione_riga_gestBulk dett = (Pdg_variazione_riga_gestBulk) list.get(i);
if (isDettaglioGestionaleEnable(dett))
removeDetail(dett, i);
}
getParentController().setDirty(true);
reset(actioncontext);
}
/**
* Metodo per aggiungere alla toolbar del Controller un tasto necessario per apporre
* il visto da parte del dipartimento.
* @param context Il contesto dell'azione
*/
@Override
public void writeHTMLToolbar(
javax.servlet.jsp.PageContext context,
boolean reset,
boolean find,
boolean delete, boolean closedToolbar) throws java.io.IOException, javax.servlet.ServletException {
super.writeHTMLToolbar(context, reset, find, delete, false);
if (getParentController() != null &&
((Ass_pdg_variazione_cdrBulk) getParentController().getModel()).getPdg_variazione().isApprovata() &&
getDipartimentoSrivania() != null &&
getDipartimentoSrivania().getCd_dipartimento() != null) {
String command = "javascript:submitForm('doApponiVistoDipartimento')";
it.cnr.jada.util.jsp.JSPUtils.toolbarButton(
context,
"img/properties16.gif",
!(getDetails().isEmpty() || ((CRUDBP) getParentController()).isSearching()) ? command : null,
true, "Apponi Visto",
HttpActionContext.isFromBootstrap(context));
}
super.closeButtonGROUPToolbar(context);
}
protected void validate(ActionContext actioncontext, OggettoBulk oggettobulk) throws ValidationException {
Pdg_variazione_riga_gestBulk dett = (Pdg_variazione_riga_gestBulk) oggettobulk;
validaRiga(actioncontext, dett);
}
};
private SimpleDetailCRUDController righeVariazioneSpeGest = new SimpleDetailCRUDController("RigheVariazioneSpeGest", Pdg_variazione_riga_spesa_gestBulk.class, "righeVariazioneSpeGest", this) {
protected void setModel(ActionContext actioncontext, OggettoBulk oggettobulk) {
super.setModel(actioncontext, oggettobulk);
}
public boolean isShrinkable() {
return super.isShrinkable() &&
isDettaglioGestionaleEnable((Pdg_variazione_riga_gestBulk) getModel());
}
public void removeAll(ActionContext actioncontext) throws ValidationException, BusinessProcessException {
List list = getDetails();
for (int i = list.size() - 1; i >= 0; i--) {
Pdg_variazione_riga_gestBulk dett = (Pdg_variazione_riga_gestBulk) list.get(i);
if (isDettaglioGestionaleEnable(dett))
removeDetail(dett, i);
}
getParentController().setDirty(true);
reset(actioncontext);
}
/**
* Metodo per aggiungere alla toolbar del Controller un tasto necessario per apporre
* il visto da parte del dipartimento.
* @param context Il contesto dell'azione
*/
@Override
public void writeHTMLToolbar(
javax.servlet.jsp.PageContext context,
boolean reset,
boolean find,
boolean delete, boolean closedToolbar) throws java.io.IOException, javax.servlet.ServletException {
super.writeHTMLToolbar(context, reset, find, delete, false);
if (getParentController() != null &&
((Ass_pdg_variazione_cdrBulk) getParentController().getModel()).getPdg_variazione().isApprovata() &&
getDipartimentoSrivania() != null &&
getDipartimentoSrivania().getCd_dipartimento() != null) {
String command = "javascript:submitForm('doApponiVistoDipartimento')";
it.cnr.jada.util.jsp.JSPUtils.toolbarButton(
context,
"img/properties16.gif",
!(getDetails().isEmpty() || ((CRUDBP) getParentController()).isSearching()) ? command : null,
true, "Apponi Visto",
HttpActionContext.isFromBootstrap(context));
}
super.closeButtonGROUPToolbar(context);
}
protected void validate(ActionContext actioncontext, OggettoBulk oggettobulk) throws ValidationException {
Pdg_variazione_riga_gestBulk dett = (Pdg_variazione_riga_gestBulk) oggettobulk;
validaRiga(actioncontext, dett);
if (dett != null && dett.getIm_spese_gest_accentrata_int() != null && dett.getIm_spese_gest_decentrata_int() != null &&
dett.getIm_spese_gest_accentrata_int().compareTo(BigDecimal.ZERO) != 0 && dett.getIm_spese_gest_decentrata_int().compareTo(BigDecimal.ZERO) != 0)
throw new ValidationException("Non è possibile indicare sulla stessa riga di variazione sia le spese Decentrate Esterne che le spese Accentrate Esterne, inserire un nuovo dettaglio.");
else if (dett != null && dett.getIm_spese_gest_accentrata_est() != null && dett.getIm_spese_gest_decentrata_est() != null &&
dett.getIm_spese_gest_accentrata_est().compareTo(BigDecimal.ZERO) != 0 && dett.getIm_spese_gest_decentrata_est().compareTo(BigDecimal.ZERO) != 0)
throw new ValidationException("Non è possibile indicare sulla stessa riga di variazione sia le spese Decentrate Esterne che le spese Accentrate Esterne, inserire un nuovo dettaglio.");
else if (dett != null && dett.getIm_spese_gest_accentrata_int() != null && dett.getIm_spese_gest_accentrata_int().compareTo(BigDecimal.ZERO) < 0)
throw new ValidationException("Non è possibile indicare un importo negativo per le spese Accentrare Interne, le restituzioni si registrano chiamando a partecipare alla variazione il CdR della SAC titolare della Spesa.");
else if (dett != null && dett.getIm_spese_gest_accentrata_est() != null && dett.getIm_spese_gest_accentrata_est().compareTo(BigDecimal.ZERO) < 0)
throw new ValidationException("Non è possibile indicare un importo negativo per le spese Accentrare Esterne, le restituzioni si registrano chiamando a partecipare alla variazione il CdR della SAC titolare della Spesa.");
else {
super.validate(actioncontext, oggettobulk);
calcolaTotaleQuotaSpesaRipartita();
}
}
public OggettoBulk removeDetail(OggettoBulk oggettobulk, int i) {
calcolaTotaleQuotaSpesaRipartita();
Ass_pdg_variazione_cdrBulk pdg = ((Ass_pdg_variazione_cdrBulk) getParentModel());
Pdg_variazione_riga_gestBulk varRiga = (Pdg_variazione_riga_gestBulk) oggettobulk;
pdg.setTotale_quota_spesa(Utility.nvl(pdg.getTotale_quota_spesa()).subtract(Utility.nvl(varRiga.getIm_variazione())));
return super.removeDetail(oggettobulk, i);
}
public void calcolaTotaleQuotaSpesaRipartita() {
Ass_pdg_variazione_cdrBulk pdg = ((Ass_pdg_variazione_cdrBulk) getParentModel());
pdg.setTotale_quota_spesa(Utility.ZERO);
for (Iterator righeVar = getDetails().iterator(); righeVar.hasNext(); ) {
Pdg_variazione_riga_gestBulk varRiga = (Pdg_variazione_riga_gestBulk) righeVar.next();
pdg.setTotale_quota_spesa(Utility.nvl(pdg.getTotale_quota_spesa()).add(Utility.nvl(varRiga.getIm_variazione())));
}
}
};
public CRUDPdgVariazioneRigaGestBP() {
super();
}
public CRUDPdgVariazioneRigaGestBP(String function) {
super(function);
}
public CRUDPdgVariazioneRigaGestBP(String function, it.cnr.contab.config00.sto.bulk.CdrBulk cdr, Pdg_variazioneBulk pdg_variazione, String tipoGestione) {
super(function);
setCentro_responsabilita(cdr);
setPdg_variazione(pdg_variazione);
setTipoGestione(tipoGestione);
}
public void save(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException, ValidationException {
super.save(context);
Ass_pdg_variazione_cdrBulk ass = (Ass_pdg_variazione_cdrBulk) this.getModel();
if (ass.getPdg_variazione().isApprovata()) {
setStatus(VIEW);
}
}
protected void validaRiga(ActionContext actioncontext,
Pdg_variazione_riga_gestBulk oggettobulk) throws ValidationException {
for (java.util.Iterator i = ((Ass_pdg_variazione_cdrBulk) this.getModel()).getRigheVariazioneEtrGest().iterator(); i.hasNext(); ) {
Pdg_variazione_riga_gestBulk riga = (Pdg_variazione_riga_gestBulk) i.next();
if (!riga.equals(oggettobulk) &&
riga.getEsercizio().compareTo(oggettobulk.getEsercizio()) == 0 &&
riga.getCd_cdr_assegnatario().compareTo(oggettobulk.getCd_cdr_assegnatario()) == 0 &&
((
(riga.getCd_cds_area() != null && oggettobulk.getCd_cds_area() != null) &&
(riga.getCd_cds_area().compareTo(oggettobulk.getCd_cds_area()) == 0)) ||
(riga.getCd_cds_area() == null && oggettobulk.getCd_cds_area() == null) ||
(riga.getCd_cds_area() != null && riga.getCd_cds_area().compareTo(riga.getCdr_assegnatario().getCd_cds()) == 0 &&
oggettobulk.getCd_cds_area() == null) ||
(oggettobulk.getCd_cds_area() != null && oggettobulk.getCd_cds_area().compareTo(oggettobulk.getCdr_assegnatario().getCd_cds()) == 0 &&
riga.getCd_cds_area() == null)) &&
oggettobulk.getLinea_attivita() != null && riga.getLinea_attivita() != null &&
oggettobulk.getCd_linea_attivita() != null && riga.getCd_linea_attivita() != null &&
riga.getCd_linea_attivita().compareTo(oggettobulk.getCd_linea_attivita()) == 0 &&
riga.getCd_elemento_voce() != null && oggettobulk.getCd_elemento_voce() != null &&
riga.getCd_elemento_voce().compareTo(oggettobulk.getCd_elemento_voce()) == 0)
throw new ValidationException("Attenzione: combinazione Esercizio/CdR/Area/G.A.E./Voce già inserita!");
}
Ass_pdg_variazione_cdrBulk ass = (Ass_pdg_variazione_cdrBulk) this.getModel();
for (java.util.Iterator i = ((Ass_pdg_variazione_cdrBulk) this.getModel()).getRigheVariazioneSpeGest().iterator(); i.hasNext(); ) {
Pdg_variazione_riga_gestBulk riga = (Pdg_variazione_riga_gestBulk) i.next();
if (!riga.equals(oggettobulk) &&
riga.getEsercizio().compareTo(oggettobulk.getEsercizio()) == 0 &&
riga.getCd_cdr_assegnatario().compareTo(oggettobulk.getCd_cdr_assegnatario()) == 0 &&
((
(riga.getCd_cds_area() != null && oggettobulk.getCd_cds_area() != null) &&
(riga.getCd_cds_area().compareTo(oggettobulk.getCd_cds_area()) == 0)) ||
(riga.getCd_cds_area() == null && oggettobulk.getCd_cds_area() == null) ||
(riga.getCd_cds_area() != null && riga.getCd_cds_area().compareTo(riga.getCdr_assegnatario().getCd_cds()) == 0 &&
oggettobulk.getCd_cds_area() == null) ||
(oggettobulk.getCd_cds_area() != null && oggettobulk.getCd_cds_area().compareTo(oggettobulk.getCdr_assegnatario().getCd_cds()) == 0 &&
riga.getCd_cds_area() == null)) &&
oggettobulk.getLinea_attivita() != null && riga.getLinea_attivita() != null &&
oggettobulk.getCd_linea_attivita() != null && riga.getCd_linea_attivita() != null &&
riga.getCd_linea_attivita().compareTo(oggettobulk.getCd_linea_attivita()) == 0 &&
riga.getCd_elemento_voce() != null && oggettobulk.getCd_elemento_voce() != null &&
riga.getCd_elemento_voce().compareTo(oggettobulk.getCd_elemento_voce()) == 0)
throw new ValidationException("Attenzione: combinazione Esercizio/CdR/Area/G.A.E./Voce già inserita!");
}
}
/**
* Imposta come attivi i tab di default.
*
* @param context ActionContext
*/
protected void init(it.cnr.jada.action.Config config, it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
super.init(config, context);
resetTabs();
}
protected void resetTabs() {
setTab("tab", "tabTotaliGest");
}
public boolean isNewButtonHidden() {
return true;
}
public boolean isFreeSearchButtonHidden() {
return true;
}
public boolean isSearchButtonHidden() {
return true;
}
public boolean isDeleteDettagliButtonEnabled() {
return isSaveButtonEnabled() &&
((isGestioneSpesa() &&
getRigheVariazioneSpeGest().countDetails() != 0) ||
(!isGestioneSpesa() &&
getRigheVariazioneEtrGest().countDetails() != 0));
}
protected void initialize(ActionContext actioncontext) throws BusinessProcessException {
super.initialize(actioncontext);
edit(actioncontext, new Ass_pdg_variazione_cdrBulk(pdg_variazione.getEsercizio(), pdg_variazione.getPg_variazione_pdg(), centro_responsabilita.getCd_centro_responsabilita()));
setUoScrivania(CNRUserContext.getCd_unita_organizzativa(actioncontext.getUserContext()));
if (it.cnr.contab.utenze00.bulk.CNRUserInfo.getDipartimento(actioncontext) != null)
setDipartimentoSrivania(it.cnr.contab.utenze00.bulk.CNRUserInfo.getDipartimento(actioncontext));
try {
setParametriCnr(Utility.createParametriCnrComponentSession().getParametriCnr(actioncontext.getUserContext(), CNRUserContext.getEsercizio(actioncontext.getUserContext())));
} catch (ComponentException e1) {
throw handleException(e1);
} catch (RemoteException e1) {
throw handleException(e1);
}
}
public Pdg_variazioneBulk getPdg_variazione() {
return pdg_variazione;
}
public void setPdg_variazione(Pdg_variazioneBulk bulk) {
pdg_variazione = bulk;
}
public String getUoScrivania() {
return uoScrivania;
}
public void setUoScrivania(String string) {
uoScrivania = string;
}
public String getTitle() {
if (isGestioneSpesa())
return ("Pdg Gestionale - Variazione Spesa");
return ("Pdg Gestionale - Variazione Entrata");
}
/*
* da verificare se eliminare
*/
public boolean isDettagliGestionaliEnable(Pdg_variazioneBulk variazione) {
return true;
}
/*
* da verificare se eliminare
*/
public boolean isDettaglioGestionaleEnable(Pdg_variazione_riga_gestBulk riga) {
try {
return isDettagliGestionaliEnable(riga.getPdg_variazione());
} catch (NullPointerException e) {
return true;
}
}
/**
* Ritorna TRUE se il CDR assegnatario appartiene ad una UO di tipo Area
*
* @param Pdg_variazione_riga_gestBulk La riga di variazione
* @return boolean
*/
public boolean isUoArea() {
Ass_pdg_variazione_cdrBulk bulk = (Ass_pdg_variazione_cdrBulk) getModel();
return bulk != null &&
bulk.getCentro_responsabilita() != null &&
bulk.getCentro_responsabilita().getUnita_padre() != null &&
bulk.getCentro_responsabilita().getUnita_padre().getCd_tipo_unita().compareTo(it.cnr.contab.config00.sto.bulk.Tipo_unita_organizzativaHome.TIPO_UO_AREA) == 0;
}
public it.cnr.contab.config00.sto.bulk.CdrBulk getCentro_responsabilita() {
return centro_responsabilita;
}
public void setCentro_responsabilita(
it.cnr.contab.config00.sto.bulk.CdrBulk centro_responsabilita) {
this.centro_responsabilita = centro_responsabilita;
}
public SimpleDetailCRUDController getRigheVariazioneEtrGest() {
return righeVariazioneEtrGest;
}
public void setRigheVariazioneEtrGest(SimpleDetailCRUDController righeVariazioneEtrGest) {
this.righeVariazioneEtrGest = righeVariazioneEtrGest;
}
public SimpleDetailCRUDController getRigheVariazioneSpeGest() {
return righeVariazioneSpeGest;
}
public void setRigheVariazioneSpeGest(
SimpleDetailCRUDController righeVariazioneSpeGest) {
this.righeVariazioneSpeGest = righeVariazioneSpeGest;
}
public SimpleDetailCRUDController getRigheVariazioneGestionale() {
if (isGestioneSpesa())
return righeVariazioneSpeGest;
return righeVariazioneEtrGest;
}
private String getTipoGestione() {
return tipoGestione;
}
private void setTipoGestione(String tipoGestione) {
this.tipoGestione = tipoGestione;
}
public boolean isGestioneSpesa() {
return getTipoGestione().equals(it.cnr.contab.config00.pdcfin.bulk.Elemento_voceHome.GESTIONE_SPESE);
}
public DipartimentoBulk getDipartimentoSrivania() {
return dipartimentoSrivania;
}
private void setDipartimentoSrivania(
DipartimentoBulk dipartimentoSrivania) {
this.dipartimentoSrivania = dipartimentoSrivania;
}
public Pdg_variazione_riga_gestBulk preparaNuovaRiga(ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
Pdg_variazione_riga_gestBulk riga = new Pdg_variazione_riga_spesa_gestBulk();
Ass_pdg_variazione_cdrBulk bulk = (Ass_pdg_variazione_cdrBulk) getModel();
if (isVariazioneApprovata(context)) {
PdGVariazioniComponentSession comp = Utility.createPdGVariazioniComponentSession();
try {
Pdg_variazione_riga_spesa_gestBulk rigaDB = (Pdg_variazione_riga_spesa_gestBulk) comp.recuperoRigaLiquidazioneIva(context.getUserContext(), bulk);
if (rigaDB != null) {
Elemento_voceBulk elementoVoce = (Elemento_voceBulk) createComponentSession().findByPrimaryKey(context.getUserContext(),
new Elemento_voceBulk(rigaDB.getElemento_voce().getCd_elemento_voce(), rigaDB.getElemento_voce().getEsercizio(), rigaDB.getElemento_voce().getTi_appartenenza(), rigaDB.getElemento_voce().getTi_gestione()));
if (elementoVoce.getV_classificazione_voci() != null) {
V_classificazione_vociBulk vClassDB = elementoVoce.getV_classificazione_voci();
V_classificazione_vociBulk vClass = (V_classificazione_vociBulk) createComponentSession().findByPrimaryKey(context.getUserContext(),
new V_classificazione_vociBulk(vClassDB.getId_classificazione()));
elementoVoce.setV_classificazione_voci(vClass);
}
riga.setElemento_voce(elementoVoce);
}
} catch (RemoteException e1) {
throw handleException(e1);
} catch (ComponentException e1) {
throw handleException(e1);
}
}
return riga;
}
public boolean isVariazioneApprovata(ActionContext context) {
Ass_pdg_variazione_cdrBulk bulk = (Ass_pdg_variazione_cdrBulk) getModel();
if (bulk.getPdg_variazione().isApprovata()) {
return true;
}
return false;
}
public void apponiVistoDipartimento(ActionContext context, Pdg_variazione_riga_gestBulk riga) throws it.cnr.jada.action.BusinessProcessException {
try {
PdGVariazioniComponentSession comp = Utility.createPdGVariazioniComponentSession();
riga = (Pdg_variazione_riga_gestBulk) comp.apponiVistoDipartimento(context.getUserContext(), riga, CNRUserInfo.getDipartimento(context));
} catch (it.cnr.jada.comp.ComponentException ex) {
throw handleException(ex);
} catch (java.rmi.RemoteException ex) {
throw handleException(ex);
}
}
public Parametri_cnrBulk getParametriCnr() {
return parametriCnr;
}
private void setParametriCnr(Parametri_cnrBulk parametriCnr) {
this.parametriCnr = parametriCnr;
}
public void valorizzaProgettoLineaAttivita(ActionContext actioncontext, Pdg_variazione_riga_gestBulk riga) throws BusinessProcessException {
try {
if (riga.getLinea_attivita() != null && riga.getLinea_attivita().getCd_linea_attivita() != null)
riga.setProgetto(((CRUDPdgVariazioneRigaGestComponentSession) createComponentSession()).getProgettoLineaAttivita(actioncontext.getUserContext(), riga));
else
riga.setProgetto(null);
} catch (DetailedRuntimeException e) {
throw new BusinessProcessException(e);
} catch (ComponentException e) {
throw new BusinessProcessException(e);
} catch (RemoteException e) {
throw new BusinessProcessException(e);
}
}
}