Search in sources :

Example 1 with RapportoBulk

use of it.cnr.contab.anagraf00.core.bulk.RapportoBulk in project sigla-main by consiglionazionaledellericerche.

the class CompensoComponent method loadTipoTrattamento.

/**
 * Viene caricato da db il TIPO TRATTAMENTO valido in Data Registrazione
 * compenso
 */
private void loadTipoTrattamento(UserContext userContext, CompensoBulk compenso) throws ComponentException {
    try {
        Tipo_trattamentoHome trattHome = (Tipo_trattamentoHome) getHome(userContext, Tipo_trattamentoBulk.class);
        Filtro_trattamentoBulk filtro = new Filtro_trattamentoBulk();
        filtro.setCdTipoTrattamento(compenso.getCd_trattamento());
        filtro.setTipoAnagrafico(compenso.getTi_anagrafico());
        filtro.setDataValidita(compenso.getDt_registrazione());
        filtro.setFlSenzaCalcoli(compenso.getFl_senza_calcoli());
        filtro.setFlDefaultCongualio(new Boolean(compenso.isDaConguaglio()));
        filtro.setTiIstituzionaleCommerciale(compenso.getTi_istituz_commerc());
        filtro.setFlBonus(compenso.isDaBonus());
        filtro.setFlSplitPayment(compenso.getFl_split_payment());
        if (filtro.getCdTipoRapporto() != null && filtro.getCdTipoRapporto().equals("DIP")) {
            try {
                TerzoHome tHome = (TerzoHome) getHomeCache(userContext).getHome(TerzoBulk.class);
                TerzoBulk tKey = new TerzoBulk(compenso.getCd_terzo());
                TerzoBulk t = (TerzoBulk) tHome.findByPrimaryKey(tKey);
                RapportoHome rHome = (RapportoHome) getHomeCache(userContext).getHome(RapportoBulk.class);
                java.util.Collection collRapp = rHome.findByCdAnagCdTipoRapporto(t.getCd_anag(), filtro.getCdTipoRapporto());
                boolean exit = false;
                for (java.util.Iterator i = collRapp.iterator(); i.hasNext() && !exit; ) {
                    RapportoBulk r = (RapportoBulk) i.next();
                    exit = true;
                    if (r.getCd_ente_prev_sti() == null)
                        // throw new
                        // it.cnr.jada.comp.ApplicationException("Non è stato possibile recuperare l''Ente Previdenziale del dipendente selezionato.");
                        // non blocco perchè potrebbero esserci trattamenti
                        // che non prevedono contributi previdenziali
                        // quindi passo il codice fittizio 'XX'
                        filtro.setEntePrev("XX");
                    else
                        filtro.setEntePrev(r.getCd_ente_prev_sti());
                    if (r.getCd_rapp_impiego_sti() == null)
                        throw new it.cnr.jada.comp.ApplicationException("Per il dipendente in esame non è definito un Rapporto di Impiego!");
                    else {
                        Ass_rapp_impiegoHome assHome = (Ass_rapp_impiegoHome) getHome(userContext, Ass_rapp_impiegoBulk.class);
                        Ass_rapp_impiegoBulk assKey = new Ass_rapp_impiegoBulk(r.getCd_rapp_impiego_sti());
                        Ass_rapp_impiegoBulk ass = (Ass_rapp_impiegoBulk) assHome.findByPrimaryKey(assKey);
                        filtro.setTipoRappImpiego(ass.getTipo_rapp_impiego());
                    }
                }
            } catch (IntrospectionException e) {
                throw handleException(e);
            }
            // solo per il rapporto DIP aggiungo il filtro "Anno prec" a
            // seconda della data di inizio competenza
            GregorianCalendar data_da = (GregorianCalendar) GregorianCalendar.getInstance();
            data_da.setTime(compenso.getDt_da_competenza_coge());
            if (data_da.get(GregorianCalendar.YEAR) == (compenso.getEsercizio() - 1))
                filtro.setFlAnnoPrec(new Boolean(true));
            else
                filtro.setFlAnnoPrec(new Boolean(false));
        }
        if (compenso.getDt_da_competenza_coge() != null && compenso.getDt_a_competenza_coge() != null) {
            GregorianCalendar data_da = (GregorianCalendar) GregorianCalendar.getInstance();
            GregorianCalendar data_a = (GregorianCalendar) GregorianCalendar.getInstance();
            data_da.setTime(compenso.getDt_da_competenza_coge());
            data_a.setTime(compenso.getDt_a_competenza_coge());
            TerzoHome tHome = (TerzoHome) getHomeCache(userContext).getHome(TerzoBulk.class);
            TerzoBulk tKey = new TerzoBulk(compenso.getCd_terzo());
            TerzoBulk t = (TerzoBulk) tHome.findByPrimaryKey(tKey);
            AnagraficoHome aHome = (AnagraficoHome) getHomeCache(userContext).getHome(AnagraficoBulk.class);
            AnagraficoBulk aKey = new AnagraficoBulk(t.getCd_anag());
            AnagraficoBulk a = (AnagraficoBulk) aHome.findByPrimaryKey(aKey);
            if (data_da.get(GregorianCalendar.YEAR) == data_a.get(GregorianCalendar.YEAR)) {
                if (a.getFl_cervellone() && !(new Integer(data_da.get(GregorianCalendar.YEAR)).compareTo(a.getAnno_inizio_res_fis().intValue()) < 0) && !(new Integer(data_da.get(GregorianCalendar.YEAR)).compareTo(a.getAnno_fine_agevolazioni().intValue()) > 0)) {
                    filtro.setFlAgevolazioniCervelli(new Boolean(a.getFl_cervellone()));
                } else
                    filtro.setFlAgevolazioniCervelli(new Boolean(false));
            } else // cavallo
            if (compenso.getFl_compenso_conguaglio() && a.getFl_cervellone() && !(new Integer(data_da.get(GregorianCalendar.YEAR)).compareTo(a.getAnno_inizio_res_fis().intValue()) < 0) && !(new Integer(data_da.get(GregorianCalendar.YEAR)).compareTo(a.getAnno_fine_agevolazioni().intValue()) > 0)) {
                filtro.setFlAgevolazioniCervelli(new Boolean(a.getFl_cervellone()));
            } else
                filtro.setFlAgevolazioniCervelli(new Boolean(false));
        }
        if (filtro.getCdTipoRapporto() != null && getTipoRapportoProf(userContext).getCd_tipo_rapporto() != null && filtro.getCdTipoRapporto().equals(getTipoRapportoProf(userContext).getCd_tipo_rapporto())) {
            if (compenso.isGestione_doc_ele()) {
                if (!compenso.getFl_generata_fattura()) {
                    // se non ho scelto senza calcoli non devo vedere nulla
                    if (!compenso.getFl_senza_calcoli())
                        filtro.setTipoAnagrafico("X");
                }
            }
        }
        Tipo_trattamentoBulk tratt = trattHome.findTipoTrattamentoValido(filtro);
        compenso.setTipoTrattamento(tratt);
        if (isCompensoSoloInailEnte(tratt)) {
            if (compenso.isDaMinicarriera()) {
                throw new ApplicationException("Attenzione! Non è possibile utilizzare un trattamento di tipo 'Torno Subito con solo INAIL a carico ente' per una minicarriera");
            }
            compenso.setCompensoSoloInailEnte(true);
        }
    } catch (it.cnr.jada.persistency.PersistencyException ex) {
        throw handleException(ex);
    }
}
Also used : IntrospectionException(it.cnr.jada.persistency.IntrospectionException) TerzoHome(it.cnr.contab.anagraf00.core.bulk.TerzoHome) Tipo_trattamentoBulk(it.cnr.contab.compensi00.tabrif.bulk.Tipo_trattamentoBulk) TerzoBulk(it.cnr.contab.anagraf00.core.bulk.TerzoBulk) Ass_rapp_impiegoHome(it.cnr.contab.anagraf00.core.bulk.Ass_rapp_impiegoHome) Ass_rapp_impiegoBulk(it.cnr.contab.anagraf00.core.bulk.Ass_rapp_impiegoBulk) RapportoHome(it.cnr.contab.anagraf00.core.bulk.RapportoHome) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) Iterator(java.util.Iterator) Collection(java.util.Collection) AnagraficoBulk(it.cnr.contab.anagraf00.core.bulk.AnagraficoBulk) Filtro_trattamentoBulk(it.cnr.contab.compensi00.tabrif.bulk.Filtro_trattamentoBulk) RapportoBulk(it.cnr.contab.anagraf00.core.bulk.RapportoBulk) GregorianCalendar(java.util.GregorianCalendar) ApplicationException(it.cnr.jada.comp.ApplicationException) AnagraficoHome(it.cnr.contab.anagraf00.core.bulk.AnagraficoHome) Tipo_trattamentoHome(it.cnr.contab.compensi00.tabrif.bulk.Tipo_trattamentoHome)

Example 2 with RapportoBulk

use of it.cnr.contab.anagraf00.core.bulk.RapportoBulk in project sigla-main by consiglionazionaledellericerche.

the class CompensoComponent method findTipiTrattamento.

/**
 * Viene richiesta la lista dei Tipi di Trattamento legati al Tipo di
 * Rapporto selezionato
 *
 * Pre-post-conditions:
 *
 * Nome: Tipo di Rapporto NON selezionato Pre: Non è stato selezionato il
 * tipo di rapporto Post: Non vengono caricati i Tipi Trattamento
 *
 * Nome: Terzo selezionato Pre: E' stato selezionato un tipo di rapporto
 * valido per il compenso Post: Viene restituita la lista dei Tipi di
 * Trattamento legati al Tipo di rapporto selezionato
 *
 * @param userContext
 *            lo UserContext che ha generato la richiesta
 * @param compenso
 *            l'OggettoBulk da completare
 * @return La lista dei Tipi di Trattamento associati al Tipo Rapporto
 *         selezionato
 */
public java.util.Collection findTipiTrattamento(UserContext userContext, CompensoBulk compenso) throws ComponentException {
    try {
        if (compenso.getTipoRapporto() == null)
            return null;
        Tipo_trattamentoHome trattHome = (Tipo_trattamentoHome) getHome(userContext, Tipo_trattamentoBulk.class);
        Filtro_trattamentoBulk filtro = new Filtro_trattamentoBulk();
        filtro.setCdTipoRapporto(compenso.getCd_tipo_rapporto());
        filtro.setTipoAnagrafico(compenso.getTi_anagrafico());
        filtro.setDataValidita(compenso.getDt_registrazione());
        filtro.setFlSenzaCalcoli(compenso.getFl_senza_calcoli());
        filtro.setFlDefaultCongualio(new Boolean(compenso.isDaConguaglio()));
        filtro.setTiIstituzionaleCommerciale(compenso.getTi_istituz_commerc());
        filtro.setFlBonus(compenso.isDaBonus());
        filtro.setFlSplitPayment(compenso.getFl_split_payment());
        if (filtro.getCdTipoRapporto() != null && filtro.getCdTipoRapporto().equals("DIP")) {
            try {
                TerzoHome tHome = (TerzoHome) getHomeCache(userContext).getHome(TerzoBulk.class);
                TerzoBulk tKey = new TerzoBulk(compenso.getCd_terzo());
                TerzoBulk t = (TerzoBulk) tHome.findByPrimaryKey(tKey);
                RapportoHome rHome = (RapportoHome) getHomeCache(userContext).getHome(RapportoBulk.class);
                java.util.Collection collRapp = rHome.findByCdAnagCdTipoRapporto(t.getCd_anag(), filtro.getCdTipoRapporto());
                boolean exit = false;
                for (java.util.Iterator i = collRapp.iterator(); i.hasNext() && !exit; ) {
                    RapportoBulk r = (RapportoBulk) i.next();
                    exit = true;
                    if (r.getCd_ente_prev_sti() == null)
                        // throw new
                        // it.cnr.jada.comp.ApplicationException("Non è stato possibile recuperare l''Ente Previdenziale del dipendente selezionato.");
                        // non blocco perchè potrebbero esserci trattamenti
                        // che non prevedono contributi previdenziali
                        // quindi passo il codice fittizio 'XX'
                        filtro.setEntePrev("XX");
                    else
                        filtro.setEntePrev(r.getCd_ente_prev_sti());
                    if (r.getCd_rapp_impiego_sti() == null)
                        throw new it.cnr.jada.comp.ApplicationException("Per il dipendente in esame non è definito un Rapporto di Impiego!");
                    else {
                        Ass_rapp_impiegoHome assHome = (Ass_rapp_impiegoHome) getHome(userContext, Ass_rapp_impiegoBulk.class);
                        Ass_rapp_impiegoBulk assKey = new Ass_rapp_impiegoBulk(r.getCd_rapp_impiego_sti());
                        Ass_rapp_impiegoBulk ass = (Ass_rapp_impiegoBulk) assHome.findByPrimaryKey(assKey);
                        filtro.setTipoRappImpiego(ass.getTipo_rapp_impiego());
                    }
                }
            } catch (IntrospectionException e) {
                throw handleException(e);
            }
            // solo per il rapporto DIP aggiungo il filtro "Anno prec" a
            // seconda della data di inizio competenza
            GregorianCalendar data_da = (GregorianCalendar) GregorianCalendar.getInstance();
            data_da.setTime(compenso.getDt_da_competenza_coge());
            if (data_da.get(GregorianCalendar.YEAR) == (compenso.getEsercizio() - 1))
                filtro.setFlAnnoPrec(new Boolean(true));
            else
                filtro.setFlAnnoPrec(new Boolean(false));
        }
        if (compenso.getDt_da_competenza_coge() != null && compenso.getDt_a_competenza_coge() != null) {
            GregorianCalendar data_da = (GregorianCalendar) GregorianCalendar.getInstance();
            GregorianCalendar data_a = (GregorianCalendar) GregorianCalendar.getInstance();
            data_da.setTime(compenso.getDt_da_competenza_coge());
            data_a.setTime(compenso.getDt_a_competenza_coge());
            TerzoHome tHome = (TerzoHome) getHomeCache(userContext).getHome(TerzoBulk.class);
            TerzoBulk tKey = new TerzoBulk(compenso.getCd_terzo());
            TerzoBulk t = (TerzoBulk) tHome.findByPrimaryKey(tKey);
            AnagraficoHome aHome = (AnagraficoHome) getHomeCache(userContext).getHome(AnagraficoBulk.class);
            AnagraficoBulk aKey = new AnagraficoBulk(t.getCd_anag());
            AnagraficoBulk a = (AnagraficoBulk) aHome.findByPrimaryKey(aKey);
            if (a.getFl_cervellone() && (a.getAnno_inizio_res_fis() == null || a.getAnno_fine_agevolazioni() == null)) {
                throw new it.cnr.jada.comp.ApplicationException("Per la persona in esame è impostata l'agevolazione fiscale del rientro dei cervelli ma non è indicato l'anno inizio residenza fiscale o l'anno di fine delle agevolazioni.");
            }
            if (data_da.get(GregorianCalendar.YEAR) == data_a.get(GregorianCalendar.YEAR)) {
                if (a.getFl_cervellone() && !(new Integer(data_da.get(GregorianCalendar.YEAR)).compareTo(a.getAnno_inizio_res_fis().intValue()) < 0) && !(new Integer(data_da.get(GregorianCalendar.YEAR)).compareTo(a.getAnno_fine_agevolazioni().intValue()) > 0)) {
                    filtro.setFlAgevolazioniCervelli(new Boolean(a.getFl_cervellone()));
                } else
                    filtro.setFlAgevolazioniCervelli(new Boolean(false));
            } else // cavallo
            if (compenso.getFl_compenso_conguaglio() && a.getFl_cervellone() && !(new Integer(data_da.get(GregorianCalendar.YEAR)).compareTo(a.getAnno_inizio_res_fis().intValue()) < 0) && !(new Integer(data_da.get(GregorianCalendar.YEAR)).compareTo(a.getAnno_fine_agevolazioni().intValue()) > 0)) {
                filtro.setFlAgevolazioniCervelli(new Boolean(a.getFl_cervellone()));
            } else
                filtro.setFlAgevolazioniCervelli(new Boolean(false));
        }
        if (filtro.getCdTipoRapporto() != null && getTipoRapportoProf(userContext).getCd_tipo_rapporto() != null && filtro.getCdTipoRapporto().equals(getTipoRapportoProf(userContext).getCd_tipo_rapporto())) {
            if (compenso.isGestione_doc_ele()) {
                if (!compenso.getFl_generata_fattura()) {
                    // se non ho scelto senza calcoli non devo vedere nulla
                    if (!compenso.getFl_senza_calcoli())
                        filtro.setTipoAnagrafico("X");
                }
            }
        }
        return trattHome.findTipiTrattamento(filtro);
    } catch (it.cnr.jada.persistency.PersistencyException ex) {
        throw handleException(compenso, ex);
    }
}
Also used : IntrospectionException(it.cnr.jada.persistency.IntrospectionException) TerzoHome(it.cnr.contab.anagraf00.core.bulk.TerzoHome) Tipo_trattamentoBulk(it.cnr.contab.compensi00.tabrif.bulk.Tipo_trattamentoBulk) TerzoBulk(it.cnr.contab.anagraf00.core.bulk.TerzoBulk) Ass_rapp_impiegoHome(it.cnr.contab.anagraf00.core.bulk.Ass_rapp_impiegoHome) Ass_rapp_impiegoBulk(it.cnr.contab.anagraf00.core.bulk.Ass_rapp_impiegoBulk) RapportoHome(it.cnr.contab.anagraf00.core.bulk.RapportoHome) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) Iterator(java.util.Iterator) Collection(java.util.Collection) AnagraficoBulk(it.cnr.contab.anagraf00.core.bulk.AnagraficoBulk) Filtro_trattamentoBulk(it.cnr.contab.compensi00.tabrif.bulk.Filtro_trattamentoBulk) RapportoBulk(it.cnr.contab.anagraf00.core.bulk.RapportoBulk) GregorianCalendar(java.util.GregorianCalendar) ApplicationException(it.cnr.jada.comp.ApplicationException) AnagraficoHome(it.cnr.contab.anagraf00.core.bulk.AnagraficoHome) Tipo_trattamentoHome(it.cnr.contab.compensi00.tabrif.bulk.Tipo_trattamentoHome)

Example 3 with RapportoBulk

use of it.cnr.contab.anagraf00.core.bulk.RapportoBulk in project sigla-main by consiglionazionaledellericerche.

the class MissioneHome method archiviaStampa.

@SuppressWarnings("unchecked")
public void archiviaStampa(UserContext userContext, MissioneBulk missione) throws IntrospectionException, PersistencyException {
    Boolean isDipendente = Boolean.FALSE;
    Integer matricola = null;
    String stato_pagamento_fondo_eco = missione.getStato_pagamento_fondo_eco();
    Timestamp dt_pagamento_fondo_eco = missione.getDt_pagamento_fondo_eco();
    if (missione.getTi_provvisorio_definitivo().equalsIgnoreCase("D")) {
        Collection<RapportoBulk> rapporti = ((AnagraficoHome) getHomeCache().getHome(AnagraficoBulk.class)).findRapporti(missione.getTerzo().getAnagrafico());
        for (RapportoBulk rapporto : rapporti) {
            if (rapporto.getMatricola_dipendente() != null) {
                isDipendente = Boolean.TRUE;
                matricola = rapporto.getMatricola_dipendente();
                break;
            }
        }
    }
    if (missione.getFl_associato_compenso()) {
        stato_pagamento_fondo_eco = missione.getCompenso().getStato_pagamento_fondo_eco();
        dt_pagamento_fondo_eco = missione.getCompenso().getDt_pagamento_fondo_eco();
    }
    if (isDipendente && missione.getTipo_rapporto().isDipendente()) {
        if ((missione.getAnticipo() != null && missione.getAnticipo().getIm_anticipo().compareTo(missione.getIm_netto_pecepiente()) > 0) || (stato_pagamento_fondo_eco.equals(MissioneBulk.REGISTRATO_IN_FONDO_ECO) && dt_pagamento_fondo_eco != null)) {
            Print_spoolerBulk print = new Print_spoolerBulk();
            print.setPgStampa(UUID.randomUUID().getLeastSignificantBits());
            print.setFlEmail(false);
            print.setReport("/docamm/docamm/vpg_missione.jasper");
            print.setNomeFile("Missione n. " + missione.getPg_missione() + " della UO " + missione.getCd_unita_organizzativa() + " del " + new SimpleDateFormat("dd-MM-yyyy").format(missione.getDt_inizio_missione()) + ".pdf");
            print.setUtcr(userContext.getUser());
            print.addParam("aCd_cds", missione.getCd_cds(), String.class);
            print.addParam("aCd_uo", missione.getCd_unita_organizzativa(), String.class);
            print.addParam("aEs", missione.getEsercizio(), Integer.class);
            print.addParam("aPg_da", missione.getPg_missione(), Long.class);
            print.addParam("aPg_a", missione.getPg_missione(), Long.class);
            print.addParam("aCd_terzo", String.valueOf(missione.getCd_terzo()), String.class);
            try {
                missione.setUnitaOrganizzativa((Unita_organizzativaBulk) getHomeCache().getHome(Unita_organizzativaBulk.class).findByPrimaryKey(new Unita_organizzativaBulk(missione.getCd_unita_organizzativa())));
                String cmisPath;
                if (missione.getFl_associato_compenso())
                    cmisPath = SpringUtil.getBean(StorePath.class).getPathConcorrentiFormazioneReddito();
                else
                    cmisPath = SpringUtil.getBean(StorePath.class).getPathNonConcorrentiFormazioneReddito();
                LDAPService ldapService = SpringUtil.getBean("ldapService", LDAPService.class);
                String uid = ldapService.getLdapUserFromMatricola(userContext, matricola);
                Report report = SpringUtil.getBean("printService", PrintService.class).executeReport(userContext, print);
                SpringUtil.getBean("storeService", StoreService.class).storeSimpleDocument(missione, report.getInputStream(), report.getContentType(), report.getName(), cmisPath, StorageDriver.Permission.construct(uid, StorageDriver.ACLType.Consumer), StorageDriver.Permission.construct(SIGLAGroups.GROUP_EMPPAY_GROUP.name(), StorageDriver.ACLType.Coordinator));
            } catch (Exception e) {
                throw new PersistencyException(e);
            }
        }
    }
}
Also used : Unita_organizzativaBulk(it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk) Report(it.cnr.contab.reports.bulk.Report) AnagraficoBulk(it.cnr.contab.anagraf00.core.bulk.AnagraficoBulk) RapportoBulk(it.cnr.contab.anagraf00.core.bulk.RapportoBulk) StoreService(it.cnr.si.spring.storage.StoreService) Timestamp(java.sql.Timestamp) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) PersistencyException(it.cnr.jada.persistency.PersistencyException) StorePath(it.cnr.contab.spring.service.StorePath) LDAPService(it.cnr.contab.spring.service.LDAPService) PrintService(it.cnr.contab.reports.service.PrintService) Print_spoolerBulk(it.cnr.contab.reports.bulk.Print_spoolerBulk) AnagraficoHome(it.cnr.contab.anagraf00.core.bulk.AnagraficoHome) PersistencyException(it.cnr.jada.persistency.PersistencyException) SimpleDateFormat(java.text.SimpleDateFormat)

Example 4 with RapportoBulk

use of it.cnr.contab.anagraf00.core.bulk.RapportoBulk in project sigla-main by consiglionazionaledellericerche.

the class AnagraficoComponent method aggiornaDatiAce.

public void aggiornaDatiAce(UserContext userContext, AnagraficoBulk anagraficoBulk) throws ComponentException {
    if (!Optional.ofNullable(aceService).isPresent())
        return;
    logger.info(anagraficoBulk.getCd_anag().toString());
    anagraficoBulk = (AnagraficoBulk) inizializzaBulkPerModifica(userContext, anagraficoBulk);
    try {
        if (!anagraficoBulk.isDipendente() && !anagraficoBulk.getRapporti().isEmpty()) {
            Optional<String> personaId = Optional.empty();
            try {
                personaId = Optional.ofNullable(aceService.getPersonaId(anagraficoBulk.getCodice_fiscale()));
            } catch (FeignException _ex) {
            }
            List<RapportoBulk> rapportiValidi = new LinkedList<>();
            boolean isExDipendente = false;
            for (Object obj : anagraficoBulk.getRapporti()) {
                RapportoBulk rapportoBulk = (RapportoBulk) obj;
                Tipo_rapportoBulk tipo_rapportoBulk = (Tipo_rapportoBulk) getHome(userContext, Tipo_rapportoBulk.class).findByPrimaryKey(rapportoBulk.getTipo_rapporto());
                if (tipo_rapportoBulk.isDipendente()) {
                    isExDipendente = true;
                }
                if ((rapportoBulk.getDt_ini_validita().compareTo(getCurrentDate()) > 0 || rapportoBulk.getDt_fin_validita().compareTo(getCurrentDate()) > 0) && !tipo_rapportoBulk.isDipendente() && RapportoBulk.TIPOCONTRATTO_ACE.containsKey(tipo_rapportoBulk.getCd_tipo_rapporto())) {
                    rapportiValidi.add(rapportoBulk);
                }
            }
            if (!personaId.isPresent()) {
                for (RapportoBulk rapportoBulk : rapportiValidi) {
                    if (rapportoBulk.getCd_tipo_rapporto().equals(VIncarichiAssRicBorseStBulk.BORSA_DI_STUDIO) || rapportoBulk.getCd_tipo_rapporto().equals(VIncarichiAssRicBorseStBulk.ASSEGNI_DI_RICERCA)) {
                        logger.error("Invio Dati ACE: Codice fiscale {} non trovato. Per il codice fiscale: {} non è stata trovata la persona in ACE", anagraficoBulk.getCodice_fiscale(), anagraficoBulk.getCodice_fiscale());
                        break;
                    }
                }
            } else {
                PersonaWebDto personaWebDto = aceService.personaById(new Integer(personaId.get()));
                try {
                    Map<String, Object> params = new HashMap<>();
                    params.put("persona", personaId.get());
                    params.put("tipoAppartenenza", TipoAppartenenza.AFFERENZA_UO);
                    List<PersonaEntitaOrganizzativaWebDto> personeEO;
                    personeEO = aceService.personaEntitaOrganizzativaFind(params).stream().sorted(Comparator.comparing(PersonaEntitaOrganizzativaWebDto::getInizioValidita)).collect(Collectors.toList());
                    if (personeEO == null || personeEO.isEmpty()) {
                        params = new HashMap<>();
                        params.put("persona", personaId.get());
                        params.put("tipoAppartenenza", TipoAppartenenza.SEDE);
                        personeEO = aceService.personaEntitaOrganizzativaFind(params).stream().sorted(Comparator.comparing(PersonaEntitaOrganizzativaWebDto::getInizioValidita)).collect(Collectors.toList());
                    }
                    if (personeEO == null || personeEO.isEmpty()) {
                        String error = "Per la persona: " + personaId.get() + " Anagrafico: " + anagraficoBulk.getCd_anag() + " non è stata trovata l'appartenenza in ACE";
                        logger.error(error);
                    } else {
                        PersonaEntitaOrganizzativaWebDto personaEO = personeEO.stream().reduce((first, second) -> second).get();
                        if (rapportiValidi.size() > 0) {
                            List<RapportoBulk> rapportiOrdinati = (List<RapportoBulk>) rapportiValidi.stream().sorted(Comparator.comparing(RapportoBulk::getDt_ini_validita)).collect(Collectors.toList());
                            LocalDate dataFinePrecedente = null;
                            RapportoBulk rapportoPrec = null;
                            List<RapportoBulk> rapportiCongruenti = new LinkedList<>();
                            for (RapportoBulk rapportoBulk : rapportiOrdinati) {
                                if (rapportoPrec == null) {
                                    rapportoPrec = rapportoBulk;
                                    rapportiCongruenti.add(rapportoBulk);
                                } else {
                                    if (rapportoPrec.getDt_fin_validita().compareTo(rapportoBulk.getDt_ini_validita()) < 0) {
                                        rapportiCongruenti.add(rapportoBulk);
                                    } else {
                                        rapportiCongruenti = new LinkedList<>();
                                        rapportiCongruenti.add(rapportoBulk);
                                    }
                                    rapportoPrec = rapportoBulk;
                                }
                            }
                            if (rapportiCongruenti.size() > 0) {
                                RapportoBulk ultimoRapportoValido = rapportiCongruenti.stream().reduce((first, second) -> second).get();
                                TipoContratto tipoContratto = Optional.ofNullable(ultimoRapportoValido.getCd_tipo_rapporto()).filter(s -> RapportoBulk.TIPOCONTRATTO_ACE.containsKey(ultimoRapportoValido.getCd_tipo_rapporto())).map(s -> RapportoBulk.TIPOCONTRATTO_ACE.get(ultimoRapportoValido.getCd_tipo_rapporto())).orElse(null);
                                if (ultimoRapportoValido.getCd_tipo_rapporto().equals("ASS") && !isExDipendente) {
                                    tipoContratto = TipoContratto.ASSEGNISTA;
                                }
                                if (tipoContratto != null && (personaWebDto.getTipoContratto() == null || tipoContratto.compareTo(personaWebDto.getTipoContratto()) != 0)) {
                                    personaWebDto.setTipoContratto(tipoContratto);
                                    personaWebDto.setDataCessazione(null);
                                    personaWebDto.setDataPrevistaCessazione(null);
                                    personaWebDto.setLivello(null);
                                    personaWebDto.setProfilo(null);
                                    aceService.updatePersona(personaWebDto);
                                }
                                boolean primoGiro = true;
                                for (RapportoBulk rapportoBulk : rapportiCongruenti) {
                                    if (primoGiro) {
                                        LocalDate dataFineRapporto = rapportoBulk.getDt_fin_validita().toLocalDateTime().toLocalDate();
                                        // if (personaEO.getFineValidita() == null || !dataFineRapporto.isEqual(personaEO.getFineValidita())){
                                        aggiornaPersonaEO(userContext.getUser(), personaEO.getInizioValidita(), rapportoBulk.getDt_fin_validita().toLocalDateTime().toLocalDate(), personaEO);
                                        // }
                                        primoGiro = false;
                                    } else {
                                        PersonaEntitaOrganizzativaDto personaEntitaOrganizzativaDto = new PersonaEntitaOrganizzativaDto();
                                        personaEntitaOrganizzativaDto.setPersona(Integer.valueOf(personaId.get()));
                                        personaEntitaOrganizzativaDto.setTipoAppartenenza(TipoAppartenenza.AFFERENZA_UO);
                                        personaEntitaOrganizzativaDto.setEntitaOrganizzativa(personaEO.getEntitaOrganizzativa().getId());
                                        personaEntitaOrganizzativaDto.setInizioValidita(rapportoBulk.getDt_ini_validita().toLocalDateTime().toLocalDate());
                                        personaEntitaOrganizzativaDto.setFineValidita(rapportoBulk.getDt_fin_validita().toLocalDateTime().toLocalDate());
                                        logger.info(personaEntitaOrganizzativaDto.toString());
                                        final PersonaEntitaOrganizzativaWebDto personaEntitaOrganizzativaWebDto = aceService.savePersonaEntitaOrganizzativa(personaEntitaOrganizzativaDto);
                                    }
                                }
                            }
                        }
                    }
                } catch (FeignException _ex) {
                    String error = "Per la persona con id: " + personaId.get() + " è stato riscontrato un errore durante l'aggiornamento dell'appartenenza in ACE: " + _ex.getMessage();
                    logger.error(error);
                    SendMail.sendErrorMail("Invio Dati ACE: Eccezione durante l'aggiornamento delle appartenenze per la persona con ID " + personaId.get(), error);
                }
            }
        }
    } catch (Throwable e) {
        throw handleException(e);
    }
}
Also used : PersonaEntitaOrganizzativaDto(it.cnr.si.service.dto.anagrafica.scritture.PersonaEntitaOrganizzativaDto) it.cnr.contab.anagraf00.core.bulk(it.cnr.contab.anagraf00.core.bulk) LoggerFactory(org.slf4j.LoggerFactory) SendMail(it.cnr.jada.util.SendMail) BigDecimal(java.math.BigDecimal) MissioneHome(it.cnr.contab.missioni00.docs.bulk.MissioneHome) FeignException(feign.FeignException) MissioneBulk(it.cnr.contab.missioni00.docs.bulk.MissioneBulk) TipoContratto(it.cnr.si.service.dto.anagrafica.enums.TipoContratto) UtenteBulk(it.cnr.contab.utenze00.bulk.UtenteBulk) TipoAppartenenza(it.cnr.si.service.dto.anagrafica.enums.TipoAppartenenza) AddressException(javax.mail.internet.AddressException) Timestamp(java.sql.Timestamp) it.cnr.contab.anagraf00.util(it.cnr.contab.anagraf00.util) Reader(java.io.Reader) ComuneBulk(it.cnr.contab.anagraf00.tabter.bulk.ComuneBulk) Parametri_cnrBulk(it.cnr.contab.config00.bulk.Parametri_cnrBulk) VIncarichiAssRicBorseStBulk(it.cnr.contab.incarichi00.bulk.VIncarichiAssRicBorseStBulk) Collectors(java.util.stream.Collectors) RemoteException(java.rmi.RemoteException) IPrintMgr(it.cnr.jada.comp.IPrintMgr) EJBException(javax.ejb.EJBException) Parametri_cnrComponentSession(it.cnr.contab.config00.ejb.Parametri_cnrComponentSession) LocalDate(java.time.LocalDate) NazioneBulk(it.cnr.contab.anagraf00.tabter.bulk.NazioneBulk) Fattura_passivaBulk(it.cnr.contab.docamm00.docs.bulk.Fattura_passivaBulk) GestioneLoginComponentSession(it.cnr.contab.utente00.nav.ejb.GestioneLoginComponentSession) CompensoBulk(it.cnr.contab.compensi00.docs.bulk.CompensoBulk) ContoBulk(it.cnr.contab.config00.pdcep.bulk.ContoBulk) SpringUtil(it.cnr.contab.service.SpringUtil) UserContext(it.cnr.jada.UserContext) it.cnr.jada.persistency.sql(it.cnr.jada.persistency.sql) java.util(java.util) Unita_organizzativaBulk(it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk) Utility(it.cnr.contab.util.Utility) SimpleDateFormat(java.text.SimpleDateFormat) CRUDIncarichiProceduraBP(it.cnr.contab.incarichi00.bp.CRUDIncarichiProceduraBP) Utente_indirizzi_mailBulk(it.cnr.contab.utenze00.bulk.Utente_indirizzi_mailBulk) CompensoHome(it.cnr.contab.compensi00.docs.bulk.CompensoHome) IntrospectionException(it.cnr.jada.persistency.IntrospectionException) EcfHome(it.cnr.contab.anagraf00.tabrif.bulk.EcfHome) InternetAddress(javax.mail.internet.InternetAddress) Broker(it.cnr.jada.persistency.Broker) PersonaEntitaOrganizzativaWebDto(it.cnr.si.service.dto.anagrafica.letture.PersonaEntitaOrganizzativaWebDto) CRUDComponentSession(it.cnr.jada.ejb.CRUDComponentSession) DocumentiContabiliService(it.cnr.contab.doccont00.service.DocumentiContabiliService) ICRUDMgr(it.cnr.jada.comp.ICRUDMgr) CNRUserContext(it.cnr.contab.utenze00.bp.CNRUserContext) ApplicationException(it.cnr.jada.comp.ApplicationException) PersistencyException(it.cnr.jada.persistency.PersistencyException) Logger(org.slf4j.Logger) Incarichi_repertorioBulk(it.cnr.contab.incarichi00.bulk.Incarichi_repertorioBulk) PersonaWebDto(it.cnr.si.service.dto.anagrafica.letture.PersonaWebDto) Rif_inquadramentoBulk(it.cnr.contab.anagraf00.tabrif.bulk.Rif_inquadramentoBulk) AceService(it.cnr.si.service.AceService) Unita_organizzativa_enteBulk(it.cnr.contab.config00.sto.bulk.Unita_organizzativa_enteBulk) Fattura_passivaHome(it.cnr.contab.docamm00.docs.bulk.Fattura_passivaHome) NoSuchBeanDefinitionException(org.springframework.beans.factory.NoSuchBeanDefinitionException) DateTimeFormatter(java.time.format.DateTimeFormatter) ApplicationMessageFormatException(it.cnr.contab.util.ApplicationMessageFormatException) it.cnr.jada.bulk(it.cnr.jada.bulk) Unita_organizzativaHome(it.cnr.contab.config00.sto.bulk.Unita_organizzativaHome) Tipo_rapportoBulk(it.cnr.contab.anagraf00.tabrif.bulk.Tipo_rapportoBulk) Parametri_cnrHome(it.cnr.contab.config00.bulk.Parametri_cnrHome) ComponentException(it.cnr.jada.comp.ComponentException) EcfBulk(it.cnr.contab.anagraf00.tabrif.bulk.EcfBulk) PersonaWebDto(it.cnr.si.service.dto.anagrafica.letture.PersonaWebDto) LocalDate(java.time.LocalDate) Tipo_rapportoBulk(it.cnr.contab.anagraf00.tabrif.bulk.Tipo_rapportoBulk) PersonaEntitaOrganizzativaDto(it.cnr.si.service.dto.anagrafica.scritture.PersonaEntitaOrganizzativaDto) FeignException(feign.FeignException) TipoContratto(it.cnr.si.service.dto.anagrafica.enums.TipoContratto) PersonaEntitaOrganizzativaWebDto(it.cnr.si.service.dto.anagrafica.letture.PersonaEntitaOrganizzativaWebDto)

Example 5 with RapportoBulk

use of it.cnr.contab.anagraf00.core.bulk.RapportoBulk in project sigla-main by consiglionazionaledellericerche.

the class AnagraficoComponent method verificaNuovoRapporto.

/**
 * Controlla i periodi di validità dei rapporti di tipo NON DIPENDENTE.
 * Per ogni Rapporto di tipo NON DIPENDENTE, si controlla che la Data di Inizio Validità
 * e quella di Fine Validità non siano all'interno di un periodo di validità di un Rapporto DIPENDENTE.
 * In tal caso viene lanciato un messaggio all'utente.
 */
private void verificaNuovoRapporto(AnagraficoBulk anagrafico) throws it.cnr.jada.comp.ComponentException {
    boolean wasDipendente = false;
    BulkList rapporti_dip = new BulkList();
    // Cerca tutti i rapporti di tipo DIPENDENTE
    for (Iterator di = anagrafico.getRapporti().iterator(); di.hasNext(); ) {
        RapportoBulk rap_dip = (RapportoBulk) di.next();
        if (rap_dip.getTipo_rapporto().isDipendente()) {
            wasDipendente = true;
            rapporti_dip.add(rap_dip);
        }
    }
    // Se esiste almeno un rapporto di tipo DIPENDENTE, controlla tutti gli altri rapporti
    if (wasDipendente) {
        try {
            for (java.util.Iterator i = anagrafico.getRapporti().iterator(); i.hasNext(); ) {
                RapportoBulk rapporto = (RapportoBulk) i.next();
                if (!rapporto.getTipo_rapporto().isDipendente()) {
                    // delle incongruenze nelle date di Inizio/FIne periodo.
                    for (Iterator i_dip = rapporti_dip.iterator(); i_dip.hasNext(); ) {
                        RapportoBulk rapporto_dip = (RapportoBulk) i_dip.next();
                        // Aggiunta la condizione se non è dipendente perchè ci sono casi in cui è necessario creare un rapporto ASS su un dipendente attivo. Questa possibilità è data solo agli utenti con privilegio ALLTRA.
                        if (!anagrafico.isDipendente() && rapporto.getDt_ini_validita().after(rapporto_dip.getDt_ini_validita()) && rapporto.getDt_ini_validita().before(rapporto_dip.getDt_fin_validita())) {
                            throw new ApplicationException("Attenzione: la data di INIZIO validità del rapporto " + rapporto.getTipo_rapporto().getDs_tipo_rapporto() + " è incompatibile col periodo di validità del rapporto " + rapporto_dip.getTipo_rapporto().getDs_tipo_rapporto());
                        } else // Aggiunta la condizione se non è dipendente perchè ci sono casi in cui è necessario creare un rapporto ASS su un dipendente attivo. Questa possibilità è data solo agli utenti con privilegio ALLTRA.
                        if (!anagrafico.isDipendente() && rapporto.getDt_fin_validita().after(rapporto_dip.getDt_ini_validita()) && rapporto.getDt_fin_validita().before(rapporto_dip.getDt_fin_validita())) {
                            throw new ApplicationException("Attenzione: la data di FINE validità del rapporto " + rapporto.getTipo_rapporto().getDs_tipo_rapporto() + " è incompatibile col periodo di validità del rapporto " + rapporto_dip.getTipo_rapporto().getDs_tipo_rapporto());
                        }
                    }
                // Fine ciclo sui Rapporti di tipo DIPENDENTE
                }
            // end if
            }
        // Fine ciclo sui Rapporti NON DIPENDENTI
        } catch (Throwable t) {
            throw new ComponentException(t);
        }
    }
// end if
}
Also used : ApplicationException(it.cnr.jada.comp.ApplicationException) it.cnr.contab.anagraf00.util(it.cnr.contab.anagraf00.util) java.util(java.util) ComponentException(it.cnr.jada.comp.ComponentException)

Aggregations

IntrospectionException (it.cnr.jada.persistency.IntrospectionException)6 PersistencyException (it.cnr.jada.persistency.PersistencyException)6 AnagraficoBulk (it.cnr.contab.anagraf00.core.bulk.AnagraficoBulk)5 AnagraficoHome (it.cnr.contab.anagraf00.core.bulk.AnagraficoHome)5 RapportoBulk (it.cnr.contab.anagraf00.core.bulk.RapportoBulk)5 ApplicationException (it.cnr.jada.comp.ApplicationException)5 Iterator (java.util.Iterator)4 Ass_rapp_impiegoBulk (it.cnr.contab.anagraf00.core.bulk.Ass_rapp_impiegoBulk)3 Ass_rapp_impiegoHome (it.cnr.contab.anagraf00.core.bulk.Ass_rapp_impiegoHome)3 RapportoHome (it.cnr.contab.anagraf00.core.bulk.RapportoHome)3 TerzoBulk (it.cnr.contab.anagraf00.core.bulk.TerzoBulk)3 TerzoHome (it.cnr.contab.anagraf00.core.bulk.TerzoHome)3 Filtro_trattamentoBulk (it.cnr.contab.compensi00.tabrif.bulk.Filtro_trattamentoBulk)3 Tipo_trattamentoBulk (it.cnr.contab.compensi00.tabrif.bulk.Tipo_trattamentoBulk)3 Tipo_trattamentoHome (it.cnr.contab.compensi00.tabrif.bulk.Tipo_trattamentoHome)3 Unita_organizzativaBulk (it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk)3 Timestamp (java.sql.Timestamp)3 SimpleDateFormat (java.text.SimpleDateFormat)3 it.cnr.contab.anagraf00.util (it.cnr.contab.anagraf00.util)2 Print_spoolerBulk (it.cnr.contab.reports.bulk.Print_spoolerBulk)2