it.cnr.contab.inventario01.bp.CRUDCaricoInventarioBP 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 Jan 19, 2006
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package it.cnr.contab.inventario01.bp;
import java.math.BigDecimal;
import java.rmi.RemoteException;
import java.util.Iterator;
import java.util.Vector;
import it.cnr.contab.docamm00.docs.bulk.Documento_generico_rigaBulk;
import it.cnr.contab.docamm00.docs.bulk.Fattura_passiva_rigaBulk;
import it.cnr.contab.docamm00.docs.bulk.Fattura_passiva_rigaIBulk;
import it.cnr.contab.inventario00.docs.bulk.Inventario_beniBulk;
import it.cnr.contab.inventario00.docs.bulk.Inventario_utilizzatori_laBulk;
import it.cnr.contab.inventario00.docs.bulk.Utilizzatore_CdrVBulk;
import it.cnr.contab.inventario01.bulk.Buono_carico_scaricoBulk;
import it.cnr.contab.inventario01.bulk.Buono_carico_scarico_dettBulk;
import it.cnr.contab.inventario01.ejb.BuonoCaricoScaricoComponentSession;
import it.cnr.contab.utenze00.bulk.UtenteBulk;
import it.cnr.jada.action.ActionContext;
import it.cnr.jada.action.BusinessProcessException;
import it.cnr.jada.action.Forward;
import it.cnr.jada.bulk.BulkCollections;
import it.cnr.jada.bulk.BulkList;
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.bulk.PrimaryKeyHashtable;
import it.cnr.jada.bulk.SimpleBulkList;
import it.cnr.jada.bulk.ValidationException;
import it.cnr.jada.comp.ApplicationException;
import it.cnr.jada.comp.ComponentException;
import it.cnr.jada.util.action.AbstractDetailCRUDController;
import it.cnr.jada.util.action.SearchProvider;
import it.cnr.jada.util.action.SimpleDetailCRUDController;
/**
* @author rpucciarelli
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class CRUDCaricoInventarioBP extends CRUDCaricoScaricoInventarioBP{
private Long progressivo_beni = new Long("0");
/* Flag che viene impostato a true nel caso che l'utente immetta un valore non valido
* nel campo Num. Gruppi. Se settato a true, nella Jsp, il campo verrÓ visualizzato in
* arancio, seguendo lo standard.
*/
private boolean isNumGruppiErrato = false;
private boolean isQuantitaEnabled = true;
public CRUDCaricoInventarioBP() {
super();
setTab("tab","tabCaricoInventarioTestata");
}
public CRUDCaricoInventarioBP(String function) {
super(function);
}
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();
utilizzatori.setReadonly(false);
}
public OggettoBulk initializeModelForEdit(ActionContext context,OggettoBulk bulk) throws BusinessProcessException {
Buono_carico_scaricoBulk testata = (Buono_carico_scaricoBulk)bulk;
testata.setTi_documento(Buono_carico_scaricoBulk.CARICO);
resetTabs();
if (by_fattura||by_documento){
bulk = super.initializeModelForEdit(context, testata);
return testata;
}else{
bulk = super.initializeModelForEdit(context, bulk);
return bulk;
}
}
public OggettoBulk initializeModelForInsert(ActionContext context,OggettoBulk bulk) throws BusinessProcessException {
Buono_carico_scaricoBulk testata = (Buono_carico_scaricoBulk)bulk;
testata.setTi_documento(Buono_carico_scaricoBulk.CARICO);
bulk = super.initializeModelForInsert(context, testata);
return bulk;
}
public OggettoBulk initializeModelForFreeSearch(
ActionContext actioncontext,
OggettoBulk oggettobulk)
throws BusinessProcessException {
Buono_carico_scaricoBulk testata = (Buono_carico_scaricoBulk)oggettobulk;
testata.setTi_documento(Buono_carico_scaricoBulk.CARICO);
oggettobulk = super.initializeModelForFreeSearch(actioncontext, testata);
return oggettobulk;
}
public OggettoBulk initializeModelForSearch(ActionContext context,OggettoBulk bulk) throws BusinessProcessException {
Buono_carico_scaricoBulk testata = (Buono_carico_scaricoBulk)bulk;
testata.setTi_documento(Buono_carico_scaricoBulk.CARICO);
bulk = super.initializeModelForSearch(context, testata);
return bulk;
}
public void resetTabs() {
setTab("tab","tabCaricoInventarioTestata");
}
public boolean isTabUtilizzatoriEnabled() {
return (isInserting() && !isBy_fattura() && !isBy_documento());
}
public void resetForSearch(ActionContext context) throws BusinessProcessException {
super.resetForSearch(context);
resetTabs();
}
protected final AbstractDetailCRUDController dettaglio = createDettaglio();
private final SimpleDetailCRUDController vUtilizzatori = new SimpleDetailCRUDController("VUtilizzatori",Utilizzatore_CdrVBulk.class,"v_utilizzatoriColl",dettaglio){
public void validate(ActionContext context,OggettoBulk model) throws ValidationException {
validate_Percentuali_LA(context,model);
}
};
private final SimpleDetailCRUDController utilizzatori = new SimpleDetailCRUDController("Utilizzatori",Inventario_utilizzatori_laBulk.class,"buono_cs_utilizzatoriColl",vUtilizzatori);
protected it.cnr.jada.util.action.AbstractDetailCRUDController createDettaglio() {
return new SimpleDetailCRUDController("Dettaglio",Buono_carico_scarico_dettBulk.class,"buono_carico_scarico_dettColl",this){
public void validate(ActionContext context,OggettoBulk model) throws ValidationException {
validate_Dettagli(context,model);
}
};
}
private final SimpleDetailCRUDController dettagliFattura = new it.cnr.jada.util.action.SimpleDetailCRUDController("DettagliFattura",Fattura_passiva_rigaBulk.class,"dettagliFatturaColl",this){
public void validate(ActionContext context,OggettoBulk model) throws ValidationException {
validate_Dettagli_da_Fattura(context,model);
}
};
private final SimpleDetailCRUDController righeInventarioDaFattura = new SimpleDetailCRUDController("RigheInventarioDaFattura",Buono_carico_scarico_dettBulk.class,null,dettagliFattura){
public java.util.List getDetails() {
Buono_carico_scaricoBulk buono_cs = (Buono_carico_scaricoBulk)CRUDCaricoInventarioBP.this.getModel();
Fattura_passiva_rigaBulk riga_selezionata = (Fattura_passiva_rigaBulk)getParentModel();
return getRigheInventarioDaFatturaDetails (buono_cs, riga_selezionata);
}
};
public final AbstractDetailCRUDController getRigheInventarioDaFattura() {
return righeInventarioDaFattura;
}
public java.util.List getRigheInventarioDaFatturaDetails(
Buono_carico_scaricoBulk buonoCS,
Fattura_passiva_rigaBulk riga_selezionata) {
if (buonoCS != null && riga_selezionata != null){
BulkList list = (BulkList)buonoCS.getDettagliRigheHash().get(riga_selezionata);
return list;
}
else{
return null;
}
}
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");
}
}
/**
* Metodo richiamato 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.
* Controlla, inoltre, se sono state fatte modifiche non valide su beni associati
* ad altri bene contestualmente al buono di Carico.
*
**/
private void validate_property_details(Buono_carico_scarico_dettBulk dett) throws ValidationException {
Inventario_beniBulk bene = dett.getBene();
Buono_carico_scaricoBulk buonoC = (Buono_carico_scaricoBulk)dett.getBuono_cs();
// CONTROLLA CHE SIA STATA SPECIFICATA UNA CATEGORIA PER IL BENE
if (bene.getCategoria_Bene()==null)
throw new ValidationException("Attenzione: indicare la Categoria di appartenenza del Bene");
// CONTROLLA CHE SIA STATA SPECIFICATA UNA DESCRIZIONE PER IL BENE
if (bene.getDs_bene()==null)
throw new ValidationException("Attenzione: indicare la Descrizione del Bene");
// CONTROLLA CHE SIA STATA SPECIFICATA UNA CONDIZIONE PER IL BENE
if (bene.getCondizioneBene()==null)
throw new ValidationException("Attenzione: indicare una Condizione per il Bene");
// CONTROLLA, NEL CASO DI UN BENE ACCESSORIO, CHE SIA STATO SPECIFICATO IL BENE PRINCIPALE A CUI FAR RIFERIMENTO
if (dett.isBeneAccessorio() && bene.getBene_principale()==null)
throw new ValidationException("Attenzione: indicare un Bene Principale per il Bene Accessorio");
// CONTROLLA CHE SIA STATA SPECIFICATA UNA UBICAZIONE PER IL BENE
if (bene.getUbicazione()==null)
throw new ValidationException("Attenzione: indicare l'Ubicazione del Bene");
// CONTROLLA CHE SIA STATO INSERITO LA QUANTITA' PER IL BENE
if (dett.getQuantita()==null)
throw new ValidationException("Attenzione: indicare la Quantita");
// CONTROLLA CHE SIA STATO INSERITO IL PREZZO UNITARIO PER IL BENE
if (dett.getValore_unitario()==null)
throw new ValidationException("Attenzione: indicare il Prezzo Unitario");
if (buonoC.isPerAumentoValore() && (dett.getValore_unitario() == null || (dett.getValore_unitario().compareTo(new java.math.BigDecimal(0))==0))){
throw new ValidationException("Attenzione: indicare il Valore Caricato per il bene");
}
if (!buonoC.isPerAumentoValore()&&(dett.getV_utilizzatoriColl().size()==0)&&!buonoC.isByFattura() &&!buonoC.isByDocumento()&& !dett.isBeneAccessorio()&& !dett.getFl_bene_accessorio() )
throw new ValidationException("Attenzione: bisogna indicare gli Utilizzatori");
if ( ((Buono_carico_scaricoBulk)dett.getBuono_cs()).isPerAumentoValore() ){
// Buono di Carico per aumento di valore
// CONTROLLA CHE IL VALORE DA AMMORTIZZARE SIA INFERIORE AL VALORE DEL BENE
java.math.BigDecimal valore_bene = dett.getBene().getValoreBene().add(dett.getValore_unitario());
if (dett.getBene().getImponibile_ammortamento() != null && dett.getBene().getImponibile_ammortamento().compareTo(valore_bene)>0){
throw new ValidationException("Attenzione: il valore da ammortizzare di un bene deve essere inferiore o uguale al valore del bene.\n" +
"Il valore da ammortizzare del bene " + (bene.getDs_bene()!=null?"'"+bene.getDs_bene()+"'":"") + " non è valido");
}
} else {
// Buono di Carico normale
// CONTROLLA CHE IL VALORE DA AMMORTIZZARE SIA INFERIORE AL VALORE UNITARIO
if (dett.getBene().getImponibile_ammortamento() != null && dett.getBene().getImponibile_ammortamento().compareTo(dett.getValore_unitario())>0){
throw new ValidationException("Attenzione: il valore da ammortizzare di un bene deve essere inferiore o uguale al valore del bene.\n" +
"Il valore da ammortizzare del bene " + (bene.getDs_bene()!=null?"'"+bene.getDs_bene()+"'":"") + " non è valido");
}
}
}
private void validate_Dettagli(ActionContext context,OggettoBulk model) throws ValidationException{
if (isInserting()){
try {
completeSearchTools(context, this);
Buono_carico_scarico_dettBulk dettaglio = (Buono_carico_scarico_dettBulk)model;
Buono_carico_scaricoBulk buono_carico = (Buono_carico_scaricoBulk) dettaglio.getBuono_cs();
PrimaryKeyHashtable accessori_contestuali = null;
BulkList newBeni_associati = new BulkList();
// Controlla che l'Utente abbia inserito tutti i campi Obbligatori
validate_property_details(dettaglio);
/* Se il Dettaglio appena lasciato Þ un dettaglio a cui sono associati dei beni
* dichiarati contestaulmente, va a modificare le descrizioni dei beni associati.
* Altresý, sostituisce la coppia Dettaglio Principale - dettagli Associati
* attualmente presente nella HashTable.
*/
if (dettaglio.isAssociatoConAccessorioContestuale()){
if ( dettaglio.getQuantita()!=null && dettaglio.getQuantita().compareTo(new Long("1"))!=0){
dettaglio.setQuantita(new Long("1"));
throw new ValidationException("Attenzione: la quantità di questa riga deve essere 1, poichè alcuni beni sono suoi accessori");
}
accessori_contestuali = buono_carico.getAccessoriContestualiHash();
BulkList beni_associati = (BulkList)accessori_contestuali.get(dettaglio.getChiaveHash());
for (Iterator i = beni_associati.iterator(); i.hasNext();){
Buono_carico_scarico_dettBulk dettaglio_associato = (Buono_carico_scarico_dettBulk) i.next();
dettaglio_associato.getBene().getBene_principale().setDs_bene(dettaglio.getBene().getDs_bene());
dettaglio_associato.getBene().setUbicazione(dettaglio.getBene().getUbicazione());
dettaglio_associato.getBene().setCategoria_Bene(dettaglio.getBene().getCategoria_Bene());
dettaglio_associato.getBene().setAssegnatario(dettaglio.getBene().getAssegnatario());
newBeni_associati.add(dettaglio_associato);
}
accessori_contestuali.put(dettaglio.getChiaveHash(),newBeni_associati);
}
if (dettaglio.isAccessorioContestuale()){
accessori_contestuali = buono_carico.getAccessoriContestualiHash();
for (java.util.Enumeration e = accessori_contestuali.keys(); e.hasMoreElements();) {
String chiave_bene_padre = (String)e.nextElement();
newBeni_associati = (BulkList)accessori_contestuali.get(chiave_bene_padre);
if (newBeni_associati.containsByPrimaryKey(dettaglio)){
newBeni_associati.remove(dettaglio);
newBeni_associati.add(dettaglio);
break;
}
}
}
} catch (BusinessProcessException e1) {
handleException(e1);
}
}
validate_Percentuali_CdR(context, model);
}
/**
* Metodo richiamato 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.
**/
public void validate_Percentuali_CdR(ActionContext context,OggettoBulk model) throws ValidationException {
Buono_carico_scarico_dettBulk buono_dettaglio = (Buono_carico_scarico_dettBulk)model;
SimpleBulkList cdr_utilizzatori = buono_dettaglio.getV_utilizzatoriColl();
java.math.BigDecimal percentuale_utilizzo_CdR = new java.math.BigDecimal("0");
Vector cdr = new Vector();
if (cdr_utilizzatori.size()>0){
Iterator i = cdr_utilizzatori.iterator();
while (i.hasNext()){
Utilizzatore_CdrVBulk utilizzatore = (Utilizzatore_CdrVBulk)i.next();
// Richiama la procedura di validazione delle singole Linee di AttivitÓ
validate_Percentuali_LA(context,utilizzatore);
// Controlla che sia stata specificata il CdR
if (utilizzatore.getCdr()==null){
throw new ValidationException ("Utilizzatore non valido. Indicare sia il codice del CdR Utilizzatore, sia la sua percentuale di utilizzo");
}
// Controlla che non vi siano Linee di AttivitÓ DUPLICATE
if (BulkCollections.containsByPrimaryKey(cdr,utilizzatore.getCdr())){
throw new ValidationException ("CdR Utilizzatore duplicato. Non è possibile indicare più volte uno stesso CdR come Utilizzatore");
}
else {
cdr.add(utilizzatore.getCdr());
}
// Controlla che sia stata indicata una PERCENTUALE DI UTILIZZO VALIDA per il CdR
if (utilizzatore.getPercentuale_utilizzo_cdr()!=null && ((utilizzatore.getPercentuale_utilizzo_cdr().compareTo(new java.math.BigDecimal("0")))>0)){
percentuale_utilizzo_CdR = percentuale_utilizzo_CdR.add(utilizzatore.getPercentuale_utilizzo_cdr());
}
else{
throw new ValidationException ("La percentuale di utilizzo per gli Utilizzatori non può essere nulla");
}
// Controlla che per ogni CdR specificato siano state indicate anche delle Linee di AttivitÓ
if (utilizzatore.getBuono_cs_utilizzatoriColl()==null || (utilizzatore.getBuono_cs_utilizzatoriColl().size()==0)){
throw new ValidationException ("Attenzione! Specificare per ogni Utilizzatore i GAE corrispondenti");
}
}
// Controlla che il totale delle percentuali di utilizzo delle Linee di AttivitÓ sia 100
if ((percentuale_utilizzo_CdR.compareTo(new java.math.BigDecimal("100")))!=0)
throw new ValidationException ("La percentuale di utilizzo per gli Utilizzatori non è valida");
}
}
public SimpleDetailCRUDController getDettagliFattura() {
return dettagliFattura;
}
public AbstractDetailCRUDController getDettaglio() {
return dettaglio;
}
public boolean isBringbackButtonEnabled() {
return isInserting() || isEditing();
}
public boolean isModValore_unitario(){
return isNonIniziatoAmmortamento();
//rp 15/12/2006 abilitati tutti alla modifica
//&& isAmministratore();
}
/**
* Abilita il pulsante di "Nuovo", nella finestra dei dettagli del Buono di Carico.
* Se il Buono Þ stato creato da una Fattura Passiva, o Þ in stato di EDIT, disabilita
* il tasto di aggiunta di nuovi dettagli al Buono.
*
* @return boolean
**/
public boolean isCRUDAddButtonEnabled() {
return (isInserting() && !isBy_fattura() && !isBy_documento());
}
/**
* Abilita il pulsante di "Elimina", nella finestra dei dettagli del Buono di Carico.
* Se il Buono Þ stato creato da una Fattura Passiva, o Þ in stato di EDIT, disabilita
* il tasto di cancellazione dei dettagli dal Buono.
*
* @return boolean
**/
public boolean isCRUDDeleteButtonEnabled() {
return (isInserting() && !isBy_fattura() && !isBy_documento());
}
/**
* Disabilita il pulsante di "Elimina", nel form del Buono di Carico.
* Non Þ possibile cancellare un Buono presente sul DB.
*
* @return boolean FALSE
**/
public boolean isDeleteButtonEnabled() {
return isEditing();
}
/**
* Nascondo il pulsante di "Elimina", nel form del Buono di Carico.
* Non Þ possibile cancellare un Buono presente sul DB.
*
* @return boolean TRUE
**/
public boolean isDeleteButtonHidden() {
if (isBy_fattura()||isBy_documento())
return true;
return false;
}
public boolean isNonAmmortizzato() {
Buono_carico_scarico_dettBulk dett = (Buono_carico_scarico_dettBulk)getDettaglio().getModel();
if (dett!=null && dett.getBene()!=null && dett.getBene().getFl_ammortamento() != null){
return !dett.getBene().getFl_ammortamento().booleanValue();
}
return false;
}
public boolean isNonIniziatoAmmortamento() {
Buono_carico_scarico_dettBulk dett = (Buono_carico_scarico_dettBulk)getDettaglio().getModel();
if (dett!=null && dett.getBene()!=null && dett.getBene().getValore_ammortizzato() != null){
return dett.getBene().getValore_ammortizzato().compareTo(new BigDecimal(0))==0 ;//&& dett.getBene().isCancellabile();
}
return false;
}
public boolean isNonScaricato() {
Buono_carico_scarico_dettBulk dett = (Buono_carico_scarico_dettBulk)getDettaglio().getModel();
if (dett!=null && dett.getBene()!=null && dett.getBene().getFl_totalmente_scaricato() != null){
return !dett.getBene().getFl_totalmente_scaricato().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() {
Buono_carico_scarico_dettBulk dett = (Buono_carico_scarico_dettBulk)getDettaglio().getModel();
if (dett!=null &&
dett.getBene()!=null &&
dett.getBene().getCategoria_Bene() != null &&
dett.getBene().getCategoria_Bene().getFl_ammortamento() != null){
return !dett.getBene().getCategoria_Bene().getFl_ammortamento().booleanValue();
}
return true;
}
public void aggiungiDettagliCarico(it.cnr.jada.UserContext userContext, java.util.List beni) throws it.cnr.jada.comp.ComponentException{
Buono_carico_scaricoBulk buonoC = (Buono_carico_scaricoBulk)getModel();
Buono_carico_scarico_dettBulk dettCarico = null;
Inventario_beniBulk bene = null;
for (Iterator i = beni.iterator(); i.hasNext();){
dettCarico = new Buono_carico_scarico_dettBulk();
bene = (Inventario_beniBulk)i.next();
if(bene.getCategoria_Bene()!=null && buonoC.getData_registrazione()!=null && bene.getCategoria_Bene().getData_cancellazione()!=null &&
bene.getCategoria_Bene().getData_cancellazione().before(buonoC.getData_registrazione()))
throw new ApplicationException("Il Bene "+bene.getNr_inventario()+" ha un categoria non più valida");
dettCarico.setBuono_cs(buonoC);
dettCarico.setBene(bene);
dettCarico.setQuantita(new Long(1));
dettCarico.setValore_unitario(new java.math.BigDecimal(0));
buonoC.getBuono_carico_scarico_dettColl().add(dettCarico);
}
}
public Long getProgressivo_beni() {
return progressivo_beni;
}
public void setProgressivo_beni(Long long1) {
progressivo_beni = long1;
}
/**
* Metodo richiamato dal SimpleDetailCRUDController dettagliFattura quando si passa
* da un dettaglio dell'inventario all'altro.
* Controlla, tra le altre cose, che la somma delle quantitÓ specificate per ogni
* singolo dettaglio di Inventario, sia uguale alla quantitÓ indicata per la riga
* di Fattura.
*
**/
private void validate_Dettagli_da_Fattura(ActionContext context,OggettoBulk model) throws ValidationException {
java.math.BigDecimal totale = new java.math.BigDecimal(0);
Fattura_passiva_rigaIBulk riga_fattura = (Fattura_passiva_rigaIBulk)model;
Buono_carico_scaricoBulk buonoCS = (Buono_carico_scaricoBulk)getModel();
PrimaryKeyHashtable righeInventarioHash = (PrimaryKeyHashtable)buonoCS.getDettagliRigheHash();
if (righeInventarioHash != null){
BulkList dettagliInventario = (BulkList)righeInventarioHash.get(riga_fattura);
if (dettagliInventario.size()>0){
for (Iterator i = dettagliInventario.iterator(); i.hasNext();){
Buono_carico_scarico_dettBulk dettaglio = (Buono_carico_scarico_dettBulk)i.next();
if (dettaglio.getQuantita()!=null){
totale = totale.add(new BigDecimal(dettaglio.getQuantita().longValue()));
}
if (dettaglio.isAssociatoConAccessorioContestuale()){
BulkList newBeni_associati = new BulkList();
if ( dettaglio.getQuantita()!=null && dettaglio.getQuantita().compareTo(new Long("1"))!=0){
dettaglio.setQuantita(new Long("1"));
throw new ValidationException("Attenzione. La Quantità di questa riga deve essere 1, poichè alcuni beni sono suoi accessori");
}
PrimaryKeyHashtable accessori_contestuali = buonoCS.getAccessoriContestualiHash();
BulkList beni_associati = (BulkList)accessori_contestuali.get(dettaglio.getChiaveHash());
for (Iterator i_beni_associati = beni_associati.iterator(); i_beni_associati.hasNext();){
Buono_carico_scarico_dettBulk dettaglio_associato = (Buono_carico_scarico_dettBulk) i_beni_associati.next();
dettaglio_associato.getBene().getBene_principale().setDs_bene(dettaglio.getBene().getDs_bene());
newBeni_associati.add(dettaglio_associato);
}
accessori_contestuali.put(dettaglio.getChiaveHash(),newBeni_associati);
}
}
if (!(totale.compareTo(riga_fattura.getQuantita())==0)){
throw new ValidationException("Attenzione: " +
"il totale delle quantità indicate per la riga di Fattura '" +
riga_fattura.getDs_riga_fattura() +
"' non corrisponde al totale della riga stessa");
}
}
}
}
public final SimpleDetailCRUDController getVUtilizzatori() {
return vUtilizzatori;
}
public final SimpleDetailCRUDController getUtilizzatori() {
return utilizzatori;
}
public Forward findDefaultForward() {
if (isBy_fattura()&& isFirst()){
return findForward("daFattura");
}else if (isBy_documento()&& isFirst()){
return findForward("daDocumento");
}else{
return findForward("default");
}
}
public SearchProvider getBeneSearchProvider(ActionContext context){
return new SearchProvider() {
public it.cnr.jada.util.RemoteIterator search(it.cnr.jada.action.ActionContext context,it.cnr.jada.persistency.sql.CompoundFindClause clauses,it.cnr.jada.bulk.OggettoBulk prototype) throws it.cnr.jada.action.BusinessProcessException {
Buono_carico_scaricoBulk buonoC =(Buono_carico_scaricoBulk)getModel();
boolean no_accessori = buonoC.isByFattura()||buonoC.isByDocumento();
try{
return getListaBeni(context.getUserContext(), no_accessori, buonoC.getBuono_carico_scarico_dettColl(), clauses);
} catch (Throwable t){
return null;
}
}
};
}
/**
* Cerca i beni disponibili.
* Cerca i beni disponibili per una operazione di Carico per aumento di valore o per una
* associazione ad un riga di Fattura Passiva. Invoca il metodo
* BuonoCaricoComponent.getListaBeni.
*
* @param userContext lo UserContext che ha generato la richiesta.
* @param no_accessori boolean indica se escludere i beni accessori.
* @param beni_da_escludere la SimpleBulkList lista di beni da escludere, perchÞ giÓ utilizzati.
* @param clauses le CompoundFindClause clausole della ricerca.
*
* @return iterator RemoteIterator l'iterator sui beni trovati
**/
public it.cnr.jada.util.RemoteIterator getListaBeni(
it.cnr.jada.UserContext userContext,
boolean no_accessori,
SimpleBulkList beni_da_escludere,
it.cnr.jada.persistency.sql.CompoundFindClause clauses) throws BusinessProcessException, java.rmi.RemoteException, it.cnr.jada.comp.ComponentException {
return ((BuonoCaricoScaricoComponentSession)createComponentSession()).getListaBeni(userContext, (Buono_carico_scaricoBulk)this.getModel(), no_accessori,beni_da_escludere, clauses);
}
public void setIsNumGruppiErrato(boolean newIsNumGruppiErrato) {
isNumGruppiErrato = newIsNumGruppiErrato;
}
public boolean isNumGruppiErrato() {
return isNumGruppiErrato;
}
public void setIsQuantitaEnabled(boolean enabled) {
isQuantitaEnabled = enabled;
}
public boolean isQuantitaEnabled() {
return isQuantitaEnabled;
}
public Long incrementaProgressivo_beni() {
Long prog = progressivo_beni;
progressivo_beni = new Long(progressivo_beni.longValue() + 1);
return prog;
}
public String getLabelData_registrazione(){
return "Data Carico";
}
private final SimpleDetailCRUDController dettagliDocumento = new it.cnr.jada.util.action.SimpleDetailCRUDController("DettagliDocumento",Documento_generico_rigaBulk.class,"dettagliDocumentoColl",this){
public void validate(ActionContext context,OggettoBulk model) throws ValidationException {
validate_Dettagli_da_Documento(context,model);
}
};
public SimpleDetailCRUDController getDettagliDocumento() {
return dettagliDocumento;
}
private final SimpleDetailCRUDController righeInventarioDaDocumento = new SimpleDetailCRUDController("RigheInventarioDaDocumento",Buono_carico_scarico_dettBulk.class,null,dettagliDocumento){
public java.util.List getDetails() {
Buono_carico_scaricoBulk buono_cs = (Buono_carico_scaricoBulk)CRUDCaricoInventarioBP.this.getModel();
Documento_generico_rigaBulk riga_selezionata = (Documento_generico_rigaBulk)getParentModel();
return getRigheInventarioDaDocumentoDetails (buono_cs, riga_selezionata);
}
};
public java.util.List getRigheInventarioDaDocumentoDetails(
Buono_carico_scaricoBulk buonoCS,
Documento_generico_rigaBulk riga_selezionata) {
if (buonoCS != null && riga_selezionata != null){
BulkList list = (BulkList)buonoCS.getDettagliRigheDocHash().get(riga_selezionata);
return list;
}
else{
return null;
}
}
public SimpleDetailCRUDController getRigheInventarioDaDocumento() {
return righeInventarioDaDocumento;
}
/**
* Metodo richiamato dal SimpleDetailCRUDController dettagliFattura quando si passa
* da un dettaglio dell'inventario all'altro.
* Controlla, tra le altre cose, che la somma delle quantitÓ specificate per ogni
* singolo dettaglio di Inventario, sia uguale alla quantitÓ indicata per la riga
* di Fattura.
*
**/
private void validate_Dettagli_da_Documento(ActionContext context,OggettoBulk model) throws ValidationException {
java.math.BigDecimal totale = new java.math.BigDecimal(0);
Documento_generico_rigaBulk riga = (Documento_generico_rigaBulk)model;
Buono_carico_scaricoBulk buonoCS = (Buono_carico_scaricoBulk)getModel();
PrimaryKeyHashtable righeInventarioHash = (PrimaryKeyHashtable)buonoCS.getDettagliRigheDocHash();
if (righeInventarioHash != null){
BulkList dettagliInventario = (BulkList)righeInventarioHash.get(riga);
if (dettagliInventario.size()>0){
for (Iterator i = dettagliInventario.iterator(); i.hasNext();){
Buono_carico_scarico_dettBulk dettaglio = (Buono_carico_scarico_dettBulk)i.next();
if (dettaglio.getQuantita()!=null){
totale = totale.add(new BigDecimal(dettaglio.getQuantita().longValue()));
}
if (dettaglio.isAssociatoConAccessorioContestuale()){
BulkList newBeni_associati = new BulkList();
if ( dettaglio.getQuantita()!=null && dettaglio.getQuantita().compareTo(new Long("1"))!=0){
dettaglio.setQuantita(new Long("1"));
throw new ValidationException("Attenzione. La Quantità di questa riga deve essere 1, poichè alcuni beni sono suoi accessori");
}
PrimaryKeyHashtable accessori_contestuali = buonoCS.getAccessoriContestualiHash();
BulkList beni_associati = (BulkList)accessori_contestuali.get(dettaglio.getChiaveHash());
for (Iterator i_beni_associati = beni_associati.iterator(); i_beni_associati.hasNext();){
Buono_carico_scarico_dettBulk dettaglio_associato = (Buono_carico_scarico_dettBulk) i_beni_associati.next();
dettaglio_associato.getBene().getBene_principale().setDs_bene(dettaglio.getBene().getDs_bene());
newBeni_associati.add(dettaglio_associato);
}
accessori_contestuali.put(dettaglio.getChiaveHash(),newBeni_associati);
}
}
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy