Search in sources :

Example 1 with MissioneBulk

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);
    }
}
Also used : BigDecimal(java.math.BigDecimal) ApplicationException(it.cnr.jada.comp.ApplicationException) MissioneComponentSession(it.cnr.contab.missioni00.ejb.MissioneComponentSession) BigDecimal(java.math.BigDecimal)

Example 2 with MissioneBulk

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);
    }
}
Also used : MissioneComponentSession(it.cnr.contab.missioni00.ejb.MissioneComponentSession)

Example 3 with MissioneBulk

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);
    }
}
Also used : java.util(java.util) MissioneComponentSession(it.cnr.contab.missioni00.ejb.MissioneComponentSession) ComponentException(it.cnr.jada.comp.ComponentException) RemoteException(java.rmi.RemoteException)

Example 4 with MissioneBulk

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);
    }
}
Also used : NazioneBulk(it.cnr.contab.anagraf00.tabter.bulk.NazioneBulk) DivisaBulk(it.cnr.contab.docamm00.tabrif.bulk.DivisaBulk) MissioneComponentSession(it.cnr.contab.missioni00.ejb.MissioneComponentSession)

Example 5 with MissioneBulk

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);
    }
}
Also used : java.util(java.util) MissioneComponentSession(it.cnr.contab.missioni00.ejb.MissioneComponentSession) BigDecimal(java.math.BigDecimal)

Aggregations

CRUDMissioneBP (it.cnr.contab.missioni00.bp.CRUDMissioneBP)64 MissioneBulk (it.cnr.contab.missioni00.docs.bulk.MissioneBulk)63 ComponentException (it.cnr.jada.comp.ComponentException)24 MissioneComponentSession (it.cnr.contab.missioni00.ejb.MissioneComponentSession)22 ValidationException (it.cnr.jada.bulk.ValidationException)15 it.cnr.contab.missioni00.docs.bulk (it.cnr.contab.missioni00.docs.bulk)12 java.util (java.util)11 RemoteException (java.rmi.RemoteException)10 it.cnr.contab.anagraf00.core.bulk (it.cnr.contab.anagraf00.core.bulk)9 it.cnr.contab.doccont00.core.bulk (it.cnr.contab.doccont00.core.bulk)9 it.cnr.contab.missioni00.tabrif.bulk (it.cnr.contab.missioni00.tabrif.bulk)9 it.cnr.jada.bulk (it.cnr.jada.bulk)9 ApplicationException (it.cnr.jada.comp.ApplicationException)8 CompensoBulk (it.cnr.contab.compensi00.docs.bulk.CompensoBulk)7 Obbligazione_scadenzarioBulk (it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk)7 UserContext (it.cnr.jada.UserContext)7 OptionBP (it.cnr.jada.util.action.OptionBP)7 BigDecimal (java.math.BigDecimal)7 Rif_inquadramentoBulk (it.cnr.contab.anagraf00.tabrif.bulk.Rif_inquadramentoBulk)6 NazioneBulk (it.cnr.contab.anagraf00.tabter.bulk.NazioneBulk)6