it.cnr.contab.inventario00.bp.CRUDInventarioBeniBP 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.inventario00.bp;
/**
* Un BusinessProcess controller che permette di effettuare operazioni di EDIT su istanze di
* Inventario_beniBulk per la modifica dei Beni presenti in Inventario.
* Non è possibile Creare o Cancellare Beni con questo controller, che ha l'unico scopo di
* permettere la modifica delle proprietà dei Beni, come ad es. la Categoria di appartenenza
* l'Ubicazione, la Descrizione, il Valore Iniziale, gli Utilizzatori, ecc.
* Le operazioni di Creazione, (Carico) e Cancellazione, (Scarico), sono competenza di
* CRUDCaricoInventarioBP, per il Carico e CRUDScaricoInventarioBP, per lo Scarico.
**/
import java.rmi.RemoteException;
import java.util.*;
import it.cnr.contab.inventario00.docs.bulk.*;
import it.cnr.contab.inventario01.ejb.BuonoCaricoScaricoComponentSession;
import it.cnr.jada.action.*;
import it.cnr.jada.bulk.*;
import it.cnr.jada.comp.ComponentException;
import it.cnr.jada.util.action.*;
import it.cnr.jada.util.jsp.Button;
public class CRUDInventarioBeniBP extends SimpleCRUDBP {
private boolean isVisualizzazione=false;
private boolean isPubblicazione = false;
private final SimpleDetailCRUDController vUtilizzatori = new SimpleDetailCRUDController("VUtilizzatori",Utilizzatore_CdrVBulk.class,"v_utilizzatoriColl",this){
public void validate(ActionContext context,OggettoBulk model) throws ValidationException {
validate_Percentuali_LA(context,model);
}
};
protected it.cnr.jada.util.jsp.Button[] createToolbar()
{
Button[] toolbar = super.createToolbar();
Button[] newToolbar = new Button[ toolbar.length + 2];
int i;
for ( i = 0; i < toolbar.length; i++ )
newToolbar[i] = toolbar[i];
newToolbar[ i ] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()),"CRUDToolbar.Dettagli");
newToolbar[ i +1] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()),"CRUDToolbar.Fattura_coll");
return newToolbar;
}
private final SimpleDetailCRUDController utilizzatori = new SimpleDetailCRUDController("Utilizzatori",Inventario_utilizzatori_laBulk.class,"buono_cs_utilizzatoriColl",vUtilizzatori);
public CRUDInventarioBeniBP() {
super();
setTab("tab","tabInventarioBeni");
setTab("tabInventarioBeniUtilizzatori","tabInventarioBeniUtilizzatori");
setTab("tabInventarioBeniProprieta","tabInventarioBeniProprieta");
setTab("tabInventarioBeniAmmortamento","tabInventarioBeniAmmortamento");
}
public CRUDInventarioBeniBP(String function) {
super(function);
}
/**
* Crea una toolbar in aggiunta alla normale toolbar del CRUD.
* La nuova toolbar è stata costruita per mostrare il tasto "Visualizza accessori".
*
* @return toolbar i Button[] pulsanti creati
**/
protected it.cnr.jada.util.jsp.Button[] createViewAccessoriToolbar() {
it.cnr.jada.util.jsp.Button[] toolbar = new it.cnr.jada.util.jsp.Button[1];
int i = 0;
toolbar[i++] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()),"CRUDToolbar.viewAccessori");
return toolbar;
}
/**
* Restituisce il valore della proprietà 'utilizzatori'
*
* @return utilizzatori SimpleDetailCRUDController il valore
*/
public final SimpleDetailCRUDController getUtilizzatori() {
return utilizzatori;
}
/**
* Restituisce il valore della proprietà 'vutilizzatori'
*
* @return Il valore della proprietà 'vutilizzatori'
*/
public final SimpleDetailCRUDController getVutilizzatori() {
return vUtilizzatori;
}
/**
* 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();
try {
BuonoCaricoScaricoComponentSession session = (BuonoCaricoScaricoComponentSession)createComponentSession("CNRINVENTARIO01_EJB_BuonoCaricoScaricoComponentSession",BuonoCaricoScaricoComponentSession.class);
setVisualizzazione(session.isEsercizioCOEPChiuso(context.getUserContext()));
} catch (ComponentException e) {
throw handleException(e);
} catch (RemoteException e) {
throw handleException(e);
}
}
/**
* Reimplementato per consentire di abilitare o disabilitare il campo Collocazione,
* in base alla Categoria Gruppo Inventario alla quale appartiene il Bene che si sta modificando.
*
* @param context il ActionContext che contiene le informazioni relative alla richiesta
* @param bulk il OggettoBulk Bene che si sta modificando
*
* @return bene il OggettoBulk inizializzato per la modifica
**/
public OggettoBulk initializeModelForEdit(ActionContext context,OggettoBulk bulk) throws BusinessProcessException {
String cd_pubblicazioni = null;
try {
Inventario_beniBulk bene = null;
bulk = super.initializeModelForEdit(context, bulk);
if (bulk instanceof ROWrapper){
bene = (Inventario_beniBulk)((ROWrapper)bulk).getBulk();
} else {
bene = (Inventario_beniBulk)bulk;
}
//Inventario_beniBulk bene = (Inventario_beniBulk)
it.cnr.contab.docamm00.tabrif.bulk.Categoria_gruppo_inventBulk categoria_gruppo = bene.getCategoria_Bene();
cd_pubblicazioni = ((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)).getVal01(context.getUserContext(), new Integer(0), "*", "CD_CATEGORIA_GRUPPO_SPECIALE", "PUBBLICAZIONI");
if(cd_pubblicazioni != null && categoria_gruppo.getCd_categoria_padre()!=null){
//setIsPubblicazione(categoria_gruppo.getCd_categoria_padre().equalsIgnoreCase(cd_pubblicazioni));
bene.setPubblicazione(categoria_gruppo.getCd_categoria_padre().equalsIgnoreCase(cd_pubblicazioni));
}
else bene.setPubblicazione(false);
return bulk;
} catch(Throwable e) {
throw new it.cnr.jada.action.BusinessProcessException(e);
}
}
/**
* Nascondo il pulsante di "Elimina", nel form di Gestione del Bene
* Non è possibile cancellare un Bene presente sul DB, se non scaricandolo totalmente,
* con un Buono di Scarico.
*
* @return boolean TRUE
**/
public boolean isDeleteButtonHidden() {
return true;
}
/**
* Nascondo il pulsante di "Nuovo", nel form di Gestione del Bene
* Non è possibile creare un Bene, se non con un Buono di Carico
*
* @return boolean TRUE
**/
public boolean isNewButtonHidden() {
return true;
}
/**
* Restituisce TRUE se il bene NON è soggetto ad Ammortamento. E' l'utente a decidere, nel
* tab "Ammortamento", se un bene è soggetto ad ammortamento oppure no, selezionando
* il flag Soggetto ad Ammortamento.
*
* @return boolean
*/
public boolean isNonAmmortizzato() {
Inventario_beniBulk bene = (Inventario_beniBulk)getModel();
if (bene!=null && bene.getFl_ammortamento() != null){
return !bene.getFl_ammortamento().booleanValue();
}
return false;
}
/**
* Restituisce true se la Categoria Gruppo alla quale appartiene il Bene, NON è soggetta
* ad ammortamento (CATEGORIA_GRUPPPO_INVENT.FL_AMMORTAMENTO==FALSE)
*
* @return boolean
*/
public boolean isNotAmmortizzabile() {
Inventario_beniBulk bene = (Inventario_beniBulk)getModel();
if (bene!=null && bene.getCategoria_Bene() != null && bene.getCategoria_Bene().getFl_ammortamento() != null){
return !bene.getCategoria_Bene().getFl_ammortamento().booleanValue();
}
return true;
}
/**
* Restituisce TRUE se la Categoria Gruppo Inventario alla quale appartiene il bene è una
* Pubblicazione.
*
* @return boolean
*/
public boolean isPubblicazione() {
return isPubblicazione;
}
/**
* Determina se il campo relativo al Valore Iniziale è READONLY.
* Oltre alle normali condizioni, restituisce true, se il bene proviene da migrazione, (FL_MIGRATO='Y').
*
* @return boolean
*/
public boolean isROvaloreIniziale() {
OggettoBulk bulk = getModel();
if (bulk == null)
return true;
boolean readonly= isSearching()
|| isInputReadonly()
|| (bulk instanceof ROWrapper);
if (bulk instanceof Inventario_beniBulk){
Inventario_beniBulk beneBulk = (Inventario_beniBulk)bulk;
if (this.isEditing())
return true;
else
return false;
}
return readonly;
}
public boolean isSaveButtonEnabled() {
Inventario_beniBulk bene = (Inventario_beniBulk)getModel();
if (!isViewing() && bene != null){
return (bene.getCrudStatus() != OggettoBulk.UNDEFINED
&& bene.getCrudStatus() != OggettoBulk.TO_BE_CREATED);
}
return false;
}
/**
* Abilito il pulsante di "Visualizza accessori", nel form di Gestione del Bene.
* Restituisce TRUE se il bene NON è a sua volta un bene accessorio.
*
* @return boolean TRUE
**/
public boolean isViewAccessoriButtonEnabled() {
Inventario_beniBulk bene = (Inventario_beniBulk) getModel();
if (bene != null && bene.getNr_inventario() != null)
return !bene.isBeneAccessorio();
return false;
}
public boolean isDettagliButtonEnabled() {
Inventario_beniBulk bene = (Inventario_beniBulk) getModel();
if (bene != null && bene.getNr_inventario() != null && bene.getHa_dettagli() !=null)
if (bene.getHa_dettagli().booleanValue())
return true;
return false;
}
public boolean isFattura_collButtonEnabled() {
Inventario_beniBulk bene = (Inventario_beniBulk) getModel();
if (bene != null && bene.getNr_inventario() != null && bene.getDa_fattura()!=null )
if (bene.getDa_fattura().booleanValue())
return true;
return false;
}
/**
* Imposta come attivi i tab di default.
*
* @param context ActionContext
*/
public void resetTabs() {
setTab("tab","tabInventarioBeniTestata");
}
/**
* Imposta il valore della proprietà 'isPubblicazione'
*
* @param newIsPubblicazione boolean il nuovo valore
*/
public void setIsPubblicazione(boolean newIsPubblicazione) {
isPubblicazione = newIsPubblicazione;
}
/**
* Metodo invocato dal SimpleDetailCRUDController vUtilizzatori quando si passa
* da un CdR utilizzatore all'altro.
* Controlla se la percentuale di utilizzo delle linee di attività, per
* CdR, è valida.
*
* @param context il ActionContext che contiene le informazioni relative alla richiesta
* @param bulk il OggettoBulk Bene che si sta modificando
**/
public void validate_Percentuali_LA(ActionContext context,OggettoBulk model) throws ValidationException {
Utilizzatore_CdrVBulk cdrUtilizzatore = (Utilizzatore_CdrVBulk)model;
SimpleBulkList utilizzatori_LA = cdrUtilizzatore.getBuono_cs_utilizzatoriColl();
java.math.BigDecimal percentuale_utilizzo_LA = new java.math.BigDecimal("0");
Vector cdr = new Vector();
java.math.BigDecimal cento = new java.math.BigDecimal(100);
if (utilizzatori_LA.size()>0){
Iterator i = utilizzatori_LA.iterator();
while (i.hasNext()){
Inventario_utilizzatori_laBulk utilizzatore_LA = (Inventario_utilizzatori_laBulk)i.next();
// Controlla che sia stata specificata la line di Attività
if (utilizzatore_LA.getLinea_attivita()==null || utilizzatore_LA.getLinea_attivita().getCd_linea_attivita() == null){
throw new ValidationException ("GAE non valido. Indicare sia il codice del GAE, sia la sua percentuale di utilizzo");
}
// Controlla che non vi siano Linee di Attività DUPLICATE
if (BulkCollections.containsByPrimaryKey(cdr,utilizzatore_LA.getLinea_attivita())){
throw new ValidationException ("GAE duplicato. Non è possibile indicare più volte uno stesso GAE");
}
else {
cdr.add(utilizzatore_LA.getLinea_attivita());
}
// Controlla che sia stata indicata una PERCENTUALE DI UTILIZZO VALIDA per Linea di Attività
if (utilizzatore_LA.getPercentuale_utilizzo_la()!=null){
percentuale_utilizzo_LA = percentuale_utilizzo_LA.add(utilizzatore_LA.getPercentuale_utilizzo_la());
}
else{
throw new ValidationException ("La percentuale di utilizzo per i GAE non può essere nulla");
}
}
// Controlla che il totale delle percentuali di utilizzo delle Linee di Attività sia 100
if (percentuale_utilizzo_LA.compareTo(cento)!=0)
throw new ValidationException ("La percentuale di utilizzo per i GAE non è valida");
}
}
/**
* Aggiunge alla normale toolbar di CRUD, la toolbar per la visualizzazione dei beni
* accessori, (v. metodo createViewAccessoriToolbar()).
*
* @param writer JspWriter
**/
public void writeToolbar(javax.servlet.jsp.JspWriter writer) throws java.io.IOException,javax.servlet.ServletException {
//super.writeToolbar(writer);
openToolbar(writer);
it.cnr.jada.util.jsp.JSPUtils.toolbar(writer,createToolbar(),this, this.getParentRoot().isBootstrap());
closeToolbar(writer);
writeViewAccessoriToolbar(writer);
}
/**
* Scrive la toolbar contenente il tasto di "Visualizza accessori"
*
* @param writer JspWriter
**/
public void writeViewAccessoriToolbar(javax.servlet.jsp.JspWriter writer) throws java.io.IOException,javax.servlet.ServletException {
if (!isSearching()) {
openToolbar(writer);
it.cnr.jada.util.jsp.JSPUtils.toolbar(writer,createViewAccessoriToolbar(),this, this.getParentRoot().isBootstrap());
closeToolbar(writer);
}
}
public boolean isVisualizzazione() {
return isVisualizzazione;
}
public void setVisualizzazione(boolean b) {
isVisualizzazione = b;
}
public boolean isEditable() {
return !isVisualizzazione()&&super.isEditable();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy