use of it.cnr.contab.missioni00.docs.bulk.MissioneBulk in project sigla-main by consiglionazionaledellericerche.
the class CRUDMissioneBP method confermaSpesa.
/**
* Il metodo verifica che la spesa che si sta inserendo sia corretta.
* <p>
* Se l'utente ha selezionato piu' giorni faccio i controlli, le conversioni
* delle valute, i calcoli degli importi (trasporto, rimborso km) ....
* sulla spesa del primo giorno selezionato e con importo pari all'importo
* inserito dall'utente e diviso per il numero di giorni selezionati.
* Al termine creo n-1 istanze di spesa uguali a quella processata (del primo giorno)
* e le aggiungo alla collection dei dettagli assegnando ogni volta un giorno diverso
* e un progressivo diverso
*/
public void confermaSpesa(ActionContext context) throws BusinessProcessException {
MissioneBulk missione = (MissioneBulk) getModel();
Missione_dettaglioBulk spesa = (Missione_dettaglioBulk) getSpesaController().getModel();
// Salvo i totali in modo tal che in caso di errore posso
// ripristinarli
java.math.BigDecimal kmTot = spesa.getChilometri();
java.math.BigDecimal importoSpesaTot = spesa.getIm_spesa_divisa();
java.math.BigDecimal baseMaggTot = spesa.getIm_base_maggiorazione();
try {
// Assegno alla spesa i primo giorno tra quelli selezionati.
// I controlli e le ricerche dei cambi verrano fatte in base a questa data
spesa.setDt_inizio_tappa(missione.getPrimoGiornoSpesaSelezionato());
if (spesa.getDt_inizio_tappa() == null)
throw new it.cnr.jada.comp.ApplicationException("Selezionare almeno un giorno!");
completaSearchToolSpesa(context, missione, spesa);
spesa.validaSpesa();
// - se la spesa e' un rimborso km, assegno alla spesa il numero di km giornalieri
if (missione.isSelezioneGiorniSpesaMultipla()) {
int nGiorni = missione.getCollectionGiorniSpeseSelezionati().size();
if (!spesa.isRimborsoKm()) {
java.math.BigDecimal importoGiornaliero = spesa.getIm_spesa_divisa().divide(new java.math.BigDecimal(nGiorni), java.math.BigDecimal.ROUND_HALF_UP);
if (importoGiornaliero.compareTo(new java.math.BigDecimal(0)) < 1)
throw new it.cnr.jada.comp.ApplicationException("L'importo giornaliero della spesa e' nullo!");
spesa.setIm_spesa_divisa(importoGiornaliero);
if (spesa.isTrasporto())
spesa.setIm_base_maggiorazione(spesa.getIm_spesa_divisa());
} else {
java.math.BigDecimal kmGiornalieri = spesa.getChilometri().divide(new java.math.BigDecimal(nGiorni), java.math.BigDecimal.ROUND_HALF_UP);
if (kmGiornalieri.compareTo(new java.math.BigDecimal(0)) < 1)
throw new it.cnr.jada.comp.ApplicationException("Il numero giornaliero dei chilometri e' nullo!");
spesa.setChilometri(kmGiornalieri);
}
}
// Calcolo gli importi della spesa (importi auto, trasporto...)
// Se necessario converto tali importi
// Verifico che gli importi rispettino i massimali (spesa, pasto..)
MissioneComponentSession component = (MissioneComponentSession) createComponentSession("CNRMISSIONI00_EJB_MissioneComponentSession", MissioneComponentSession.class);
missione = component.validaMassimaliSpesa(context.getUserContext(), missione, spesa);
/**
*** ripristino la spesa essendo stata modificata dalla comonent **
*/
setModel(context, missione);
spesa = (Missione_dettaglioBulk) getSpesaController().getModel();
/**
******************************************************************
*/
spesa.setSpesaIniziale(null);
spesa.setStatus(Missione_dettaglioBulk.STATUS_CONFIRMED);
if (spesa.getCrudStatus() == it.cnr.jada.bulk.OggettoBulk.NORMAL)
spesa.setToBeUpdated();
// inserita del primo giorno anche agli altri giorni selezionati
if (missione.isSelezioneGiorniSpesaMultipla())
missione.imputaSpesaSuPiuGiorni(spesa);
// Fine modalita' modifica/inserimento dettaglio spesa
getSpesaController().setEditingSpesa(false);
missione.setSpeseInserite(false);
// Ripulisco la selezione dei giorni
missione.setCollectionGiorniSpeseSelezionati(null);
} catch (Throwable e) {
spesa.setChilometri(kmTot);
spesa.setIm_spesa_divisa(importoSpesaTot);
spesa.setIm_base_maggiorazione(baseMaggTot);
setModel(context, missione);
throw handleException(e);
}
}
use of it.cnr.contab.missioni00.docs.bulk.MissioneBulk in project sigla-main by consiglionazionaledellericerche.
the class CRUDMissioneBP method cancellaTappePhisically.
/**
* Il metodo cancella fisicamente le tappe inserite in tabella altrimenti,
* essendo dt_inizio_tappa parte della chiave, non sarebbe possibile :
* - modificare dt_inizio_tappa (ora) di una tappa gia' salvata
* - cancellare una tappa gia' presente in tabella la cui data di inizio
* e' cambiata o e' stata resettata
* Predispongo le tappe all'inserimento e inizializzo le liste dei dettagli di
* spesa/diaria perche' essi sono stati cancellati automaticamente dalla cancellazione
* delle tappe (Constraint).
*/
public void cancellaTappePhisically(ActionContext context) throws BusinessProcessException {
try {
MissioneBulk missione = (MissioneBulk) getModel();
MissioneComponentSession component = (MissioneComponentSession) createComponentSession("CNRMISSIONI00_EJB_MissioneComponentSession", MissioneComponentSession.class);
missione = component.cancellaTappePhisically(context.getUserContext(), missione);
setModel(context, missione);
missione.ripristinaCrudStatusFigli();
} catch (Throwable e) {
throw handleException(e);
}
}
use of it.cnr.contab.missioni00.docs.bulk.MissioneBulk in project sigla-main by consiglionazionaledellericerche.
the class CRUDMissioneBP method findTipiRapporto.
/**
* Tale metodo gestisce la ricerca degi Tipi Rapporto
*/
public void findTipiRapporto(ActionContext context) throws BusinessProcessException {
try {
MissioneBulk missione = (MissioneBulk) getModel();
missione.setTipi_rapporto(null);
missione.setTipo_rapporto(null);
MissioneComponentSession component = (MissioneComponentSession) createComponentSession();
java.util.Collection coll = component.findTipi_rapporto(context.getUserContext(), missione);
if (coll == null || coll.isEmpty())
setMessage("Tipi Rapporto non disponibili !");
else
missione.setTipi_rapporto(coll);
} catch (it.cnr.jada.comp.ComponentException ex) {
throw handleException(ex);
} catch (java.rmi.RemoteException ex) {
throw handleException(ex);
}
}
use of it.cnr.contab.missioni00.docs.bulk.MissioneBulk in project sigla-main by consiglionazionaledellericerche.
the class CRUDMissioneBP method setNazioneDivisaCambioItalia.
/**
* Il metodo gestisce la selezione della nazione, divisa e cambio di default
* (Italia, Euro) nel caso l'utente abbia selezionato comune proprio o altro.
* (Tali valori non sono modificabili)
*/
public void setNazioneDivisaCambioItalia(ActionContext context) throws BusinessProcessException {
Missione_tappaBulk tappa = (Missione_tappaBulk) getTappaController().getModel();
/**
*********** selezionato comune estero ******************
*/
if ((tappa.getFl_comune_estero() != null) && (tappa.getFl_comune_estero().booleanValue())) {
tappa.setNazione(new NazioneBulk());
tappa.setDivisa_tappa(new DivisaBulk());
tappa.setCambio_tappa(null);
return;
}
if ((tappa.getNazione() != null) && (tappa.getNazione().getTi_nazione() != null) && (tappa.getNazione().getTi_nazione().equals(NazioneBulk.ITALIA)))
// ITALIA e' gia' stata selezionata
return;
try {
// inizializzo nazione ITALIA
MissioneComponentSession component = (MissioneComponentSession) createComponentSession("CNRMISSIONI00_EJB_MissioneComponentSession", MissioneComponentSession.class);
MissioneBulk missione = (MissioneBulk) getModel();
missione = component.setNazioneDivisaCambioItalia(context.getUserContext(), missione, tappa);
setModel(context, missione);
} catch (Throwable e) {
throw handleException(e);
}
}
use of it.cnr.contab.missioni00.docs.bulk.MissioneBulk in project sigla-main by consiglionazionaledellericerche.
the class CRUDMissioneBP method isRimborsoValidoPerDurataTappeEstere.
public boolean isRimborsoValidoPerDurataTappeEstere(ActionContext context) throws BusinessProcessException {
try {
MissioneBulk missione = (MissioneBulk) getModel();
BigDecimal numeroMinuti = new BigDecimal("0");
BigDecimal numeroMinutiLimite = new BigDecimal("1440");
if ((missione.getTappeMissioneColl() == null) || (missione.getTappeMissioneColl().size() == 0)) {
return true;
}
for (java.util.Iterator i = missione.getTappeMissioneColl().iterator(); i.hasNext(); ) {
Missione_tappaBulk tappa = (Missione_tappaBulk) i.next();
if (tappa.isEstera() && tappa.getFl_rimborso()) {
MissioneComponentSession component = (MissioneComponentSession) createComponentSession("CNRMISSIONI00_EJB_MissioneComponentSession", MissioneComponentSession.class);
numeroMinuti = numeroMinuti.add(component.calcolaMinutiTappa(context.getUserContext(), tappa));
}
}
if (numeroMinuti.compareTo(numeroMinutiLimite) < 0)
return false;
else
return true;
} catch (Throwable e) {
throw handleException(e);
}
}
Aggregations